asc*_*ied 3 linux android android-ndk sysfs
我正在尝试从 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
Run Code Online (Sandbox Code Playgroud)
类型=电池,适用于所有三个。例如:
$ cat /sys/class/power_supply/ds2784-fuelgauge/type
Battery
Run Code Online (Sandbox Code Playgroud)
在 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
Run Code Online (Sandbox Code Playgroud)
ds2784-fuelgauge/voltage_now似乎定期更新(例如,当我开始一项计算量大的任务时它会发生变化),但smb347-battery/voltage_now似乎已修复。当我比较ds2784-fuelgauge/current_now和时,我看到了类似的效果smb347-battery/current_now。
我的问题是:
编辑
voltage_now文件名中的错字在 Android 设备上,您可能有多个电池,例如 RTC 或其他外围设备的备用电池。您是否已经为所有 3 个 sysfs 条目找到了类型文件?对于所有 3 个你得到“电池”?
考虑到 Android 需要来自电池的几个参数(见下文),我可能猜测它们被拆分在您获得的 3 个 sysfs 文件中。
例如,电量计是硬件组件,它读取来自/流入电池的电流并计算剩余容量,因此从中读取容量文件应该会给你百分比,但电压可能是从另一个文件中读取的。
电池参数(即:/sys/class/power_supply/my_batt/status):
| 归档时间: |
|
| 查看次数: |
8743 次 |
| 最近记录: |