2013年2月20日水曜日

[Swipestarter]メニューボタンが無い端末で変な感じに


メールで知らせていただきましたので、こちらでも報告させていただきます。

メニューボタンが無い端末(HTC J butterfly)にてフォルダ等を起動した際にドックの下あたりに「:」←こんな感じのソフトウェアキーのメニューボタンが表示されます。

これは何かというと、メニューボタンが無いので4.X系に最適化されていないアプリを起動したときに、メニューを押せるようにOSが判断して表示しているっぽいです。
4.X系に最適化って何?っていうのは、アクションバー対応です。

4.X系ではボタン構成が従来の「メニュー」「ホーム」「戻る」「検索」から「アプリ履歴」「ホーム」「戻る」になりました。
メニューボタンが消されちゃいました。そのかわり、アクションバーっていうのをアプリ内に組み込んでそこからメニューを起動しろと。

まぁ、メニューなんてアプリの中で完結できるはずだから、わざわざハードに実装する必要もないんだろうけど。
この方向性は間違っていないとは思うんですけど、それを強制しちゃうところがAndroidのニクいところ。

Swipestarter(に限らず、僕のアプリ全般)では、Android2.1くらいから使えるように作っています。
なので、アクションバーも実装していないです。

このような実装のアプリを起動した際には、メニューキーの無い端末の場合、OSが勝手に判断してメニューを表示してくれます。
たとえばGalaxyNexusのようなソフトウェアキーの場合、端っこにちょこんと「:」←こんな感じのメニューが追加されます。
そして、HTC J butterflyのようなハードキーの場合、ドックの下あたりに「:」←こんな感じのソフトウェアキーのメニューボタンが表示されます。

超かっこ悪いですね。
今のところハードキーかつメニューキーの無い端末は、まだそんなに出回っていない(と思っている)ので、この現象にぶち当たる人は少ないかもしれません。

で、結論を言うと、これは治せます。
アプリのターゲットSDKバージョンを4.X系にしちゃえばいいです。
そうすると、OSがアクションバーを実装してあるとみなして「:」←これが出なくなります。

対応自体は簡単そうですが、ターゲットを変更したことによる動作検証をしなければいけないので、まとまった時間が作れたら対応します。
あ、あとメニューがある画面(ドロワーだけかな)にメニューを表示できるボタンを追加しないとダメですね。
どんどんたまっていく。。。ごめんなさい。



なぜ対応を後回しにしたかというと、HTC J butterflyにはハードキーの設定があるらしく、そこでメニューを割り当てるとOSがメニューボタンありと判断して「:」これが出なくなるとの報告を貰ったからです。
という事で、いったん端末の設定側で逃げてください。
よろしくお願いします。

2013年2月12日火曜日

GoogleNowはいらない


この前のFlipClip対応した時に、GalaxyNexusを4.2にしました。
(4.1が無くなっちゃった。どうしよう。リカバリで戻せるようにしておこうかな。)

で、少し弄ってたらなんだか結構使いやすいなぁと思い始めたので、メイン端末をこれにしちゃいました。

どうも、4.2(4.1もだっけ)を常用するとGoogleNowが鬱陶しい。
今まで、下の真ん中からSwipeStarterでドロワー表示にしてたからってのもあるんだけど、Nowの代わりにドロワー表示したいなぁって。

で、ちょろっとググったら「android.intent.action.ASSIST」を受け取って起動するアプリを作ればいいとのこと。
このあたりは常用端末には欠かせないという事でさっそく「つぎはぎ」で作成。

出来ました。

似たアプリあるかと思ったけど、見つからなかったのでマーケットにも登録しました。
検索の方法が悪いだけか?
みんなGoogleNow使ってんのかなぁ?
自分的にはまるでいらない機能なんだけどなぁ。

1時間足らずで作ったし、自端末でしか動作確認してないけどよろしければ。

Google Now は いらない
https://play.google.com/store/apps/details?id=tora.mamma.assistlauncher

起動方法はホームボタンのところからスワイプ(Nowのやつ)で、起動するものをアプリかショートカットから選べます。