Android 背光流程小结
android背光控制小结,从上到下:
----android----
DisplayPowerController.java-->
DisplayPowerState.java:SCREEN_BRIGHTNESS-->setScreenBrightness-->scheduleScreenUpdate-->postScreenUpdateThreadSafe-->mScreenUpdateRunnable-->mTask-->
LightsService.java: -->setLightLocked-->setLight_native-->
----native----
com_android_server_LightsService.cpp:-->setLight_native-->hw_get_module-->get_device(module, LIGHT_ID_BACKLIGHT)-->
alsps/mediatek/hardware/liblight/lights.c
lights.c:-->HAL_MODULE_INFO_SYM-->lights_module_methods-->set_light_backlight-->write_int(LCD_FILE, brightness)-->
----kernel----
led-class.c:-->led_class_attrs-->led_brightness_store-->led_set_brightness-->brightness_set-->
leds.c:-->g_leds_data[i]->cdev.brightness_set = mt65xx_led_set-->
cust_leds.c:-->{"lcd-backlight", MT65XX_LED_MODE_CUST_BLS_PWM, (int)Cust_SetLcdBacklight,{0}}-->
----hardware----
ddp_bls.c:-->disp_bls_set_backlight-->DISP_REG_SET(DISP_REG_BLS_PWM_DUTY, mapped_level)-->...
一些注意的细节:
1、mTask线程负责定时管理背光,setScreenBrightness主动设置背光。
2、setLight_native调用jni本地方法。
3、通过hw_get_module匹配hw_module_t,native通过write_int操作背光文件,在这里跟kernel挂钩。
4、kernel里通过device_create建立背光设备,class_create建立背光文件节点,文件节点跟LCD_FILE一致。
5、leds_list加入各种背光设备,led_class_attrs的__ATTR是设备文件的属性(brightness文件,属性,_show(读),_store(写))。native写文件,最终调用的是_store写方法。
6、adb的echo操作文件修改背光,只是kernel层的,不影响android层的背光管理。
更多相关文章
- android WebView载入本地html及css文件
- Android 将文件保存到SD卡中
- 编译NotificationManagerService.java文件的方法
- Android studio gradle 无法获取 pom文件
- Android FTP客户端使用,快速上传文件
- Android N共享文件报错:android.os.FileUriExposedException
- build.gradle文件介绍,gradle版本对应
- android selector 的不能是空节点
- qt部署到android设备,很久没响应解决办法