我正在检查电池是否已达到临界水平。
当电池在任一方向超过低电量阈值时,Android 会向您的应用发送一个意图。但这仅在您的应用程序运行时超过阈值时才有效(意图不是粘性的,因此它不会徘徊)。因此,如果用户打开应用程序时它很低,那么您就不走运(或至少是信息)。
还有一个粘性意图 ACTION_BATTERY_CHANGED,其中包含有关电池电量的信息和用于计算百分比的比例,这很棒。但是,我一直无法找到包含低电量阈值的系统变量(它显然因设备而异)。
进行搜索,我发现:当 android 触发 ACTION_BATTERY_LOW时,Android 系统代码的源列表,它使用系统变量 com.android.internal.R.integer.config_lowBatteryWarningLevel。但是,我自己无法访问这个变量(我猜它是受保护的)。
我想有一个合理的标准来比较我的电池百分比,所以我知道何时关闭电池密集型功能。就这些。
这是我的代码:
private BroadcastReceiver powerListener = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
int batteryLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
int batteryScale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 1);
int batteryPercentLeft = (batteryLevel * 100) / batteryScale;
if (batteryPercentLeft <= com.android.internal.R.integer.config_lowBatteryWarningLevel) {
_thread.onBatteryStateReceived(DataModel.BatteryState.LOW);
}
}
};
我收到系统变量的编译错误。有替代方案吗?看起来这应该是一件简单的事情。我只想匹配系统行为,没什么特别的。