1

我知道我可以注册一个BroadcastReceiverforACTION_BATTERY_LOW并且ACTION_BATTERY_OKAY当这个电池 LOW 状态改变时它会通知我的应用程序,但是我如何确定电池当前是LOW 还是 OKAY?

BatteryManager可能允许我获取当前的百分比和状态,但它似乎没有公开 LOW 的状态。

4

2 回答 2

1

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);
}
于 2021-05-20T11:46:17.537 回答
0

如果您想知道系统以多少百分比向您发送LOW状态,最好ACTION_BATTERY_LOW在清单中注册广播接收器并计算BatteryManager您收到LOW事件时的百分比,保存并稍后使用它来确定LOW基于您可以从中获得的数据BatteryManager

由于LOW广播不粘,我想这是唯一的方法。

我认为大多数设备LOW以 15% 的比例发送事件,所以这将是一个很好的起点。

于 2017-06-28T20:44:06.770 回答