电池电压是否直接对应其level/percentage?
Does battery voltage directly correspond to its level/percentage?
我发现如果你在监听 ACTION_BATTERY_CHANGED 的广播接收器中使用 getIntExtra("voltage", -1)。它给你mV。其实我有两个问题。
1. 有谁知道我可以在不依赖广播接收器的最新更新的情况下随时获取电压的方法吗?
2. 有谁知道这个值是否足够可靠,可以用来测量一段时间内的电池消耗?
我可以回答问题 2 和您标题中的问题 - 大多数移动设备使用锂离子电池,电池的原始电压与剩余容量有非常 non-linear 的关系(即 %充电/放电)。
看看 graph here 显示 Li-ion 电池电压与剩余容量的关系。可以看到从充满到电池10%左右的电量,电压大致保持不变(略有下降趋势),然后急剧下降。
@ChrisStratton 在评论中指出该图不适用于现代设备,并表示它们有很大不同,可能更容易从电压推断充电状态。不幸的是,我找不到 link 现代移动 phone 电池的类似图表。但是,可以看出,根据开路电压 (OCV-SOC) 对充电状态进行建模仍然是一个 active academic research 主题。
使用电压估计充电状态的观点仍然成立non-trivial。
Android 制造商负责在他们的 Android 版本上实现他们正在使用的电池的电池放电模型的 ROM,Android SDK 稍后将使用它,请参阅here。
您也可以使用
$ adb shell dumpsys batterystats
1 - 我认为广播是获得它的唯一途径。有人提到您可以在 /sys/class/power_supply/battery/batt_current 阅读该文件,但并非所有 android 手机都有。
2 - 仅根据电压很难计算电池消耗,它不是线性关系,并且因电池而异。
我发现如果你在监听 ACTION_BATTERY_CHANGED 的广播接收器中使用 getIntExtra("voltage", -1)。它给你mV。其实我有两个问题。
1. 有谁知道我可以在不依赖广播接收器的最新更新的情况下随时获取电压的方法吗?
2. 有谁知道这个值是否足够可靠,可以用来测量一段时间内的电池消耗?
我可以回答问题 2 和您标题中的问题 - 大多数移动设备使用锂离子电池,电池的原始电压与剩余容量有非常 non-linear 的关系(即 %充电/放电)。
看看 graph here 显示 Li-ion 电池电压与剩余容量的关系。可以看到从充满到电池10%左右的电量,电压大致保持不变(略有下降趋势),然后急剧下降。
@ChrisStratton 在评论中指出该图不适用于现代设备,并表示它们有很大不同,可能更容易从电压推断充电状态。不幸的是,我找不到 link 现代移动 phone 电池的类似图表。但是,可以看出,根据开路电压 (OCV-SOC) 对充电状态进行建模仍然是一个 active academic research 主题。
使用电压估计充电状态的观点仍然成立non-trivial。
Android 制造商负责在他们的 Android 版本上实现他们正在使用的电池的电池放电模型的 ROM,Android SDK 稍后将使用它,请参阅here。 您也可以使用
$ adb shell dumpsys batterystats
1 - 我认为广播是获得它的唯一途径。有人提到您可以在 /sys/class/power_supply/battery/batt_current 阅读该文件,但并非所有 android 手机都有。
2 - 仅根据电压很难计算电池消耗,它不是线性关系,并且因电池而异。