从Android中的服务获取电池状态

时间:2012-09-05 14:12:10

标签: android service status battery

我正在开发一款应用,我需要监控服务中的剩余电量百分比。谁能告诉我怎么做?我发现一些示例代码从活动中获取电池状态,而不是从服务中获取。

感谢。

4 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分: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);
}

答案 2 :(得分:0)

答案 3 :(得分:0)

我认为你必须使用ACTION_BATTERY_CHANGED。请注意,它是粘性意图,因此您无需直接在广播接收器中对其进行监控。您可以直接从活动中获取参考。

来自android文档:

因为它是一个粘性意图,你不需要注册一个BroadcastReceiver - 只需调用registerReceiver传入null作为接收器,如下一个片段所示,返回当前的电池状态意图。

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