我知道我可以注册一个BroadcastReceiver
forACTION_BATTERY_LOW
并且ACTION_BATTERY_OKAY
当这个电池 LOW 状态改变时它会通知我的应用程序,但是我如何确定电池当前是LOW 还是 OKAY?
BatteryManager
可能允许我获取当前的百分比和状态,但它似乎没有公开 LOW 的状态。
我知道我可以注册一个BroadcastReceiver
forACTION_BATTERY_LOW
并且ACTION_BATTERY_OKAY
当这个电池 LOW 状态改变时它会通知我的应用程序,但是我如何确定电池当前是LOW 还是 OKAY?
BatteryManager
可能允许我获取当前的百分比和状态,但它似乎没有公开 LOW 的状态。
ACTION_BATTERY_CHANGED广播是一个粘性广播。其中一项附加功能是ACTION_BATTERY_LOW。
所以这个小方法应该做你需要的
private boolean isBattteryLow() {
IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryIntent = context.registerReceiver(null, filter);
return batteryIntent.getBooleanExtra(BatteryManager.EXTRA_BATTERY_LOW, false);
}
如果您想知道系统以多少百分比向您发送LOW
状态,最好ACTION_BATTERY_LOW
在清单中注册广播接收器并计算BatteryManager
您收到LOW
事件时的百分比,保存并稍后使用它来确定LOW
基于您可以从中获得的数据BatteryManager
。
由于LOW
广播不粘,我想这是唯一的方法。
我认为大多数设备LOW
以 15% 的比例发送事件,所以这将是一个很好的起点。