リソース関連
リソースからリソース参照
@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(); }
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
画面の自動回転制御
try { Settings.System.putInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0); } catch (Exception e){ e.printStackTrace(); }
<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>
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);
<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>
バックライトの輝度モードの制御
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(); }
<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>
バックライトの輝度の値の制御
try { System.out.println(Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS )); } catch (Exception e){ e.printStackTrace(); }
<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>
エミュレータで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
に設定するとデフォルトで外部ストレージへ保存され、本体への移動も可能になります。
[カテゴリ: プログラミング言語 > Java > Android]
[通知用URL]
Tweet
最終更新時間:2012年11月24日 01時09分51秒