!!リソース関連 !リソースからリソース参照 @string/app_name とか !IDを使ったリソース参照 android:id="@+id/imageview1" のようにXMLに書いて、プログラムから R.id.imageview1 で参照 !!エミュレータの電源などの設定を変える telnet localhost 5554 等でtelnet でエミュレータに接続し、コマンドを流す。 例えば power ac on で電源の接続になる !!versionCode と versionName http://labs.karappo.net/mobiledev/index.php?itemid=209 versionCodeは、何回目のアップロードかを表す整数 versionNameは、自分で好きに決めたバージョン名を表す数字 です。なので、アップデートする際は少なくとも前回時よりもversionCodeが大きくなっていなければなりません。 !!スレッドに関する注意点 環境によっては、 *Thread#sleep *Object#wait 等で、スレッドを止める処理を行うと復帰しないことがあるようだ。 特に3秒(3000ミリ秒)以上停止させると復帰しない現象が多発した。 CountDownTimerでも、countDownInterval を3秒以上にすると、 onFinishが呼ばれないことがあった。 長時間スレッドを止めるときは、1秒毎に復帰、スリープを繰り返した方が良いかもしれない。 CountDownTimerのcountDownInterval は 1000ミリ秒 以上の値は渡さない方が無難かも。 !!hndroidのHandlerとは何か? http://www.adamrocker.com/blog/261/what-is-the-handler-in-android.html AndroidでWeb APIを使う場合、マルチスレッドによるユーザビリティ向上を以前のエントリで説明しました。 AndroidアプリのUIはシングル・スレッド モデルです。 単純にマルチスレッドにしてUIの操作をしてしまうと、CalledFromWrongThreadExceptionでアプリがダウンしてしまいます。 これを回避する仕組みがHandlerです。 Handlerの仕組みを簡単に説明しようと思ったのですが、 またもや長くなってしまったので、先にまとめます。 * AndroidのUI操作はシングル・スレッド モデル * ユーザビリティ向上の為にはマルチスレッドが必要 * Handlerで実現 * Handlerを使わない場合に起きる例外は実行スレッドのチェックで発生 * Handlerを使うと、UI Threadの持つキューにジョブを登録できる * キューはUI Threadにより実行される * 別スレッドからUI Threadに処理を登録するのでスレッドチェックで例外が発生しない !!指定時間後に処理をする new CountDownTimer(30000, 1000) { public void onTick(long millisUntilFinished) { System.out.println("seconds remaining: " + millisUntilFinished / 1000); } public void onFinish() { System.out.println("done!"); } }.start(); !!WIFI 制御 WifiManager m = (WifiManager)getSystemService(Context.WIFI_SERVICE); try { System.out.println(m.setWifiEnabled(true)); } catch (Exception e){ e.printStackTrace(); } !!画面の自動回転制御 try { Settings.System.putInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0); } catch (Exception e){ e.printStackTrace(); } !!Blluetooth制御 BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (mBluetoothAdapter == null) { System.out.println("##### not support ######"); } !!バックライト消灯時間の制御 defTimeOut = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, DELAY); Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, DELAY); !!バックライトの輝度モードの制御 try { // SCREEN_BRIGHTNESS_MODE // SCREEN_BRIGHTNESS_MODE_AUTOMATIC // SCREEN_BRIGHTNESS_MODE_MANUAL System.out.println(Settings.System.getInt(getContentResolver(), "screen_brightness_mode" )); } catch (Exception e){ e.printStackTrace(); } !!バックライトの輝度の値の制御 try { System.out.println(Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS )); } catch (Exception e){ e.printStackTrace(); } !!エミュレータでSDカード http://www5d.biglobe.ne.jp/~hra/note/android/004_sd_card_access.htm !SDカードのイメージを作る mksdcard 16M test.img !エミュレータにSDカードを指定する emulator -sdcard test.img -avd level4 !SDカードにデータ転送 エミュレータが起動している状態で adb push test.txt /sdcard !!アラームアプリを作る http://android.roof-balcony.com/service/alarm/ AlarmManager を使うらしい。詳しくは未確認。 !!アプリをSDカードへ保存可能にする方法 http://android49.blog.fc2.com/blog-entry-24.html AndroidManifest.xmlのタグに次の行を追加するだけです。 android:installLocation="auto" これを加えるだけでアプリがSDカードへ保存可能になります。ただしSDカードへ保存する機能はAndroid 2.2以降の機能ですので、アプリのAPIレベルには注意が必要です。 「auto」の部分を internalOnly に設定するとSDカードなど外部ストレージへ保存できなくすることができます。 preferExternal に設定するとデフォルトで外部ストレージへ保存され、本体への移動も可能になります。 {{category2 プログラミング言語,Java,Android}}