1.healthd
源码:\system\core\healthd
入口函数 healthd_main(),
最终调用 gBatteryMonitor->update(),在 BatteryMonitor.cpp 中获取电量相关参数,如电压,充电状态等
同时需要注意BatteryPropertiesRegistrar.cpp , framework向该类注册接口,等电量信息变更后通过该类通知framework
2. BatteryService
源码:\frameworks\base\services\core\java\com\android\server\BatteryService.java
首先在onStart调用 batteryPropertiesRegistrar.registerListener,就是向上面healthd注册回调接口
回调接口调用update(),最终调用processValuesLocked,处理以下:
a)保存电量信息
b)判断低电,电量为0且未充电将自动关机
c)判断电池温度,默认超过68度自动关机
d)发送充电广播ACTION_BATTERY_CHANGED,注意发送的是 broadcastStickyIntent
e)更新充电指示灯 mLed.updateLightsLocked()
3. SystemUI&Settings
根据ACTION_BATTERY_CHANGED搜索吧~~