1

サービスからバッテリー残量を監視する必要があるアプリを開発しています。誰かがそれを行う方法を教えてもらえますか? サービスからではなく、アクティビティからバッテリーの状態を取得しているサンプル コードをいくつか見つけました。

ありがとう。

4

4 に答える 4

6

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);
}
于 2012-09-07T12:16:14.843 に答える
5

違いは何ですか?アクティビティの場合と同じように、バッテリー イベントのレシーバーをサービスに登録できるはずです。例えば:

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);
}
于 2012-09-05T14:39:46.527 に答える
1

ACTION_BATTERY_CHANGED を使用する必要があると思います。これはスティッキーインテントであるため、ブロードキャスト レシーバーで直接監視する必要はありません。アクティビティから直接参照を取得できます。

Androidのドキュメントから:

これはスティッキー インテントであるため、BroadcastReceiver を登録する必要はありません。次のスニペットに示すように、レシーバーとして null を渡して registerReceiver を呼び出すだけで、現在のバッテリー ステータス インテントが返されます。

http://developer.android.com/training/monitoring-device-state/battery-monitoring.html

于 2013-05-04T11:06:03.527 に答える
0

BroadcastReceiverで必要なものは次のとおりです:http://developer.android.com/training/monitoring-device-state/battery-monitoring.html

于 2012-09-05T14:21:06.867 に答える