【发布时间】:2016-03-30 11:33:16
【问题描述】:
我正在尝试通过服务获取电池电量。我成功升级了。但我有一个问题。这就是当我第一次尝试获取电池电量时,我得到 null。 但是当我在几秒钟后询问时,我得到了准确的水平。我不明白为什么会发生这种情况。
这是我获取电池电量的代码:-
String bLevel;
private String getBatteryLevel(){
BroadcastReceiver cBReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
context.unregisterReceiver(this);
int currentLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int currentScale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
int batteryLevel;
if (currentLevel >= 0 && currentScale > 0) {
batteryLevel = (currentLevel * 100) / currentScale;
bLevel = Integer.toString(batteryLevel) + " percent";
}
}
};
IntentFilter cIFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(cBReceiver, cIFilter);
return bLevel;
}
请查看代码。我不知道为什么当我第一次询问时,我的电池电量为 null。请帮忙
【问题讨论】:
-
我建议不要将 BroadcastReceiver 打包到方法中。
-
或者至少取消注册...
标签: java android intentfilter batterylevel android-broadcastreceiver