自动亮度

news/2024/11/17 4:26:00/

 

一.自动亮度流程图:

主要的过程就是通过监听light sensor数据,得到对应的Lux值,再通过配置的"lux-亮度关系"表计算出当前的亮度,然后设置亮度值。

sensor改变设置自动亮度:

mScreenAutoBrightness

updateAutoBrightness:705, AutomaticBrightnessController (com.android.server.display)
updateAmbientLux:665, AutomaticBrightnessController (com.android.server.display)
handleLightSensorEvent:443, AutomaticBrightnessController (com.android.server.display)
access$500:45, AutomaticBrightnessController (com.android.server.display)
onSensorChanged:806, AutomaticBrightnessController$1 (com.android.server.display)
dispatchSensorEvent:835, SystemSensorManager$SensorEventQueue (android.hardware)
nativePollOnce:-1, MessageQueue (android.os)
next:326, MessageQueue (android.os)
loop:165, Looper (android.os)
run:65, HandlerThread (android.os)
run:44, ServiceThread (com.android.server)

AutomaticBrightnessController->onSensorChanged监听亮度变化

设置亮度方法:

com/android/server/display/LocalDisplayAdapter.java

                    private void setDisplayBrightness(int brightness) {if (DEBUG) {Slog.d(TAG, "setDisplayBrightness("+ "id=" + displayId + ", brightness=" + brightness + ")");}Trace.traceBegin(Trace.TRACE_TAG_POWER, "setDisplayBrightness("+ "id=" + displayId + ", brightness=" + brightness + ")");try {mBacklight.setBrightness(brightness);Trace.traceCounter(Trace.TRACE_TAG_POWER,"ScreenBrightness", brightness);} finally {Trace.traceEnd(Trace.TRACE_TAG_POWER);}}

mBacklight.setBrightness(brightness);

 

log:

 

logcat -s AutomaticBrightnessController01-10 20:23:17.782 1534 1592 D AutomaticBrightnessController: updateAutoBrightness: mScreenAutoBrightness=7, newScreenAutoBrightness=204701-10 20:23:18.984 1534 1592 D AutomaticBrightnessController: updateAutoBrightness: mScreenAutoBrightness=2047, newScreenAutoBrightness=58301-10 20:23:19.846 1534 1592 D AutomaticBrightnessController: updateAutoBrightness: mScreenAutoBrightness=583, newScreenAutoBrightness=19501-10 20:23:20.488 1534 1592 D AutomaticBrightnessController: updateAutoBrightness: mScreenAutoBrightness=195, newScreenAutoBrightness=1001-10 20:23:21.313 1534 1592 D AutomaticBrightnessController: updateAutoBrightness: mScreenAutoBrightness=10, newScreenAutoBrightness=165401-10 20:23:22.176 1534 1592 D AutomaticBrightnessController: updateAutoBrightness: mScreenAutoBrightness=1654, newScreenAutoBrightness=166401-10 20:23:50.023 1534 1592 D AutomaticBrightnessController: updateAutoBrightness: mScreenAutoBrightness=-1, newScreenAutoBrightness=176501-10 20:23:50.715 1534 1592 D AutomaticBrightnessController: updateAutoBrightness: mScreenAutoBrightness=1765, newScreenAutoBrightness=1716

 

 

未完。。。。

 

 


http://www.ppmy.cn/news/451216.html

相关文章

Android亮度自动调节

最近在做人脸识别项目。在抓取人脸时,发现了很多问题。其中旋转角度和光线问题最令人抓狂。 Camera拍摄照片可能存在0度/90度/180度/270度的(右侧)旋转,不同设备不同。例如,小米3w,0度;小米8&a…

自动调节安卓亮度

转自吴小龙公众号 下拉状态栏有个亮度的进度条,如果开启了亮度自动调节开关,会随着周围光线变化,这个进度条也会随着变化,接下来就是看看这个功能是如何实现的。 源码版本 基于 Android 9.0 分析。 BrightnessDialog&#xff…

android自动调节屏幕亮度自动调节流程解析

屏幕亮度自动调节: 主要是从Sensor分析之中分离出来分析LIGHT 光线感应器,因此就分析一下自动调节屏幕亮度(手机随着光线的强度自我调节,也就是在亮的光线下屏幕自动调亮一些,暗的时候就自动调暗一些,省得…

Android11 亮度自动调节

关键代码在frameworks/base/services/core/java/com/android/server/display BrightnessMappingStrategy.java AutomaticBrightnessController.java DisplayPowerController.java 这三个 AutomaticBrightnessController.java private void updateAutoBrightness(boolean se…

Win10关闭自动调节亮度

Win10关闭自动调节亮度问题 最近自己的笔记本电脑屏幕亮度总是自动调节,尤其是打开比较暗的应用,屏幕亮度也随之变暗了,让人很难受。解决方法如下 方法 看了很多解决方法。大致有这几种。 简单粗暴:拔了电源线再插上&#xff…

Win10关闭自动调节亮度问题

Win10关闭自动调节亮度问题 笔记本总是有个亮度自动调节,打开较暗的页面后就会慢慢地自动变暗,眼睛很难受。不知道是第多少次忍不住上网查这个问题了,最终用下面的最后一个方法成功解决。心情瞬间舒畅! 方法 看了很多解决方法。…

亮度调节之自动调节

参考 https://blog.csdn.net/FightFightFight/article/details/83626332 自动调节和手动调节的分叉口在DisplayPowerController中的updatePowerState()方法处,这里先对自动调节控制器进行配置,然后若处于自动调节模式,那brightness就从自动调…

2306d的闭包问题

原文 首先,D的闭包是个好主意.我使用了C的成员函数指针;它们在语法上很糟糕,但概念很好,而闭包更好. D的闭包有些问题,有些是明显错误,有些是不应该不在语言中的改进. 不能调用某些闭包 这很奇怪,但这是真的. 一个问题是常和不变目前没有扩展到闭包环境.要求常和不变的传递性…