ハードウェア依存のもの
GSM電話、Bluetooth、EDGE、3G、WiFi、カメラ、GPS、コンパス、
加速度計はハードウェア依存
Androidのメディア対応形式
一般的なオーディオ、ビデオ、および静止画像フォーマットをサポート
(MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF)
アニメーションGIFについて
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
アンドロイドの画面遷移
http://www.techfirm.co.jp/lab/android/transition.html
インテントを通常通り2つ作っておいて(xml記述か、プログラムで作成)、
下記のAPIで遷移
@Override
Intent intent = new Intent();
intent.setClassName(
"android.sample", //パッケージ名
"android.sample.NextActivity"); //クラス名
startActivity(intent);
Androidの終了コード
Androidは終了コードを埋め込んでよいようだ。
finish();
でActivityを終了できる。
ただし、
startActivityしたのと同じ回数だけfinish()を実行しなければ
アプリは終了しないようだ。
finishはActivityをスタックから取り除くだけ
startActivityすると同じActivityがどんどん作られてしまうので、
finishしてからstartActivityするとよい。
Activityのスタック
Activityはスタックに積まれており、
戻るボタンで戻ることができる。
また、戻るボタンを押したときに、スタックから取り除かれる。
ホームボタンを押下すると、待ち受け画面に戻るが、
スタックはそのまま積まれたままになっている。
リソースをプロジェクトに登録したときは、
プロジェクトにフォーカスを当てて、右クリックメニューから
「リフレッシュ」を選択したほうがいい。
ちなみに、「自動的にビルド」がチェックされている状態ならば、
リフレッシュを行った後に自動的にビルドされる。
Viewクラスを継承すると、独自クラスもsetContentViewで追加することが可能
private class SampleView extends View { ...
のようにViewクラスを継承すると任意のクラスをビューとして追加可能
Viewに対するタッチイベントを扱うときは以下のメソッドをオーバーライド
@Override
public boolean onTouchEvent(MotionEvent event) { ...
if(event.getAction() == MotionEvent.ACTION_DOWN){ ...
スライドは、MotionEvent.ACTION_MOVE
離すは、MotionEvent.ACTION_UPで同様に取得可能
タッチしたポジションは、event.getX();とevent.getY();で取得可能
Viewの表示内容は、onDrawメソッド内に記述
protected void onDraw(Canvas canvas) {
再描画の指示は、invalidate();で、onDrawメソッドが呼ばれる。
(従来のrepaintに相当するもの)
画像のアニメーションは、SurfaceViewを使う(ウェジットとの違いも載っている)
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
羅針盤アプリのランドマーク機能と星空機能は他アプリからの起動が可能。
(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の確認
Logの確認にはLogCatビューを使用。
表示されていない場合は、eclipseの下記メニューより表示。
「ウィンドウ」→「ビューの表示」→「その他」→「Android」→「LogCat」
稀にログが出力されなくなることがあるが、eclipseの再起動もしくは
Android開発プラグインの再インストールで回避出来るとのこと。
Logへの出力はLog.v("HelloAndroidWidget", "onEnabled");
ウィジェットをホームに貼る方法
http://www.techfirm.co.jp/lab/android/widget.html
※ウィジェットとは、画面上に配置できる部品のことで、
前回のようにextends Viewにより自分で作成したビューのことを
「オリジナル・ウィジェット」などと呼んでいるようだ。
ここでは、ホーム画面上に配置する部品ことを指す
(Activityがないアプリになる。サポートはSDK1.5から)
ただし、ウィジェットはアプリを転送しただけではだめで、
ホーム画面を長押しして、ウィジェットを表示するように
設定しないとだめ。