トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

Android 開発全般

 リソース関連

リソースからリソース参照

@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]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2012年11月24日 01時09分51秒