2011年10月2日日曜日

ssFlickerのバージョンアップが続いたけど

8月下旬にssFlickerの初バージョンアップをした後、9月下旬から立て続けに4回のバージョンアップを実施。初版からこれまで合計5回のバージョンアップを行った。
で、これまでのバージョンアップ内容を一度纏めておく。
開発者目線のイイワケ満載な内容であり、正直ユーザがこれを読んでも「何言ってんだ」という点も多いと思うけど、どちらかと言えば自分への備忘録。


■v0.1.0
□日本語対応
文字通りの日本語対応。

□各種設定の追加(アナザーホーム、背景、文字色、ステータスバー起動、タップ時のバイブ)
これもほぼ文字通り。
ssFlickerの起動方法としては初版から「ホームキーからの起動=デフォルトホーム」に設定する事ができた。
ただ、ssFlickerはあくまでランチャーアプリであり、本格的なホームアプリではない。ssFlickerをデフォルトホームに設定しても、他のホームアプリと併用する事が前提となっている。そこで追加したのがアナザーホームという機能。(ネーミングはイマイチ気に入っていない)
アナザーホームとはその名前の通り、ssFlickerと併用するホームアプリのこと。ssFlickerをデフォルトホームに設定している時のみ設定可能で、動作する場面は2パターン。
1つ目は端末リブート後。ssFlickerが端末の起動を検知して、アナザーホームを呼ぶようになっている。
2つ目はssFlicker起動中にホームキーを押した場合にアナザーホームを呼ぶようになっている。
本当はこれと合わせてホームキーのダブルクリック起動も実装したかったのだけど、実装しきれずに一旦諦めた。

□ポインタタイプの追加(ポインタ、ホームポインタ、履歴ポインタ、タスクポインタ)
初版では「ポインタ」のみだったものに、他の3つのポインタタイプを追加した。
「ポインタ」とはフォルダと同意。その中にアプリを設置する事ができる。
一方新しく追加した3種類のポインタは動的ポインタ、ライブポインタ、ダイナミックポインタとでも呼ぶべきものになっており、ポインタをタップするとその時の端末の状態によって表示されるアプリが異なる。
正直、これはssFlickerのコンセプトと異なっている。どのポインタのどこに何のアプリを登録しているかを覚えていれば、ssFlickerからスピーディにアプリを起動できる。ところが、これら新しい3種類のポインタは、タップした後にどのアプリがどこに表示されるか確認する必要が出てきてしまう。
だけど、あって損することはないと思い、実装してみた。
ランチャーアプリとしては必須機能だし。

□ファンクションに画面回転の追加
初版で実装を忘れていたので追加。

□ウィジェットの追加(ssFlickerを起動するウィジェット)
ssFlickerを使いこなせば、ホーム画面上にはウィジェットとssFlickerのみ配置すれば済むようになる。
だけど、ホームにはウィジェット以外の何も置きたくないという人がいるだろうと思い、そういう人向けの機能。なので、デフォルトの背景は透明。
後になってどこに配置したか分からなくなってしまうことのないように、背景の変更機能も実装。

■v0.2.0
□編集モード画面の操作性の変更(フリック操作ベースに変更)
それまで編集モードの操作はクリックベースとなっており、クリックの都度、選択ダイアログが表示されていた。
今後編集機能を追加していく中、ダイアログばかりが表示されるのは操作感が悪い。何の設定をしているのか途中で分からなくなってしまうかも知れない。
また、今後のバージョンアップでポインタ情報がリセットされ、再設定が必要になることもあると思う。
という訳でフリックベースの操作性に変更した。初めは慣れが必要かも知れないけど、慣れればこっちの方が操作感が良いと思う。
個人的にはなかなか満足の出来。

□ポインタ、アプリの編集機能(アイコン、名前の変更機能)の追加
それまでポインタの画像は青丸のみで変更不可だった。
アイコンを作るのはなかなか大変だし、いくら作ったところで気に入らない人もいるだろう。
という訳でユーザが好きな画像に変更できるように実装した。
ついでにアプリアイコンも変更可能に。
さらにオリジナルアイコンをいくつも作成。大変だった…。
ホームアプリのアイコン(□)は暫定。一番最後に作ったのだけど、アイコン作成に疲れてしまったので…。おいおいもっとホームっぽいアイコンに作り直したい。

□履歴ポインタ、タスクポインタの処理ロジックの変更
履歴ポインタでは、RecentTaskInfoから起動履歴を取得し、そこからIntentを取得、IntentからUriを取得し、最終的には再びIntentに戻してアプリを起動していた。
が、この方法だと起動できないアプリがあった。具体的にはTwitter公式アプリで返信があった場合にステータスバーから起動した場合。
という訳で、履歴やタスクではRecentTaskInfoから取得したIntentを利用してそのまま起動するように変更した。
また、タスクポインタではRunningTaskInfoからタスクを取得していた(少し記憶が曖昧)。
しかし、RunningTaskInfoからはその時起動しているActivity(画面)しか取得できず、最初に起動すべきActivityが取得できなかった。(これは頑張れば解決可能だと思う)
なので、履歴と同様にRecentTaskInfoを取得し、ここからid != -1(起動していないアプリはid=-1になるみたい)のみ取得するようにした。
結果、履歴とほぼ同じソースが使えたので容量の削減にも繋がった。

■v0.3.0
□ポインタの最大数を9個から16個に増加
どこかで要望を受けていたと思う。(記憶曖昧)
いつか要望があるだろうな〜と思っていたんだけど。
確かにダイナミックポインタ全てを使うとそれだけで3つ、ファンクションで1つ、今後ファンクションが増えればさらにもう1つポインタを消費する事になる。
ポインタ最大数が9個のままだと、残り4つのポインタでやり繰りすることになってちょっと少ない。
かといって最大12個というのも中途半端。
多くて損はないし、実装してみたら簡単にできたし。

□各種設定(アイコンサイズ、文字サイズ、ポインタウィンドウ表示位置の変更)の追加
これも要望への対応。
これまたいずれ要望があるだろうなと思っていたんだけど。
最初は実装するつもりはなかったんだけど、ポインタの数を増やしたので必須機能になってしまった。
ポインタを4×4にすると少し威圧感を感じるので。

□ファンクションに機内モードを追加
初版で実装するつもりだったんだけど、どこかで実装不可能(非推奨だったかな)と見たので諦めていた。
けど、改めて調べてみたら実装可能らしい。

□Android設定の起動処理ロジックの変更
もともと、Intent.setClass()でクラス名を指定して起動していた。(既に削除したので正確な実装は不明)
けど、デベコンにAndroid設定が起動できないエラーがいくつか上がっており…。ちゃんと調べていないので分からないんだけど、バージョンや機種によってクラス名が違うのかな。
結局、クラス名を指定せずともsetAction()で起動可能なことが分かり、修正。
Intent.setAction("android.settings.SETTINGS")

■v0.3.1
□ポインタ、アプリの移動機能の追加
これも要望への対応。
これも想定してた要望であり、あまり対応するつもりはなかった。1度設定すれば移動する必要はないだろ、と。
要望の声が多かった事と、前バージョンでポインタ数を変更した際に配置箇所もずれてしまったので、やっぱり移動機能は必要かなぁと。
実際実装してみたら、個人的にも便利だったりする。
今のところ左右への移動のみに対応しており、上下には対応していない。
理由は2つ。
1つ目は単に面倒だから。
左右移動は単純に±1すれば良いのだけど、上下移動はポインタでは±4、アプリでは±3する必要がある。が、アプリの場合、真ん中がポインタになっているため、±2の場合もある。
その条件判定が面倒。(と言ってもそこまで難しくないのだけど)
もう1つは、編集機能に上限があるため。
編集モードでポインタをクリックすると、「開く」「編集」「削除」「(左へ)移動」「(右へ)移動」の5個の選択肢がある。上下を追加すると選択肢が7個。あと1個しか編集機能が追加できない。
今後何かしら編集機能を追加する事もあると思うので、今の所このままにしておく。

■v0.4.0
□ドック機能の追加
これも要望への対応。ポインタのシングルクリックでアプリを起動したいという要望。
これまたssFlickerのコンセプトとは異なってしまっており、あまり対応するつもりはなかった。
対応するとしたらシングルクリックポインタでも作ろうかと思っていた矢先、思い出した。当初ドック機能を付けるか迷っていた事を。
で、結局実装。あって損する物じゃないだろうと。
そして、これまた作ってみたら個人的にもなかなか便利だったりする。
次はドックのアプリ登録数を増やしたいとか要望がありそうな予感…。

□アプリ全般の起動時の処理ロジックの変更(座標情報の追加)
標準ホームからアプリを起動する際、座標を指定している。
それが何か?と思うかも知れないが、意外に重要だったりする。
一部のショートカット、具体的には「連絡先」や「SiMi Folder」は起動すると吹き出しが表示されるが、この表示位置を決定するのに座標が使われている。
これまでssFlickerではアプリ起動時に座標を指定していなかったので、ssFlickerからこれらのショートカットを起動すると、画面一番上に表示されていた。
これでは指の動きが大きくなってしまい、ランチャーとしてはイマイチだったりする。
という訳で、フリック後の指を離した場所の座標を指定するように対応。

□ショートカット起動時の処理ロジックの変更(フラグの追加)
アプリの起動情報はIntentという形で保持されている。
で、ショートカットを作成した際、その中にいくつかの起動フラグが含まれているのだけど、標準ホームでアプリを起動する際はフラグが追加されているように見える。(ソースが理解しきれていないので詳細は不明)
具体的にはIntent.FLAG_ACTIVITY_NEW_TASKが追加されているみたい。
この影響はほとんどないんだけど、ssFlickerからGoogle Readerのショートカットを起動すると、Readerを終了しないとssFlickerが起動しなくなっていた。

□検索ファンクションの処理ロジックの変更
ISW11HTで検索ファンクションが動作しない(アナザーホームが起動する)という不具合報告の対応。
結局修正しても直らなかったのだけど、修正後の方が正しい記述な気がするので、そのままにしておく。
ちなみに、家電量販店で試してみた所、正常に動作していた。該当者の機体のみの事象なのかは不明。
(前)
((Activity) context).startSearch(null, false, null, true);
(後)
SearchManager sm = (SearchManager) context.getSystemService(Context.SEARCH_SERVICE);
sm.startSearch(null, false, null, null, true);




0 件のコメント:

コメントを投稿