ただいまjava!私は帰ってきた!+(・ω・0)*
まあメモるのは初めてなんですがね(;´Д`)
内容は
まずはバッテリー編からφ(・ω・`)
端末のバッテリー情報を取るならIntent.ACTION_BATTERY_CHANGEDのお世話になるのが楽.
…他にも方法あるのかな
このIntentは, システムが「バッテリーの残量や状態が変更された時」, その情報を載せてIntentを発行していてくれている(らしい)
なのでこれを受信する受信機を用意してやればいい, とのこと
そこで登場するのがBroadcastReceiverクラス
ブロードキャスト化されたIntentを拾えるこのクラスを継承して, BatteryReceiverなるクラスを作ります
とりあえずシンプルにバッテリーの状態と残量(%)だけを取得するクラス.
このレシーバーを立てておく. 立て方は後々
Intent.ACTION_BATTERY_CHANGEDを受け取るとonReceiveが呼ばれて処理スタート.
まずはコメントにあるとおり, 余計なIntentはreturnで排除.
・・・余計なIntentって入ってくるのかな.
その後はもうお好きに.
Intentからお好みの情報を引き出して操作するだけ.
Intentに含まれる値に関しては参考を参照.
参考:http://www.adakoda.com/android/000140.html
また, このonReceiveはオーバーライドメソッドなので, ココ以外に値を持ち出すときは一工夫必要.
上記をまるっと内部クラスにしてやるのが一番扱いやすい・・・?
ほかにもServiceクラスに乗せるなどの使い方も.
ここで得られる値もWidget向きだったりするのでServiceで使うのもアリ・・・?
疑問系ばかりであるorz
Receiverが出来たら, 今度はIntentFilterをかけてやる. こちらはActivityならonCreateやonResumeなどで宣言してやるといい.
1,2行目で作ったReceiverとIntentFilterをインスタンス化.
3行目の addAction メソッドで件の Intent.ACTION_BATTERY_CHANGED をfilterが受け取ることを宣言.
4行目でそのfilterとreceiverを関連付けて宣言は終了.
あとはこのメソッドを通るように起動させればReceiver起動.
IntentがくるたびにReceiverが動いてくれる.
これをonDestoryなど, もう要らないと判断される時に呼べばいい.
ただonPauseがいいのかonDestoryがいいのかは微妙….
もっと他にいいとこあるかも…?
これで必要なパーツはそろい踏み.
Widgetなんかにしてバッテリー残量によってアクションが変わるアプリなんかが作りやすいかも.
…アプリ自体がバッテリー食うのは内緒( ´д)ヒソ(´д`)ヒソ(д` )
内容は
androidの設定を操作するアプリの作成
ということでそのパーツ毎にちらほらとメモしていく予定まずはバッテリー編からφ(・ω・`)
android端末のバッテリー情報を取得
端末のバッテリー情報を取るならIntent.ACTION_BATTERY_CHANGEDのお世話になるのが楽.
…他にも方法あるのかな
このIntentは, システムが「バッテリーの残量や状態が変更された時」, その情報を載せてIntentを発行していてくれている(らしい)
なのでこれを受信する受信機を用意してやればいい, とのこと
そこで登場するのがBroadcastReceiverクラス
ブロードキャスト化されたIntentを拾えるこのクラスを継承して, BatteryReceiverなるクラスを作ります
1. Receiverの作成
public static final class BatteryReceiver extends BroadcastReceiver { @Override public void onReceive(final Context context, final Intent intent) { // actionの取得 String action = intent.getAction(); // actionの確認. Intent.ACTION_BATTERY_CHANGED以外のintentは排除する if (!action.equals(Intent.ACTION_BATTERY_CHANGED)) { Log.d("BatteryReceiver ", "action is " + action); return; } // 状態, 「充電中」等の状態がintで取れる int status = intent.getIntExtra("status", 0); // 電池残量, デフォルトは0. int level = intent.getIntExtra("level", 0); Log.d("level", level + "%"); } }
とりあえずシンプルにバッテリーの状態と残量(%)だけを取得するクラス.
このレシーバーを立てておく. 立て方は後々
Intent.ACTION_BATTERY_CHANGEDを受け取るとonReceiveが呼ばれて処理スタート.
まずはコメントにあるとおり, 余計なIntentはreturnで排除.
・・・余計なIntentって入ってくるのかな.
その後はもうお好きに.
Intentからお好みの情報を引き出して操作するだけ.
Intentに含まれる値に関しては参考を参照.
参考:http://www.adakoda.com/android/000140.html
また, このonReceiveはオーバーライドメソッドなので, ココ以外に値を持ち出すときは一工夫必要.
上記をまるっと内部クラスにしてやるのが一番扱いやすい・・・?
ほかにもServiceクラスに乗せるなどの使い方も.
ここで得られる値もWidget向きだったりするのでServiceで使うのもアリ・・・?
疑問系ばかりであるorz
2. Filterの登録
BatteryReceiver receiver = new BatteryReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_BATTERY_CHANGED); registerReceiver(receiver, filter);
Receiverが出来たら, 今度はIntentFilterをかけてやる. こちらはActivityならonCreateやonResumeなどで宣言してやるといい.
1,2行目で作ったReceiverとIntentFilterをインスタンス化.
3行目の addAction メソッドで件の Intent.ACTION_BATTERY_CHANGED をfilterが受け取ることを宣言.
4行目でそのfilterとreceiverを関連付けて宣言は終了.
あとはこのメソッドを通るように起動させればReceiver起動.
IntentがくるたびにReceiverが動いてくれる.
3. Receiverの破棄
unregisterReceiver(receiver);これだけ.
これをonDestoryなど, もう要らないと判断される時に呼べばいい.
ただonPauseがいいのかonDestoryがいいのかは微妙….
もっと他にいいとこあるかも…?
これで必要なパーツはそろい踏み.
Widgetなんかにしてバッテリー残量によってアクションが変わるアプリなんかが作りやすいかも.
…アプリ自体がバッテリー食うのは内緒( ´д)ヒソ(´д`)ヒソ(д` )
0 件のコメント:
コメントを投稿