Android上的/sys/class/power_supply中有多个电池条目
我正在尝试从NDK应用程序读取电池信息。我知道实现这一点的唯一方法是读取值Android上的/sys/class/power_supply中有多个电池条目,android,linux,android-ndk,sysfs,Android,Linux,Android Ndk,Sysfs,我正在尝试从NDK应用程序读取电池信息。我知道实现这一点的唯一方法是读取值/sys/class/power\u supply。我的困难是我找到了多个“Battery”类型的条目,但我不知道该使用哪一个 在带有KitKat 4.4.4的Nexus 10上,我看到: $ ls /sys/class/power_supply ds2784-fuelgauge manta-battery smb347-battery # other non-battery entries 带类型=所有三个的电池。例如
/sys/class/power\u supply
。我的困难是我找到了多个“Battery”类型的条目,但我不知道该使用哪一个
在带有KitKat 4.4.4的Nexus 10上,我看到:
$ ls /sys/class/power_supply
ds2784-fuelgauge
manta-battery
smb347-battery
# other non-battery entries
带类型=所有三个的电池。例如:
$ cat /sys/class/power_supply/ds2784-fuelgauge/type
Battery
在AndroidBatteryManager
code中,他们只需迭代电池设备,并获取第一个具有他们想要的条目的设备()。然而,在我的Nexus10上,它们有不同的值。例如,对于ds2784燃油表/电压\u now
和smb347蓄电池/电压\u now
:
$ cat ds2784-fuelgauge/voltage_now
4153100
$ cat smb347-battery/voltage_now
4300000
ds2784 fuelgauge/voltage\u now
似乎定期更新(例如,当我开始一项繁重的计算任务时,它会发生变化),但smb347电池/电压\u now
似乎是固定的。当我比较ds2784 fuelgauge/current\u now
和smb347 battery/current\u now
时,我看到了类似的效果
我的问题是:
- 修复了
voltage\u中的打字错误
- 强调该类型=所有三种设备的电池
- 状态:充电、放电、未充电、已满、未知
- 健康(字符串):寒冷、死亡、良好、过热、过压、未指明的故障、未知
- 当前(int):当前时为1
- 容量(整数):97%为97%
- 现在的电压(紫外线)或电池电压(毫伏):4205000紫外线=4.205伏时为4205000
- 温度或电池温度(摄氏度的十分之一):30.5摄氏度时为305
- 技术(字符串):锂离子
- 几乎所有锂离子电池的最大/充电电压均为4.2V。
2015年,一些较新的锂聚合物电池的最大电压为4.35V,而不是4.2V。这是锂离子化学的结果(由于该领域的进步,电池电极的劣化被认为是可以接受的) - 当锂离子电池从100%充电到1%或0%充电时,电压变化很大。预期电压范围为3.0V至4.2V
- 所有锂电池都无法恢复,如果放电过多,可能会引发火灾。因此,使用锂电池的设备必须具有某种调节电路,这种电路还可以由软件控制,而不仅仅是硬件/固件。截止电压介于3.0V和3.6V之间。所用截止电压的选择取决于安全性和容量设计选择,尽管在过去的100mV内,电池放电时存储的电池能量非常低。功率曲线有点奇怪。见放电曲线(电压与剩余容量,以毫安时表示),如以下参考数据表中的曲线
- 因此,使用锂电池的现代设备必须使用燃油表之类的仪器来报告当前电压
(没有足够的声望点数)。另请参阅18650年的数据表,例如松下18650的数据表,松下是众多锂电池制造商之一,而特斯拉更愿意以行业设置的方式与之合作。volt可以作为容量吗?它永远不会改变,对吗。那是个打字错误。它们现在都是
voltage\u
,应该是“瞬时/瞬时值”(Hm)。我想说的是做更多的测试,看看哪些变化。我打赌fuelguage是其他一些参数,可以像你说的那样测量使用率,电池是实际值。测试测试!谢谢你的回复。是的,类型
文件包含所有三种设备的电池
(我将编辑问题以使其更清楚)。听起来燃油表可能就是我想要的。我会接受你的回答,因为你澄清了燃油表是什么,但除了它的符号链接名称之外,我看不出有什么办法将它与其他条目区分开来。我当前的实现使用了BatteryMonitor.cpp
中的方法:迭代所有电池并选择第一个电池