トップ 一覧 置換 検索 ヘルプ 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
に設定するとデフォルトで外部ストレージへ保存され、本体への移動も可能になります。


{{category2 プログラミング言語,Java,Android}}