java亮屏_安卓从入门到进阶第九章(自动亮屏)

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:28   1280   0

654522a6a84c876e79a08a7f01f71be8.png

安卓从入门到进阶第六章(dumpsys初探)

我希望文章是给出一个思路,让你能够跟着这个,找到框架,然后自行分析,总结,得到知识。

阅读代码,是需要长时间的训练,从问题出发,就跟从项目出发一样,在实战当中,倒逼自己提升,思考。

这一章分享一个小知识,关于自动亮屏的定位策略。

默认的配置值在

frameworksbasepackagesSettingsProvidersrccomandroidproviderssettings

文件

DatabaseHelper.java

loadBooleanSetting(stmt, Settings.System.SCREEN_BRIGHTNESS_MODE,

R.bool.def_screen_brightness_automatic_mode);

这里配置值位置:

frameworksbasepackagesSettingsProviderresvalues

defaults.xml

配置着默认值:

true

这样子我们就知道了,代码中检索使用这个

SCREEN_BRIGHTNESS_MODE信息了。

我们可以在设置和下拉状态栏,只需要将设置值传入系统即可,后续的动作都在系统中处理。检索这个 SCREEN_BRIGHTNESS_MODE,会找到整个的关联。

具体的文件为:

frameworksbaseservicescorejavacomandroidserverdisplay

AutomaticBrightnessController.java(监听光感传感器,在变化后响应)

4f6e29f3d161896a40da2254febb90f1.png

DisplayPowerController.java(这里贴一段关键的逻辑,自动亮屏获取值,然后返回brightness,然后设置下去。)

387cf16b2e70dcbac303b02bd6f7639f.png

这里直接就会走到设置屏幕亮度的。整个上层只是设置开关,整体逻辑都是驱动和服务处理。如果需要分析这里的故障:

编译版本时候,需要开启AutomaticBrightnessController.java 中的

private static final boolean DEBUG = false;

private static final boolean DEBUG_PRETEND_LIGHT_SENSOR_ABSENT = false;

改成

private static final boolean DEBUG = true;

private static final boolean DEBUG_PRETEND_LIGHT_SENSOR_ABSENT =true;

再将DisplayPowerController.java

private static final boolean DEBUG = false;

private static final boolean DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT = false;

改成

private static final boolean DEBUG = true;

private static final boolean DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT = true;

整体的代码流程为:自动亮屏开启后,AutomaticBrightnessController会收到变化回调,在回调后,触发handleLightSensorEvent。

随后会调用到DisplayPowerController里面,从AutomaticBrightnessController.config进行更新,然后获取最新的亮度值,赋值到brightness=getAutomaticScreenBrightness,然后动态更新:

27c654a569da48054f7f0248c4e0f207.png

如果你可以调试,那就直接在这里下断点,分析就好了。

具体调试,参考 安卓从入门到进阶第四章(调试方法),如果你对这块知识感兴趣,记得实战,跟着这个框架,进行阅读,分析。

关于上一章遗留的问题,下一章进行讲解。也就是 系统不断的弹出一个界面,我想知道是谁拉起来的,该怎么分析呢?

我们下一节来讲这个,具体会说一些关于binder的知识(忽略细节,直接关注核心),可以先看看这个文章( 文中的zygote拼错了,不要在意)

安卓从入门到进阶第二篇(框架流程)

后台回复 精华获取去年一年的精彩 PDF。

推荐你读:

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP