当前位置: 首页 > article >正文

Android 亮度调节

frameworks/base/packages/SystemUI/src/com/android/systemui/settings/BrightnessController.java
更新屏幕亮度值Settings.System.SCREEN_BRIGHTNESS
BrightnessController.java中有个onChanged事件,这个是更新 setBrightness(val)

   private void setBrightness(int brightness) {
        try {
            mPower.setTemporaryScreenBrightnessSettingOverride(brightness);
        } catch (RemoteException ex) {
        }
    }

frameworks/base/services/java/com/android/server/power/PowerManagerService.java

setTemporaryScreenBrightnessSettingOverrideInternal
            updatePowerStateLocked
                updateDisplayPowerStateLocked
                       mDisplayPowerController.requestPowerState

frameworks/base/services/java/com/android/server/power/DisplayPowerController.java

requestPowerState
      sendUpdatePowerStateLocked
              updatePowerState
                    setScreenOn
                         mPowerState.setScreenOn

/frameworks/base/services/java/com/android/server/power/DisplayPowerState.java

setScreenOn
     scheduleScreenUpdate
        postScreenUpdateThreadSafe
              mHandler.post(mScreenUpdateRunnable)
                     mPhotonicModulator.setState(mScreenOn, brightness)
                          AsyncTask.THREAD_POOL_EXECUTOR.execute(mTask)
                                 mBacklight.setBrightness
(mBacklight类是LightsService.Light)LightsService.Light

DisplayPowerState是和LightService交互的,LightService是和HAL层的lights.c或lights.cpp和内核交互

frameworks/base/services/java/com/android/server/LightsService.java

setBrightness

    setLightLocked

         setLight_native

/frameworks/base/services/jni/com_android_server_LightsService.cpp

setLight_native

  devices->lights[light]->set_light(devices->lights[light], &state);

接下来就HAL层的处理,每个产商有所差异,找到LIGHTS_HARDWARE_MODULE_ID的定义

/device/softwinner/t3-common/hardware/libhardware/lights/lights.c

open_lights

内核里面生成结点:/dev/disp,通过ioctl到内核中去设置PWM引脚的值

参考

https://blog.csdn.net/fightfightfight/article/details/83548710

https://blog.csdn.net/FightFightFight/article/details/81320519


http://www.kler.cn/a/418290.html

相关文章:

  • 【k8s深入理解之 Scheme 补充-1】理解 Scheme 中资源的注册以及 GVK 和 go 结构体的映射
  • ASP.NET Core 负载/压力测试
  • android shader gl_Position是几个分量
  • 基于深度学习的卷积神经网络十二生肖图像识别系统(PyQt5界面+数据集+训练代码)
  • 联合汽车电子嵌入式面试题及参考答案
  • pgsql指令
  • Unity3D UI 嵌套滚动视图
  • md5介绍及java实现
  • 增长比 C语言
  • 理解字母形状,从而获得含义
  • TypeScript核心语法(2)——基本用法
  • Midjourney Describe API 的对接和使用
  • Maven 常用命令
  • 计算机视觉:从核心算法到实际应用的全面解析
  • 【热门主题】000077 物联网智能项目:开启智能未来的钥匙
  • axios的认识与基本使用
  • ZYNQ详解
  • 通讯专题4.1——CAN通信之计算机网络与现场总线
  • 3x3矩阵,1x1矩阵,3X3零矩阵融合,矩阵乘法
  • 《操作系统 - 清华大学》6 -3:局部页面置换算法:最近最久未使用算法 (LRU, Least Recently Used)
  • docker快速部署kafka
  • Poetry 使用
  • 【maven-5】Maven 项目构建的生命周期:深入理解与应用
  • 偏差-方差权衡(Bias–Variance Tradeoff):理解监督学习中的核心问题
  • 新手SEO入门指南如何高效进行搜索引擎优化
  • ESLint CLI 深度解析:配置选项与高效工作流(5)