【问题标题】:Getting battery status from a service in Android从 Android 中的服务获取电池状态
【发布时间】:2012-09-05 14:12:09
【问题描述】:
我正在开发一个应用程序,我需要为此监控服务的剩余电池百分比。谁能告诉我该怎么做?我发现了一些示例代码,它们从活动而不是服务中获取电池状态。
谢谢。
【问题讨论】:
标签:
android
service
status
battery
【解决方案1】:
使用 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);
}
【解决方案2】:
有什么区别?
您应该能够在服务中注册电池事件的接收器,就像您注册活动一样。
例如:
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);
}