2.Android灯光系统_源码分析_电池灯

版权声明:本文为博主(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();

猜你喜欢

转载自blog.csdn.net/qq_33443989/article/details/77125687