如何确定电池最初是否低?

时间:2014-06-04 07:01:44

标签: android power-management batterylevel powermanager

我已注册接收活动中的ACTION_BATTERY_LOWACTION_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;同样。不确定真实的设备。

还有其他办法吗?

2 个答案:

答案 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