SyntaxHighlighter

2012年2月20日月曜日

自分でスマホをいじってみてわかったこと

デバッグ用にとIS05を買ったわけですが、実際にスマホを所有するのはこれが初めて。

それで触ってみて気付いたことをメモがてら忘れないようにと書き留めておきます。

◆Androidマーケットのアプリ紹介画像は、全部縦長(Portrait)のほうが良さげ
横長の画像をアップしていると、縦持ち(Portrait)でその画像を表示した後、次の画像へスワイプしようとすると縦方向(Landscapeで横方向)にスワイプしないといけなくなる。ちょっとややこしい上面倒なので、アップする画像は全て横か縦に統一したほうが良さげ。

◆更新情報の自動付加される「1. 2.」は無視したほうが良さげ
「1. 2.」が自動付加されるのはPCからみた時のみで、マーケットアプリから見たときは入力したままに表示されるようなので、
Ver 1.0.0
・ファーストリリース
Ver 1.0.1
・バグ修正
のように書いていったほうが良さげ。

◆ボタンはある程度大きいほうがいい
当たり前の話だけど、アプリによってはボタンがやたら小さかったり細かったりして、人差し指の”先”でタップしないとなかなか反応してくれなかったり。片手持ちの場合、持ち手の親指で操作することになるけど、その場合ほぼ反応してくれない。

◆SDカードへのインストールは許可しておいたほうが無難
本体の容量が意外と手狭なので、SDカードへのインストールが出来るようにしておいたほうがユーザーフレンドリー


◆使用するPermissionの説明をアプリ概要に書いておいたほうが良さげ
必要とするPermissionの一部しか使わない場合でもマーケット上やアプリ情報ではいろいろな情報を取得されているというように見えるので、どういった意図でそのPermissionを使用しているのか書いておいたほうが多少なりともユーザーに安心感を与えるかも。そのうち、各Permissionとマーケット上やアプリ情報で表示される内容の対応表でも作ろうかな(誰かもう作ってそうだけど)。

◆プリインストールアプリはアンインストールできない?
アプリの評価を見ていると、「アンインストールできない」とか「アンインストールできるようにしてください」てな内容もあり、見ているとどうやらプリインストールされているアプリがアンインストールができない場合がある様子。端末メーカーによる仕様なので、アプリにどうこう言ってもしょうがないんだけどね。それでも使わないアプリが容量を占拠しているのはある意味ウィルス…

ここからはIS05を使っての感想。SIM使ってないので、ケータイアップデートが出来ず、そのおかげでメジャーアップデート(2.2.1→2.3.4)もできない状態なので、アップデートをすれば改善される点もあるかもしれません。

・本体データ容量が少ない
 400MBですが、アプリをほいほい入れていったらあっと言う間になくなりました。SDカードに移せば、と思うところですが、次に出てくる弊害が…

・SDカードにアプリを入れておくと再起動後にしばらくアプリが見えない
バッテリー切れや意図的に電源OFFして再起動させた後、SDカードに移しておいたアプリがしばらく表示されませんでした。突然インストールしたアプリが消えてはじめは何事かと思いましたが、共通してSDカードに移動したアプリだったこともあり、しばらく待ってみたらポコポコと現れてきました。そんなこともあり、SDカードに移動するアプリもあまりサイズが大きくないものや頻繁に利用するもの以外を中心に移動しています(アプリ情報だけなら大小関係ないかもしれませんが)。

・ホーム画面にショートカットを増やしたら挙動が…
壁紙やウィジェットが表示される画面にショートカットを増やしていったら、ホーム画面をスワイプして移動する際にプチフリーズすることがしばしば。3ページ分がある程度埋まるくらいショートカットを置いた状態でアプリをあれこれいじっていたらフリーズ(電源ボタンも効かないので背面のリセットスイッチをポチ)。なので今は頻繁に使う分だけに厳選して置いてます。
追記:ホームアプリを入れると結構そちらでは調子いいので、現在はGO LAUNCHER EXを利用しています。

・イヤフォンジャックカバーェ…
IS05のイヤフォンジャックカバー、ただ差してあるだけなんですねw びっくりしました。しかもちょっと出っ張ってるし…なんか…ださい…
上がカバー装着時。下が外した状態
・スクリーンショットが取れる (・∀・)イイ!!
これは端末ごとに状況が異なるんでしょうか。IS05の場合、電源ボタンを押したままホームキーを押すとスクリーンショットが取れるんですね。端末をルート化しないといけないとか、ルート化しなくても済むアプリはあるけど登録が必要とかいろいろ情報を見ていた分、端末に標準でスクリーンショットが付いているのはありがたいですね。

こんなところですか。IS05はサイズが小さい分画面サイズも小さいですが、手にすっぽり収まるサイズで普段使用するにはこのくらいの大きさがちょうどいいのかな、と思いました。店頭でデモ機を触ってる感じでは、大きくても4インチくらい、それ以上になると大きすぎて扱いにくそうな印象がありました。

最近になってようやくAndroid 4.0対応端末の情報もちらちら出てきて、シャープもハイエンドモデルを中心にバージョンアップをする計画があるようですし、 Android 4.0端末が待ち遠しいですね。もうAndroid5.0(Jelly Bean)の発表が6月かも、という情報も出てきていますが。

ちなみに、IS05を2.3.4にバージョンアップするには、まず端末のビルド番号が「1.00.07」以上でなくてはなりませんが、私の持っている端末は「1.00.02」。ビルドを上げるにはケータイアップデートをしなければなりませんので、SIMが必要になります。SIMを利用できるようにするには事務手数料2100円かかります。2.2.1のまま使うか、2.3.4にあげるか。Android DevelopersのResourcesにあるPlatform Versionsを見るとAPI Level 10が58.1%(2012年2月20日現在)になっているので、デバッグ用としても2.3.4にあげたほうがいいのかなぁ。などと思案中。

2012年2月13日月曜日

Action Bar実装編(前回の続き)

前回の続きです。

メニュー用のリソースも出来ましたので、メニュー表示をプログラムに実装して使えるようにしましょう。

と言っても今回はいろいろ工夫したりしているわけではないので、Android Developersの「Menus」にあるようなリファレンスどおりの作り方になりますが(^^ゞ

onCreateOptionsMenu()はこんな感じ。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
 MenuInflater inflater = getMenuInflater();
 inflater.inflate(R.menu.menu_main, menu);
 return true;
}

ちょこっと解説。
MenuInflater でXMLからメニューの情報を使用します。
で、nflater.inflate()で、作成したmenu_main.xmlをIDで指定します。

次に、メニューが選択された時の動作、onOptionsItemSelected()はこんな感じです。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
 switch( item.getItemId() ) {
  case R.id.appfinish:
   finish();
   break;
  case R.id.howto:
   showHelp();
   break;
  case R.id.about:
   showCredit();
   break;
 }
 return super.onOptionsItemSelected(item);
}

こちらは簡単ですね。
switch 文を使って、 受け取った MenuItem の getItemId()で選択されたメニューアイテムのIDを取得して、caseで各IDを指定します。
IDはmenu_main.xmlで各メニューアイテムに指定したIDを利用します。

これでAndroid3.0以上の環境で実行すると Action Bar として実行され、Android 3.0以前では従来のようなメニューで表示されます。

Action Barでの表示方法は前回書きました、show As Action の指定の方法で変わってきます。実際に設定して動かしてみると違いがよくわかると思います。

最後に、アプリのバージョンアップです。

マニフェストファイルの Version Codeを前回よりも大きい数字(今回の私の場合、1 → 2)に変更して、Version Nameも任意の値を指定(今回は1.0.0 → 1.1.0)、アップロード用の apk ファイルを作成したらAndroidマーケットのデベロッパーコンソールでアップロード済みのアプリを選択し、「APKファイル」タブを選択して、新規のAPKファイルをアップロード。アップロードが完了したら新しい方のパッケージを有効にして、必要に応じて「商品の詳細」タブでRecent Changes(更新情報)を記入して、「保存」をクリック。

すぐ見ても反映されませんでしたが、一晩たった時点では反映されていました(最短どのくらいかは…あとで調べてみようと思います)。
ちなみに、更新情報に

あああ
いいい

というように書いたらそのまま出るのかと思ったら、
  1. あああ
  2. いいい
というように、各行が番号付きで表示されるようでした。

2012年2月12日日曜日

今までのメニュー表示からActionBarを利用したメニュー表示に変更

前回のエントリーでAction Barを使ってみようということで軽く調べてから、Androidマーケットにアップしている「シンプル電卓」を改良して、ついでにバージョンアップのテストもやってみようかという企画(?)です。

一般的なMenuの作り方は
private static final int MENU1_ID = Menu.FIRST;
private static final int MENU2_ID = Menu.FIRST + 1;
pivate static final int MENU3_ID = Menu.FIRST + 2;
というような感じで、Menu用のIDを作って、
@Override
public boolean onCreateOptionsMenu(Menu menu) {
 boolean result = super.onCreateOptionsMenu(menu);
 // メニューアイテムを追加する
 menu.add(0, MENU1_ID, Menu.NONE, R.string.menu1Label).setIcon(R.drawable.ic_menu_close_clear_cancel);
 menu.add(0, MENU2_ID, Menu.NONE, R.string.menu2Label).setIcon(R.drawable.ic_menu_info_details);
 menu.add(0, MENU3_ID, Menu.NONE, R.string.label_about).setIcon(R.drawable.ic_menu_notifications);
 return result;
}
と、onCreateOptionsMenu()でMenuボタンを押した時に表示されるメニューを作成し、
@Override
public boolean onOptionsItemSelected(MenuItem item) {
 switch( item.getItemId() ) {
  case MENU1_ID:
   finish();
   break;
  case MENU2_ID:
   showHelp();
   break;
  case MENU3_ID:
   showCredit();
   break;
 }
 return super.onOptionsItemSelected(item);
}
てな感じで、onOptionsItemSelected()でメニューが選択された時の動作を決定するわけです。

これを、Action Barを使用した作りにします。
まずは、作成しているアプリのmin SDK VersionとTarget SDK Versionを決定します。
Action Barが使えるようになったのはAndroid 3.0(Level 11)からなので、Target SDK Versionは11以上に設定しましょう。min SDK Versionは自分のアプリの最低条件をつけてやりましょう(私の場合はAndroid 1.6なので4です。)。

次に「project.properties」にあるTarget SDKにも先ほど設定したTarget SDK Versionと同じ数字を「Android-xx」の「xx」につけましょう。そして、eclipse再起動。私の場合、eclipse再起動で後ほど設定するshow As Actionが有効になってくれました。

下準備が整いましたので続いて、menu用のリソースを/res/menuの下に作ります(resの下のmenuフォルダはresを右クリックして[新規]-[フォルダー]です(eclipseの場合))。
「Android XML File」を新規作成し、Resource Typeに「Menu」を設定、ファイル名を入力して(ここでは menu_main)完了。
こんな感じの画面になります(Itemなどすでに追加済みですが…)
res/menuのxml編集画面
 xmlを直接記述でもいいですが、ここはGUIで操作をしましょう。
はじめは Menu Elements には何もありませんので、Add ボタンをクリックして、「Group」か「Item」を選択してOKを押します。
すると、Menu Elements に一つデータが追加されました。
後はそのアイテムのIDやTitle、Iconを設定します。
次に、ようやくここで show As Action の設定です。
show As Actionの右側の Select ボタンを押すと
  • never … Action Barには表示されない
  • ifRoom … Action Barにスペースがあれば表示する
  • always … 必ずAction Barに表示する
  • withText … Action BarにIconと共にテキストを表示する(Land Scape時のみ?)
  • collapseActionView … action viewを関連付けることで折り畳めるメニューを表示(Level 14から)
の選択肢が表示されます。
collapseActionViewですが、エミュレータで確認した限りでは、WVGA800では通常のMenuと同様にポップアップ表示、WXGA720ではひとまとめになって表示されました。
collapseActionView
なので、「ある程度の解像度から」と書きました。が、間違っていればご指摘をお願いいたします(他に設定すればWVGA800でもひとまとめ表示になるよ、など)。
※訂正:Nagoya0さんからのコメントにありますとおり、collapseActionViewを指定したために通常表示やまとまった表示になっていたのではなく、action viewを指定していないためにデフォルトの動作になっていただけのようです。
collapseActionViewを使用する場合はandroid.widget.SearchViewのようなaction viewと関連付けて使用することで伸縮するメニューを利用することができるようです。
SearchView を使った例。上が閉じた状態、下が展開した状態


と、とりあえず、今回はここまで。次回は続きとAndroidアプリのバージョンアップについて書きたいと思います。

次回:Action Bar実装編

2012年2月6日月曜日

ActionBarを使ってみようかと…

android developers blogの「Say Goodbye to the Menu Button」でActionBarを使おうって言ってるので、とりあえず軽く触ってみて、ついでに、テストアップしたアプリもActionBar対応にしようかと思ったのですが…

Dev GuideのAction Barのページ(こちら)を参照しながら作ってみると、res/menuのmenu.xmlで「android:showAsAction」を使おうとするとエラーでアプリがビルドできず。

さてどうしたもんかと、Menu Resource(こちら)のページを見てみると「Introduced in API Level 11.」という記載が。

Min SDK : 4、Target SDK : 14でやっていたのを両方11にしたら動くようになりましたが、はて、11以外では動かないのかな?
それともサボってソースとその周辺だけ読んでいるせいでなんか見逃してるのかな?
ちなみに、Min SDK:11だけでTarget SDKをなしにしてもダメでした。

もうちょっと調べてみよう。

追記:
調べた結果、というか動かしているうちにMin SDK : 4、Target SDK : 14でも動くようになったので、更に見てみると「project.properties」のtarget-SDKも「android-14」にすることと、eclipseを再起動することで使えるようになりました。
res/menu/menu.xmlを編集する際にGUI編集画面に「show as action」の入力欄が出ていない時はビルド出来ず、表示されるようになればビルドできるようになりました。

あ、調べるついでに、Androidのマスコットの名前を再調査しました。
以前調べた時には、もうなくなったページの配布画像の下に「droid : jpeg」とあったので、droidかなぁ、と思っていました(droidもロボットの意味でしょうけど)が、実際は「公式の名前はない」ということらしいです(こちらを参照)。Brand Guidelinesでも「Android Robot」ってしか書いてないですしね。
他に、Googleの中の人たちはマイクと読んでいたり、犬のマスコットをアレックスと読んでいたり。
まあそれでも、今後も言いやすいので「ドロイドくん」 と呼ぼうと思いますが。

ちなみに、WikipediaのAndroidを見ると「正式名称はGoodies」と書いてありますが、もうなくなった「http://www.android.com/media/goodies.html」というページ(こちらの記事でスクリーンショットが見れました)に画像やらフラッシュバナーがあったのですが、このページのファイル名「goodies」やサムネイルの上の「Goodies」を名前と勘違いしたんだと思います。Goodiesは「グッズ」っていう意味でしょうからね。