如何判断电池电量最初是不是低?

Posted

技术标签:

【中文标题】如何判断电池电量最初是不是低?【英文标题】:How to determine whether battery is low intially?如何判断电池电量最初是否低? 【发布时间】:2014-06-04 07:01:43 【问题描述】:

我在一个活动中注册接收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 认为的低级不同。例如,当我向 telnet 发出“power ac off”命令时,模拟器不会报告 status==discharging。我也必须发出“电源状态放电”。不确定真实设备。

还有其他方法吗?

【问题讨论】:

我想有一个全局广播接收器,它会修改静态变量,我可以在任何地方读取。但是应用启动后问题依然存在。 【参考方案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;

【讨论】:

我以一票否决的方式回报了你的青睐......这是应得的【参考方案2】:

正如我所发现的,问题中的代码是最简单的代码。警告显示在 15% 的电池电量,并且此值无法通过公共 API 获得。当屏幕变暗时,还有另一个 10% 的水平。这些值是在构建时定义的,可能某些制造商或 android 版本会更改它。

另见this answer。

【讨论】:

你在开玩笑吗,奥利夫?这些是我的回答中的链接......你是怎么发现的?难以置信。 你是对的,但你的答案仍然不正确,我会在那里评论。我想写一个简洁正确的答案。 哦,对了,让我们从其他人那里获取所有信息并编写自己的“正确精确”答案,以看起来更好。这是不可接受的行为。

以上是关于如何判断电池电量最初是不是低?的主要内容,如果未能解决你的问题,请参考以下文章

一开广播汽车电量低

电池电量低/正常时禁用/启用BroadcastReceiver

js控制电池

android6.0系统Healthd分析及低电量自动关机流程

VIVO手机怎么打开低电量提醒?

app耗电优化之一 根据电池情况做任务安排