NDK アプリからバッテリー情報を読み取ろうとしています。これを達成する唯一の方法は、値を読み取ることです/sys/class/power_supply
。問題は、タイプが「Battery」のエントリが複数見つかり、どれを使用すればよいかわからないことです。
KitKat 4.4.4 を搭載した Nexus 10 では、次のように表示されます。
$ ls /sys/class/power_supply
ds2784-fuelgauge
manta-battery
smb347-battery
# other non-battery entries
3 つすべてに 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
ファイル名の誤字を修正- 3 つのデバイスすべてで type=Battery であることを強調する