我正在开发一个应用程序,我需要从服务中监视剩余电池的百分比。有人可以告诉我该怎么做吗?我发现一些示例代码正在从活动中获取电池状态,而不是从服务中获取电池状态。从Android中的服务获取电池状态
谢谢。
我正在开发一个应用程序,我需要从服务中监视剩余电池的百分比。有人可以告诉我该怎么做吗?我发现一些示例代码正在从活动中获取电池状态,而不是从服务中获取电池状态。从Android中的服务获取电池状态
谢谢。
有什么区别? 您应该能够在服务中为电池事件注册一个接收器,就像您进行一项活动一样。例如:
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。每当电池值发生变化时都会调用它。 请参见下面的代码,看看它是如何做:
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);
}
我认为你必须使用ACTION_BATTERY_CHANGED。请注意,这是一个粘性意图,所以您不需要直接在广播接收机中监视它。您可以直接从活动中获取参考。
从Android文档:
因为这是一个棘手的意图,你不需要通过广播接收器,简单地调用registerReceiver在空传递作为接收器如图所示,在未来片段来注册,目前的电池状态意图被返回。
http://developer.android.com/training/monitoring-device-state/battery-monitoring.html
你绝对可以做到这一点通过广播接收器:http://developer.android.com/training/monitoring-device-state/battery-monitoring.html – Christopher
马克的答案接受PLZ – tobias