赞
踩
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
https://mp.csdn.net/mdeditor/99670972
1.1 主机开机,在启动SystemServer进程时,会启动电源和背光等相关服务;
启动PMS服务之后,里面调用AMS的initPowerManager,完成初始化设定。
1.2 主机开启启动引导服务之后,会继续启动系统核心服务,如LightServuce、BatteryService;
1.3 启动PMS服务之后,最终会执行SystemReady(),获取LocalService,并从settings数据库中读取默认的背光亮度值。
1.3.1 获取相关服务对象,用于控制向底层发送上层设置的背光参数值;
1.3.2 从framework/base/core目录下的资源文件中,获取系统默认的背光亮度值,其中包括最大和最小默认值。
1.4 获取本地LightService对象mLightsManager,以及底层需要控制的背光类型。其中在SystemReady()当中,会初始化settingsObserver,用于监听数据库当中背光亮度值的改变。
1.5 其中mSettingsObserver会监听数据库当中当前亮度的背光值。当数据库当中的背光亮度值改变之后,都会回调handleSettingsChangedLocked(),最终update电源状态;
1.6 执行initPowerManagerment()接口,并传递相应的参数。
1.7 DisplayManagerInternal为抽象类,必须要有子类去继承实现它定义的接口;
1.7.1 在初始化过程中,创建mDisplayPowerController对象,该对象主要传递从PMS下传的request对象,该对象包含了此时上层设置的背光亮度值;
1.7.2 其中requestPowerState接口主要提供给PMS调用,当电源状态改变之后,PMS最终会调用该接口,向MCU发送对于的spi消息,进而控制背光亮度;
至此,主机开启服务流程到此结束,主要初始化相关参数,搭建背光调节整体框架。
1、当在原生设置界面点击亮度调节按钮,或滑动背光调节slider时,上层应用会设置数据库中的亮度背光值。
2、当数据库当中的背光亮度值改变之后,最终会在PMS当中注册的SettingsObserver当中监听到该变化。
3、updateSettingsLocked()主要从数据库中读取当前背光的亮度值;获取当前的亮度模式(自动or手动); 将获取之后的亮度值与之前的的做对比,判读当前的亮度值是否发送改变。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。