当 `/sys/class/power_supply/battery` 不可读时 Android NDK 中的电池状态

Battery status in Android NDK when `/sys/class/power_supply/battery` is not readable

我有一个 NDK 应用程序可以从 /sys/class/power_supply/battery 读取电池状态信息。这在大多数设备上都能正常工作。在某些设备上,该目录不可读。例如,在 NVIDIA Shield 上:

$ adb shell
shell@shieldtablet:/ $ ls /sys/class/power_supply/battery/
/sys/class/power_supply/battery/: Permission denied

在这些设备的 NDK 中是否有其他方法获取电池信息?

用于获取电池信息的 Java API 像往常一样工作,但这是针对 NDK 应用程序的,所以我想要一种仅使用 C++ 的方法。

我通过在 Java 中创建一个全局对象解决了这个问题,其中 BroadcastReceiver 侦听 ACTION_BATTERY_CHANGED 广播。它缓存值,我使用 JNI 从 C++ 查询它们。我很想知道一个更清洁的解决方案。