我正在尝试从 NDK 应用程序读取电池信息。我知道实现这一点的唯一方法是读出这些值/sys/class/power_supply
。我的困难是我找到了多个“电池”类型的条目,但我不知道该使用哪一个。
在带有 KitKat 4.4.4 的 Nexus 10 上,我看到:
$ ls /sys/class/power_supply
ds2784-fuelgauge
manta-battery
smb347-battery
# other non-battery entries
所有三个都使用 type=Battery。例如:
$ cat /sys/class/power_supply/ds2784-fuelgauge/type
Battery
在 AndroidBatteryManager
代码中,他们只是遍历电池设备并获取第一个具有所需条目的设备(http://androidxref.com/4.4.4_r1/xref/system/core/healthd/BatteryMonitor.cpp)。但是,在我的 Nexus 10 上,它们具有不同的值。例如,对于ds2784-fuelgauge/voltage_now
和smb347-battery/voltage_now
:
$ cat ds2784-fuelgauge/voltage_now
4153100
$ cat smb347-battery/voltage_now
4300000
ds2784-fuelgauge/voltage_now
似乎定期更新(例如,当我开始计算繁重的任务时它会改变),但smb347-battery/voltage_now
似乎是固定的。当我比较ds2784-fuelgauge/current_now
和时,我看到了类似的效果smb347-battery/current_now
。
我的问题是:
- 为什么这里有多个 type=battery 条目?
- 我如何以一般方式区分它们?
- 我应该使用哪一个?
编辑
voltage_now
修复了文件名中的错字- 强调所有三个设备的 type=Battery