我发现如果你在广播接收器中使用getIntExtra(“电压”,-1)来监听ACTION_BATTERY_CHANGED。它给你mV。我实际上有两个问题。
1.有没有人知道我可以在任何时间点获取电压而不依赖于我的广播接收器的最新更新?
2.有谁知道这个值是否足够可靠用于测量一段时间内的电池消耗?
答案 0 :(得分:1)
我可以回答问题2和你头衔中的问题 - 大多数移动设备都使用锂离子电池,电池的原始电压与剩余容量有很大的非线性关系(即充电/放电%)
看看graph here显示锂离子电池电压与剩余容量的关系。您可以看到,从电池充满电量到电池电压大约保持不变(略微下降趋势)约10%的容量然后急剧下降。
@ChrisStratton在评论中指出该图表不适用于现代设备,并表示它们实质上是不同的,可能更容易从电压推断出充电状态。不幸的是,我找不到现代手机电池类似图表的链接。但是,可以看出,开路电压(OCV-SOC)的充电状态仍为active academic research话题。关键在于使用电压估算充电状态并非易事。
答案 1 :(得分:0)
Android制造商负责在他们的Android版本ROM上实施他们正在使用的电池的电池放电模型,稍后Android SDK将使用here。 您也可以使用
$ adb shell dumpsys batterystats
1 - 我认为广播是获得它的唯一途径。有些人提到你在/ sys / class / power_supply / battery / batt_current中读取文件,但并非所有Android手机都有。
2 - 仅基于难以计算电池消耗的电压,它不是线性关系,而是电池与电池的不同。