サービスからバッテリー残量を監視する必要があるアプリを開発しています。誰かがそれを行う方法を教えてもらえますか? サービスからではなく、アクティビティからバッテリーの状態を取得しているサンプル コードをいくつか見つけました。
ありがとう。
ACTION_BATTERY_CHANGED を使用します。バッテリー値が変化するたびに呼び出されます。それがどのように行われるかについては、以下のコードを参照してください。
public void onCreate()
{
this.registerReceiver(this.mBatInfoReceiver,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}
private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent intent) {
int level = intent.getIntExtra("level", 0);
Log.e("test", String.valueOf(level) + "%");
}
};
public void onDestroy(){
// unregister receiver
this.unregisterReceiver(this.mBatInfoReceiver);
}
違いは何ですか?アクティビティの場合と同じように、バッテリー イベントのレシーバーをサービスに登録できるはずです。例えば:
private final BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent intent) {
int rawLevel = intent.getIntExtra("level", -1);
int scale = intent.getIntExtra("scale", -1);
int status = intent.getIntExtra("status", -1);
// Do something
}
};
public void onCreate() {
registerReceiver(this.mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}
public void onDestroy() {
unregisterReceiver(this.mBatInfoReceiver);
}
ACTION_BATTERY_CHANGED を使用する必要があると思います。これはスティッキーインテントであるため、ブロードキャスト レシーバーで直接監視する必要はありません。アクティビティから直接参照を取得できます。
Androidのドキュメントから:
これはスティッキー インテントであるため、BroadcastReceiver を登録する必要はありません。次のスニペットに示すように、レシーバーとして null を渡して registerReceiver を呼び出すだけで、現在のバッテリー ステータス インテントが返されます。
http://developer.android.com/training/monitoring-device-state/battery-monitoring.html
BroadcastReceiverで必要なものは次のとおりです:http://developer.android.com/training/monitoring-device-state/battery-monitoring.html