Android9.0手动亮度调节流程

前言

最近在改平台的亮度设置,顺便整理一下亮度调节的过程,使他人能方便理解亮度流程。

Kernel: v4.4.179
Device: rk3328
Platform Version: Android 9.0

流程如下

  1. frameworks/base/packages/SystemUI/src/com/android/systemui/settings/BrightnessController.java
    1

  2. DisplayManager.java

     public void setTemporaryBrightness(int brightness) {
    		 mGlobal.setTemporaryBrightness(brightness);
     }
    
  3. DisplayManagerGlobal.java

     public void setTemporaryBrightness(int brightness) {
     	try {
         	mDm.setTemporaryBrightness(brightness);
     	} catch (RemoteException ex) {
         	throw ex.rethrowFromSystemServer();
     	}
     }
    
  4. DisplayManagerService.java

     public void setTemporaryBrightness(int brightness) {
     ...
       	mDisplayPowerController.setTemporaryBrightness(brightness);
     ...
     }
    
  5. DisplayPowerController.java

     public void setTemporaryBrightness(int brightness) {
     	Message msg = mHandler.obtainMessage(MSG_SET_TEMPORARY_BRIGHTNESS,
             brightness, 0 /*unused*/);
     		msg.sendToTarget();
     }
     ...
     private void updatePowerState() {
     	//此方法比较长,里面有大量的判断,下面只写关键语句
     	...
     	animateScreenBrightness(brightness, 0);
     	...
     }
     ...
     private void animateScreenBrightness(int target, int rate) {
     	//这一句就是关键的设置语句
     	if (mScreenBrightnessRampAnimator.animateTo(target, rate)) {
      	}
     }
    
  6. 下面的就不太好跟了,直接贴图 RampAnimator.java
    1

  7. DisplayPowerState.java
    1

     setScreenBrightness(int brightness){...}
     scheduleScreenUpdate() {...}
     postScreenUpdateThreadSafe(){...}
     Runnable mScreenUpdateRunnable = new Runnable() {
     	...
     	mPhotonicModulator.setState(mScreenState, brightness)
     	...
     }
    

    x
    1

  8. 又调回到了DisplayManagerService.java
    5
    1

  9. LocalDisplayAdapter.java
    1
    y

  10. LightsService.java
    h
    1

  11. com_android_server_lights_LightsService.cpp
    n

后记

在这个之后的就是调用hal层的.so库, 根据不同厂商、不同Anroid版本可能实现有所不同。

转载请注明出处:http://www.wolfnx.com/2020/03/16/Brightness-Set-Stream

作者 : wolfnx
邮箱 : wolfnx@outlook.com
邮箱2 : lostnx@gmail.com

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Android 9.0系统的U-Boot Logo加载流程如下: 首先,当设备上电时,启动引导加载程序(Bootloader)会运行。U-Boot作为一个常用的开源Bootloader,被广泛用于Android设备。然后,U-Boot开始执行它的初始化代码,包括初始化硬件、加载环境变量和配置等。 接下来,U-Boot开始加载Logo图像。在Android 9.0中,U-Boot会在启动过程的早期加载Logo图像,并在屏幕上显示。为了加载Logo图像,U-Boot需要的一些文件和配置如下: 1. Logo图像文件:通常是一个BMP格式的图片文件,作为设备启动时显示的Logo图像。这个文件会包含Logo图像的像素数据和相关的图像信息。 2. U-Boot配置文件:U-Boot需要通过一个配置文件来指定Logo图像的位置和属性。这个配置文件通常存储在设备的存储器中,如NAND Flash或eMMC闪存中。 3. 屏幕显示驱动:U-Boot还需要适配设备的屏幕显示驱动,以确保Logo图像可以正确显示在设备屏幕上。这包括配置屏幕分辨率、颜色深度等参数。 一旦U-Boot完成初始化和加载Logo图像所需的文件和配置,它会通过屏幕显示驱动将Logo图像显示在设备的屏幕上。Logo图像会持续显示一段时间,直到系统完成启动过程,然后才会被系统界面替换。 总结起来,Android 9.0的U-Boot Logo加载流程主要包括启动引导加载程序的初始化、配置加载、图像文件加载和屏幕显示等步骤。这样做的目的是为了在设备启动过程中提供一个包含品牌标识或其他相关信息的界面,以增强用户体验和品牌识别。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值