我的目标是:当我调用某个函数时,我想获得确切的当前电池状态(电平、电压等)。
首先,我尝试在我的应用程序中执行此操作,如网站上所示。然后我发现实际上 ACTION_BATTERY_CHANGED 广播是粘性的,这意味着我得到的是上次广播的内容,而不是确切的当前值。
实际上,我已经查看了 android 源代码。对于电池接口,驱动程序具有读取电池内部寄存器的功能,这些寄存器包含当前soc(充电状态)、电压等。
所以我只是想知道系统如何以及何时发送粘性广播 ACTION_BATTERY_CHANGED?它是否定期发送(例如,每 10 秒它会读取电池中的寄存器并发送广播)?或者它是否基于其他标准发送(例如,soc 的变化,电压?但电压会以 mV 为单位频繁变化)?
为了实现我的目标,一种麻烦的方法是实现一个系统调用来调用驱动程序函数,然后重新编译 NDK 以使其在我的应用程序代码中可用。但我只想知道考虑到我上面提到的内容,我是否可以直接通过 ACTION_BATTERY_CHANGED 广播来做到这一点?重新注册广播有影响吗?