版权声明:本文为博主(Tower)自学笔记,欢迎转载! :-) https://blog.csdn.net/qq_33443989/article/details/77125687
1>. Android灯光系统-电池灯
1<. 相关
lights.h : #define LIGHT_ID_BATTERY “battery”
BatteryService.java : mBatteryLight = Led.led.lights.getLight(LightsManager.LIGHT_ID_BATTERY); //实现获得该服务
BatteryService.java : updateLightsLocked() //实现的控制
2<. 详细分析updateLightsLocked()
1<. 先自己推测电池灯的使用过程
1<. App0:读取驱动程序,当驱动检测到电池事件发生,唤醒App0 , 使用 open, read, write 访问电池电量
2<. App1, 2, 3: 注册通知响应函数
3<. App0: 发出通知
4<. App 1, 2, 3: 执行对应的函数
2<. 查看相关的代码:
1<. 设置监听器:
batteryPropertiesRegistrar.registerListener(new BatteryListener());
2<. 当电池属性被改变时。调用监听函数
batteryPropertiesChanged()
BatteryService.this.update(props);
...
sendIntentLocked(); //
final Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED);
...
mLed.updateLightsLocked(); //显然对于电池灯调用只是顺便的
3<. 消息会发给谁?
1<. PowerManagerService.java
PowerManagerService.systemReady()
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
mContext.registerReceiver(new BatteryReceiver(), filter, null, mHandler);
onReceive()
handleBatteryStateChangedLocked();
updatePowerStateLocked();