Android/techfirm_android の変更点


**ハードウェア依存のもの [#fc574a04]
 GSM電話、Bluetooth、EDGE、3G、WiFi、カメラ、GPS、コンパス、
 加速度計はハードウェア依存


**Androidのメディア対応形式 [#h72f69d7]
 一般的なオーディオ、ビデオ、および静止画像フォーマットをサポート
 (MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF)


**アニメーションGIFについて [#t5b58ace]
 Androidで画像を表示するときはImageViewを使うが、
 ImageViewでGIFアニメーションを表示しようとしても、
 最初の1コマ目が表示されるだけで、2コマ目以降表示されない
 http://d.hatena.ne.jp/tomorrowkey/20100419/1271678022

 アニメーションGIF表示の方法としては、3通りあって、
 1WebViewを使う方法   ⇒ブラウザでHTMLのタグでimgを指定するだけ
 2android.graphics.Movieクラスを使う方法
 3自作クラスを使う方法 ⇒GIFをバイナリで読み込んでBitmapにし、連続表示

 WebViewを使うと、一部のアニメーションGIFは動かないようだ。
 http://d.hatena.ne.jp/tomorrowkey/20100422/1271934492
  http://homepage2.nifty.com/takaaki024/tips/programs/java/android.html

 MovieクラスはSDK純正のクラスだが、一部、バグがあるらしい。
 Movieクラスを使った場合、GIF画像にoffsetの値が設定してあると動かない。
 (具体的にはImage BlockのImage Left PositionとImage Top Positionが
  設定されているもの)

 自作クラスを使うと、Movieクラスを使うより重くなってしまう。
 http://d.hatena.ne.jp/tomorrowkey/files/gif.pdf

 以下のサイトに具体的なAndroidのコードあり
 http://d.hatena.ne.jp/tomorrowkey/20100422/1271934492
 
http://www.google.co.jp/codesearch/p?hl=ja#cDrQXjL3ocQ/trunk/Explorer/src/jude/android/explorer/view/GifView.java&d=0


**アンドロイドの画面遷移 [#qadbd6f0]
 http://www.techfirm.co.jp/lab/android/transition.html

 インテントを通常通り2つ作っておいて(xml記述か、プログラムで作成)、
 下記のAPIで遷移

#code(Java){{
 @Override
 Intent intent = new Intent();
 intent.setClassName(
"android.sample", //パッケージ名
"android.sample.NextActivity"); //クラス名
 startActivity(intent);
}}
**Androidの終了コード [#r30d7fac]
 Androidは終了コードを埋め込んでよいようだ。
 finish();
 でActivityを終了できる。

 ただし、
 startActivityしたのと同じ回数だけfinish()を実行しなければ
 アプリは終了しないようだ。

 finishはActivityをスタックから取り除くだけ

 startActivityすると同じActivityがどんどん作られてしまうので、
 finishしてからstartActivityするとよい。


**Activityのスタック [#mbc465be]
 Activityはスタックに積まれており、
 戻るボタンで戻ることができる。
 また、戻るボタンを押したときに、スタックから取り除かれる。
 
 ホームボタンを押下すると、待ち受け画面に戻るが、 [#te7a0ac1]
 ホームボタンを押下すると、待ち受け画面に戻るが、 
 スタックはそのまま積まれたままになっている。


**リソースをプロジェクトに登録したときは、 [#j2ab3f59]
 プロジェクトにフォーカスを当てて、右クリックメニューから
 &color(Maroon){「リフレッシュ」を選択したほうがいい};。
 ちなみに、「自動的にビルド」がチェックされている状態ならば、
 リフレッシュを行った後に自動的にビルドされる。
**Viewクラスを継承すると、独自クラスもsetContentViewで追加することが可能 [#x60a00d6]
 private class SampleView extends View { ...
 のようにViewクラスを継承すると任意のクラスをビューとして追加可能


**Viewに対するタッチイベントを扱うときは以下のメソッドをオーバーライド [#k1fd9a2f]
@Override
public boolean onTouchEvent(MotionEvent event) { ...
//触る
if(event.getAction() == MotionEvent.ACTION_DOWN){ ...

 スライドは、MotionEvent.ACTION_MOVE
 離すは、MotionEvent.ACTION_UPで同様に取得可能

 タッチしたポジションは、event.getX();とevent.getY();で取得可能


**Viewの表示内容は、onDrawメソッド内に記述 [#be337542]
 protected void onDraw(Canvas canvas) {

 再描画の指示は、invalidate();で、onDrawメソッドが呼ばれる。
 (従来のrepaintに相当するもの)



**画像のアニメーションは、SurfaceViewを使う(ウェジットとの違いも載っている) [#f07deaf5]
 http://www.atmarkit.co.jp/fjava/rensai4/android12/android12_1.html
 
 Viewクラスでinvalidate()でアニメーションする方法もあるが、重いらしい

 関連>スレッドを使って描画を試みて失敗した例とその改善策など
 http://android.g.hatena.ne.jp/n4_t/20090624
 http://android.g.hatena.ne.jp/n4_t/20090709/1247156126

**羅針盤アプリのランドマーク機能と星空機能は他アプリからの起動が可能。 [#h0560d1c]
 (Intentで起動する)
 http://www.techfirm.co.jp/lab/android/starrysky.html

 ※羅針盤アプリは、HT-03Aにプリインストールされているアプリ
 http://www.youtube.com/watch?v=rzgXw-C8YOU&feature=related
 http://www.youtube.com/watch?v=OBO1LKUhqXc&feature=related
 http://www.youtube.com/watch?v=wYvVkkk77EQ&feature=related


 ※HT-03Aは日本初のAndroid OS搭載のスマートフォン


**Logの確認 [#l4a5d4b8]
 Logの確認にはLogCatビューを使用。
 表示されていない場合は、eclipseの下記メニューより表示。
 「ウィンドウ」→「ビューの表示」→「その他」→「Android」→「LogCat」

 稀にログが出力されなくなることがあるが、eclipseの再起動もしくは
 Android開発プラグインの再インストールで回避出来るとのこと。

 Logへの出力はLog.v("HelloAndroidWidget", "onEnabled");


**ウィジェットをホームに貼る方法 [#a046f3af]
 http://www.techfirm.co.jp/lab/android/widget.html

 ※ウィジェットとは、画面上に配置できる部品のことで、
  前回のようにextends Viewにより自分で作成したビューのことを
  「オリジナル・ウィジェット」などと呼んでいるようだ。
  ここでは、ホーム画面上に配置する部品ことを指す
  (Activityがないアプリになる。サポートはSDK1.5から)

  ただし、ウィジェットはアプリを転送しただけではだめで、
  ホーム画面を長押しして、ウィジェットを表示するように
  設定しないとだめ。