2012年3月20日火曜日

ssFlickerのバージョンアップ内容


最近のssFlickerのバージョンアップ内容。


 v0.8.1                                     
□ssFlickerの設定画面にヒントを追加

文字通りヒントを追加。
普通に使っていても気付きにくい点や使い方のちょっとしたポイントを追加して行きたいと思う。

 v0.8.2                                     
□ssFlickerのアプリアイコンを変更
旧アイコンもそれほど気に入らなかった訳じゃないんだけど、3D(球)に違和感を感じていた。
オリジナルアイコンは全て2Dだし、操作方法も2D。3Dの要素はまったくない。
という訳で2Dのアイコンを作成したんだが、コメントを見る限り、どうも評判がイマイチのようだ。
そんな自分も最近「前の方が良かったかな」と思いつつある。
何にせよ、今のアイコンだとssFlicker最大の特徴である「フリック」が分かりずらいので、いずれまた変更したいとは思っているんだけど。

□背景色を透明にしても透明にならない不具合の修正
大した不具合ではなかったのだけど修正。

 v0.8.3                                     
□ポインタ名、アプリ名の表示設定を追加
前に一度実装しようかと思って止めたんだけど、要望があったので実装。

□設定画面にssFlickerの共有を追加
ごめんなさい、宣伝用です。
Google PlayのssFlickerのURLをTwitterやSNSに投稿できます。

□ポインタ、アプリ情報のテーブル制約を変更(本バージョン以降の新規インストール時のみ有効。見た目や操作性は変わりません)
ssFlickerではポインタの情報とアプリの情報には、設置場所に基づいたIDを付与して保存している。
例えば一番左上のポインタの一番左上のアプリには0-0というIDが付与されている。
また、保存先はDBのポインタテーブルとアプリテーブル。
ポインタテーブルはpointerIdがprimary keyとなっているため、重複することはない。
ただ、アプリテーブルはpointerIdとappIdの複合primary keyとしていなかったため、場合によっては重複してしまう可能性があった。
例えば、ウィジェットの登録時に、一覧が表示される前に他のアプリに触れてからウィジェットを登録すると重複してしまう。他のアプリに触れたタイミングで登録先のIDが変わってしまうからだ。
他にもポインタやアプリを移動する際に一時的にIDを変更しており、普通に処理が完了すれば問題ないんだけど、たまたま端末がフリーズしたりしてしまったらどうなるか分からない。
仮に重複した場合、何かのアプリの裏に隠れているだけなので、そのアプリを削除すれば重複分を含めて削除されるんだけど、どのアプリと重複しているかは見た目では分からない。
AndroidではSQLiteというDBを使っているんだけど、これで複合primary keyが設定できないと思い込んでいたのだけど、調べ直してみたら出来るらしい。
ただ、DBバージョンを上げるとかなり大変なので新規インストール時のみ設定されるようにした。

□共有アプリの登録ロジックを変更
ssFlickerからTwitterの投稿画面を起動すると、ssFlickerが終了していなかったので、終了するよう変更。

□ホームアプリの起動ロジックを変更
これまでホームアプリの起動にIntent.CATEGORY_DEFAULTを設定していなかったので追加。

□オーバーレイ起動でアプリアイコンが画面に残ってしまう場合がある不具合の対応
オーバーレイ起動でアプリアイコンを表示したまま画面ロックをかけると、復帰時にアプリアイコンが表示されたままになっていたので修正。

2012年3月14日水曜日

ウィジェットホストの作り方

「ウィジェットを扱うアプリ」と言っても2通りの捉え方ができる。
1つは「自作ウィジェットを他人のアプリで表示する」という意味。
もう1つは「他人のウィジェットを自作アプリで表示する」という意味。
本記事では後者、つまりウィジェットホストの機能について記載する。
前者については多くの書籍やサイトで説明されているので、ここでは記載しない。

ssFlickerにウィジェットホストの機能を追加したのはもう半年ほど前のことだが、当時ネットで検索した限り、この機能について書かれたサイトは見当たらなかった。
何とか標準ホームのソースを追って機能は実装できたのだが、同じ悩みを抱える人もいるだろう。

作り始めた当初、ウィジェットホストの機能が実現できる自信はまったくなかった。
ウィジェットホストで必要な処理を想像して、一覧を表示して設定画面を開いてアプリの情報などを色々と保存して…と色々考えていた。
が、終わってみればそこまで難しい物でもない。想像していた処理の半分位をシステム側(Android OS)が行っている為である。

毎度の事だがリファレンスを読み解いた訳ではなく、どちらかと言えば結果論(やってみたら動いた)になっているので、あくまで参考程度にして欲しい。

2012年3月1日木曜日

ssFlickerに共有アプリが登録できるようになりました

いつもの通り、先日行ったv0.8.0でのバージョンアップ内容について。

 V0.8.0                                    

□ポインタに登録できるアプリに共有アプリを追加
・これまでポインタに登録できるアプリは通常のアプリ、ホームアプリ、ショートカット、ウィジェット、ファンクションの5種類だった。これに共有アプリを追加。
・Androidでは今起動しているアプリの一部情報を、他のアプリを通じて共有する機能がある。
例えば、ブラウザから共有を呼出すと共有機能を有したアプリ(TwitterやGmailなど)の一覧が表示され、選択したアプリを通じてURLを共有(Twitterであればつぶやき、Gmailであればメール送信)することができる。
使い方によってはかなり便利な機能なんだけど、実は自分もあまり使っていない。
・前からssFlickerでもうまいこと共有アプリを扱いたいと思っていたんだけど、結果的に「ポインタに登録できる一アプリ」として扱えるようにした。
また、アプリの編集画面からテンプレートも設定可能。テンプレートを設定しておけば「起きた」ツイートや「帰る」メールなどを多用する人には便利だと思う。
テンプレートを使わなかったとしても、ツイート画面やメール送信画面を直接開く事ができるので、ぜひ1度使ってみて欲しい。

□アプリ選択画面をリスト表示からグリッド表示に変更
・単純に見やすさを重視した。
アプリインストール数が多い人はリスト表示だとページめくりが大変だと思い、グリッド表示に変更。

□ファンクションやステータスバーなどのアイコンを変更
・ファンクションのアイコンはかなり初期から作りたかったんだけど、このタイミングで作成。
合わせてステータスバーアイコンも変更。ICS標準に合わせる形に変更した。
他にもホームポインタのアイコンも四角から家っぽく変更。
細かい所だと、通常のポインタのデフォルトアイコンを矢印付きの○からただの○に変更した。
・これで長らく課題になっていたアイコンの作成は一通り完了。あとはアプリアイコンを変更するかちょっと悩んでいるけど、今よりも良いデザインも思いつかないのでこのままにしておく。