我已注册接收活动中的ACTION_BATTERY_LOW
和ACTION_BATTERY_OKAY
,并根据此更改了某些行为。
但我想知道活动开始时的初始状态。目前我使用以下代码执行此操作:
Intent intent = registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 100);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100);
boolean batteryLow =
(status == BatteryManager.BATTERY_STATUS_DISCHARGING
|| status == BatteryManager.BATTERY_STATUS_NOT_CHARGING)
&& level * 100 / scale < 15;
这段代码太冗长,可能与android认为的低。例如,当我发出&#34; power ac off&#34;时,模拟器不会报告status==discharging
。命令到telnet。我必须发出&#34;电源状态放电&#34;同样。不确定真实的设备。
还有其他办法吗?
答案 0 :(得分:-1)
这就像我能做到的那样冗长
int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
return BatteryManager.BATTERY_STATUS_DISCHARGING && level / (float)scale < 15;
答案 1 :(得分:-1)
正如我所知,问题中的代码是最简单的。警告以15%的电池电量显示,并且此值无法通过公共API获得。当屏幕变暗时,还有10%的另一个等级。这些值是在构建期间定义的,也许某些制造商或Android版本会改变它。
另见this answer。