常见的亮灭屏流程分析
一 . 亮屏主要关键log
驱动按键时间
??-?? ??:??:??.??? <3>[14082.058160] (0)[70:pmic_thread]kpd: Power Key generate, pressed=1
上层按键时间
09-25 15:13:07.196667 929 1117 D PhoneWindowManager-interceptKeyBeforeQueueing: --->keyCode:26 down:true
上层开始唤醒
09-25 15:13:07.197996 929 1117 D PowerManagerNotifier: onWakeLockAcquired: flags=1, tag="PhoneWindowManager.mPowerKeyWakeLock", packageName=android, ownerUid=1000, ownerPid=929, workSource=null
09-25 15:13:07.202103 929 1117 D PowerManagerService: |----com.android.server.power.PowerManagerService.wakeUpNoUpdateLocked(PowerManagerService.java:1536)
09-25 15:13:07.202144 929 1117 D PowerManagerService: |----com.android.server.power.PowerManagerService.wakeUpInternal(PowerManagerService.java:1527)
09-25 15:13:07.202176 929 1117 D PowerManagerService: |----com.android.server.power.PowerManagerService.-wrap39(PowerManagerService.java)
09-25 15:13:07.202207 929 1117 D PowerManagerService: |----com.android.server.power.PowerManagerService$BinderService.wakeUp(PowerManagerService.java:4008)
09-25 15:13:07.202234 929 1117 D PowerManagerService: |----android.os.PowerManager.wakeUp(PowerManager.java:769)
09-25 15:13:07.202263 929 1117 D PowerManagerService: |----com.android.server.policy.PhoneWindowManager.wakeUp(PhoneWindowManager.java:7613)
09-25 15:13:07.202297 929 1117 D PowerManagerService: |----com.android.server.policy.PhoneWindowManager.wakeUpFromPowerKey(PhoneWindowManager.java:7599)
09-25 15:13:07.202326 929 1117 D PowerManagerService: |----com.android.server.policy.PhoneWindowManager.interceptPowerKeyDown(PhoneWindowManager.java:1246)
09-25 15:13:07.202356 929 1117 D PowerManagerService: |----com.android.server.policy.PhoneWindowManager.interceptKeyBeforeQueueing(PhoneWindowManager.java:6922)
09-25 15:13:07.202384 929 1117 D PowerManagerService: |----com.android.server.wm.InputMonitor.interceptKeyBeforeQueueing(InputMonitor.java:465)
09-25 15:13:07.202418 929 1117 D PowerManagerService: |----com.android.server.input.InputManagerService.interceptKeyBeforeQueueing(InputManagerService.java:1897)
09-25 15:13:07.202448 929 1117 I PowerManagerService: Waking up from sleep (uid 1000)...
开始unlock screen
09-25 15:13:07.221393 929 963 I DisplayPowerController: Blocking screen on until initial contents have been drawn.
开始设置auto-suspend的时间
09-25 15:13:07.362247 929 1396 D PowerManagerService: Setting HAL auto-suspend mode to false
09-25 15:13:07.362454 929 1396 D PowerManagerService: Setting HAL interactive mode to true
解锁时间
09-25 15:13:07.372362 929 963 I DisplayPowerController: Unblocked screen on after 151 ms
设置背光灯点亮
??-?? ??:??:??.??? <7>[14082.423208] (1)[1396:PhotonicModulat][name:leds&][LED]Set Backlight directly 44 at time 4296345559, mapping level is 44
??-?? ??:??:??.??? <7>[14082.424847] (1)[1396:PhotonicModulat][name:ddp_aal&]disp_aal_notify_backlight_changed: 177/1023
??-?? ??:??:??.??? <4>[14082.430442] (0)[508:AALServiceMain][PWM] disp_pwm_set_backlight_cmdq(id = 0x1, level_1024 = 149), old = 0
亮屏完成
09-25 15:13:07.380214 929 963 D DisplayPowerController: Finished business..
遇到的问题分析过程
按power按键后,13秒以后才会亮起
//上层唤醒
03-10 10:27:36.810765 1007 1060 I PowerManagerService: Waking up from sleep (uid 1000)...
//设置auto-suspend的动作
03-10 10:27:37.039599 1007 1140 D PowerManagerService: Setting HAL auto-suspend mode to false
03-10 10:27:49.775024 1007 1140 D PowerManagerService: Setting HAL interactive mode to true
//上层解锁
03-10 10:27:50.844962 1007 1060 I DisplayPowerController: Blocking screen on until initial contents have been drawn.
//设置背光点亮
03-10 10:27:50.109 <7>[64212.010491] (5)[1140:PhotonicModulat][name:leds&][LED][BL] Set Backlight directly T:64212.10,L:255 map:255
03-10 10:27:50.109 <7>[64212.010510] (5)[1140:PhotonicModulat][name:ddp_aal&]disp_aal_notify_backlight_changed: 1023/1023
//完成点亮屏幕
03-10 10:27:51.880013 1007 1060 D DisplayPowerController: Finished business...
初步分析如下,发现异常点,Setting HAL auto-suspend发现消耗了13s,这时候会打印出关键log
PowerManagerService-JNI: Excessive delay in autosuspend_disable() while turning screen on: 12735ms
继续分析:
发现这段时间内有14秒左右
<6>[64197.519864] (0)[1061:system_server]PM: suspend entry 2017-03-10 02:27:35.602021092 UTC
<3>[64198.293043] (1)[1061:system_server]battery resume NOT by pcm timer!!
<3>[64211.675581] (0)[1061:system_server]@bs=0@
<6>[64211.675625] (0)[1061:system_server]PM: suspend exit 2017-03-10 02:27:49.773928539 UTC
综上分析,问题点就在charger这块可能持锁时间太长.
http://192.168.10.10/#/c/153969/
二. 灭屏的主要关键log
上层按键的时间(自动灭屏无此log)
09-25 15:13:04.405504 929 1117 D PhoneWindowManager-interceptKeyBeforeQueueing: --->keyCode:26 down:true
上层开始执行灭屏
09-25 15:13:04.656024 929 1117 D PowerManagerService: |----com.android.server.power.PowerManagerService.goToSleepNoUpdateLocked(PowerManagerService.java:1610)
09-25 15:13:04.656052 929 1117 D PowerManagerService: |----com.android.server.power.PowerManagerService.goToSleepInternal(PowerManagerService.java:1599)
09-25 15:13:04.656075 929 1117 D PowerManagerService: |----com.android.server.power.PowerManagerService.-wrap13(PowerManagerService.java)
09-25 15:13:04.656113 929 1117 D PowerManagerService: |----com.android.server.power.PowerManagerService$BinderService.goToSleep(PowerManagerService.java:4042)
09-25 15:13:04.656136 929 1117 D PowerManagerService: |----android.os.PowerManager.goToSleep(PowerManager.java:731)
09-25 15:13:04.656158 929 1117 D PowerManagerService: |----com.android.server.policy.PhoneWindowManager.powerPress(PhoneWindowManager.java:1357)
09-25 15:13:04.656181 929 1117 D PowerManagerService: |----com.android.server.policy.PhoneWindowManager.interceptPowerKeyUp(PhoneWindowManager.java:1292)
09-25 15:13:04.656204 929 1117 D PowerManagerService: |----com.android.server.policy.PhoneWindowManager.interceptKeyBeforeQueueing(PhoneWindowManager.java:6933)
09-25 15:13:04.656226 929 1117 D PowerManagerService: |----com.android.server.wm.InputMonitor.interceptKeyBeforeQueueing(InputMonitor.java:465)
09-25 15:13:04.656248 929 1117 D PowerManagerService: |----com.android.server.input.InputManagerService.interceptKeyBeforeQueueing(InputManagerService.java:1897)
09-25 15:13:04.656270 929 1117 I PowerManagerService: Going to sleep due to power button (uid 1000)...
设置auto-suspend的状态
09-25 15:13:05.553522 929 1396 D PowerManagerService: Setting HAL interactive mode to false
09-25 15:13:05.553586 929 1396 D PowerManagerService: Setting HAL auto-suspend mode to true
更新当前屏幕的状态
09-25 15:13:04.656918 929 1117 D DisplayPowerController: requestPowerState: policy=OFF, useProximitySensor=false, screenBrightness=102, screenAutoBrightnessAdjustment=0.0, brightnessSetByUser=true, useAutoBrightness=true, blockScreenOn=false, lowPowerMode=false, boostScreenBrightness=false, dozeScreenBrightness=-1, dozeScreenState=UNKNOWN, useTwilight=false, waitForNegativeProximity=false, changed=true
09-25 15:13:04.661324 929 963 D DisplayPowerController: updatePowerState: policy=OFF, useProximitySensor=false, screenBrightness=102, screenAutoBrightnessAdjustment=0.0, brightnessSetByUser=true, useAutoBrightness=true, blockScreenOn=false, lowPowerMode=false, boostScreenBrightness=false, dozeScreenBrightness=-1, dozeScreenState=UNKNOWN, useTwilight=false, mWaitingForNegativeProximity=false, autoBrightnessAdjustmentChanged=false, mustNotify=true
09-25 15:13:05.200432 929 963 D DisplayPowerController: updatePowerState: policy=OFF, useProximitySensor=false, screenBrightness=102, screenAutoBrightnessAdjustment=0.0, brightnessSetByUser=true, useAutoBrightness=true, blockScreenOn=false, lowPowerMode=false, boostScreenBrightness=false, dozeScreenBrightness=-1, dozeScreenState=UNKNOWN, useTwilight=false, mWaitingForNegativeProximity=false, autoBrightnessAdjustmentChanged=false, mustNotify=true
09-25 15:13:05.554135 929 963 D DisplayPowerController: updatePowerState: policy=OFF, useProximitySensor=false, screenBrightness=102, screenAutoBrightnessAdjustment=0.0, brightnessSetByUser=true, useAutoBrightness=true, blockScreenOn=false, lowPowerMode=false, boostScreenBrightness=false, dozeScreenBrightness=-1, dozeScreenState=UNKNOWN, useTwilight=false, mWaitingForNegativeProximity=false, autoBrightnessAdjustmentChanged=false, mustNotify=true
驱动设置背光亮度
??-?? ??:??:??.??? <7>[14080.065349] (0)[1396:PhotonicModulat][name:leds&][LED]Set Backlight directly 0 at time 4296345323, mapping level is 0
灭屏完成
09-25 15:13:05.554253 929 963 D DisplayPowerController: Display ready!
09-25 15:13:05.554306 929 963 D DisplayPowerController: Finished business...
拨打电话的时候,马上出现灭屏
初步分析
拨打电话的时间
12-08 20:27:12.377449 885 921 I AT : AT< +ECPI: 1,133,0,0,1,0,"18317062682",161,"",16 (RIL_URC_READER, tid:0)
执行灭屏的时间
12-08 20:27:19.195634 993 1018 D PowerManagerService: |----com.android.server.power.PowerManagerService.goToSleepNoUpdateLocked(PowerManagerService.java:1565)
12-08 20:27:19.195767 993 1018 D PowerManagerService: |----com.android.server.power.PowerManagerService.updateWakefulnessLocked(PowerManagerService.java:2266)
12-08 20:27:19.195873 993 1018 D PowerManagerService: |----com.android.server.power.PowerManagerService.updatePowerStateLocked(PowerManagerService.java:1845)
12-08 20:27:19.195965 993 1018 D PowerManagerService: |----com.android.server.power.PowerManagerService.handleUserActivityTimeout(PowerManagerService.java:2205)
12-08 20:27:19.196052 993 1018 D PowerManagerService: |----com.android.server.power.PowerManagerService.-wrap18(PowerManagerService.java)
12-08 20:27:19.196141 993 1018 D PowerManagerService: |----com.android.server.power.PowerManagerService$PowerManagerHandler.handleMessage(PowerManagerService.java:3547)
12-08 20:27:19.196232 993 1018 D PowerManagerService: |----android.os.Handler.dispatchMessage(Handler.java:110)
12-08 20:27:19.196502 993 1018 D PowerManagerService: |----android.os.Looper.loop(Looper.java:203)
12-08 20:27:19.196621 993 1018 D PowerManagerService: |----android.os.HandlerThread.run(HandlerThread.java:61)
12-08 20:27:19.196707 993 1018 D PowerManagerService: |----com.android.server.ServiceThread.run(ServiceThread.java:46)
12-08 20:27:19.196788 993 1018 I PowerManagerService: Going to sleep due to screen timeout (uid 1000)...
设置auto-suspend的时间
12-08 20:27:20.206320 993 1278 D PowerManagerService: Setting HAL interactive mode to false
12-08 20:27:20.206363 993 1278 D PowerManagerService: Setting HAL auto-suspend mode to true
驱动设置灭屏
12-08 20:27:19.758 <7>[ 8556.395647] (0)[1278:PhotonicModulat][name:leds&][LED]Set Backlight directly 0 at time 4295792934, mapping level is 0
灭屏完成,以上log可以知道从接受开始灭屏的时间到完成灭屏,是没有问题
12-08 20:27:20.206830 993 1018 D DisplayPowerController: Display ready!
12-08 20:27:20.206856 993 1018 D DisplayPowerController: Finished business...
深入分析什么条件触发他灭屏的?
查看当前打电话开始整个屏幕显示的过程,可以发现一个奇怪的问题,为什么useProximitySensor一直为false.对比正常打电话,这里是一直ture状态
12-08 20:27:08.477400 993 1018 D DisplayPowerController: updatePowerState: policy=BRIGHT, useProximitySensor=false, screenBrightness=102, screenAutoBrightnessAdjustment=0.0, brightnessSetByUser=true, useAutoBrightness=false, blockScreenOn=false, lowPowerMode=false, boostScreenBrightness=false, dozeScreenBrightness=-1, dozeScreenState=UNKNOWN, useTwilight=false, mWaitingForNegativeProximity=false, autoBrightnessAdjustmentChanged=false, mustNotify=true
12-08 20:27:08.947930 993 1018 D DisplayPowerController: updatePowerState: policy=BRIGHT, useProximitySensor=false, screenBrightness=102, screenAutoBrightnessAdjustment=0.0, brightnessSetByUser=true, useAutoBrightness=false, blockScreenOn=false, lowPowerMode=false, boostScreenBrightness=false, dozeScreenBrightness=-1, dozeScreenState=UNKNOWN, useTwilight=false, mWaitingForNegativeProximity=false, autoBrightnessAdjustmentChanged=false, mustNotify=true
12-08 20:27:09.022917 993 1018 D DisplayPowerController: updatePowerState: policy=BRIGHT, useProximitySensor=false, screenBrightness=102, screenAutoBrightnessAdjustment=0.0, brightnessSetByUser=true, useAutoBrightness=false, blockScreenOn=false, lowPowerMode=false, boostScreenBrightness=false, dozeScreenBrightness=-1, dozeScreenState=UNKNOWN, useTwilight=false, mWaitingForNegativeProximity=false, autoBrightnessAdjustmentChanged=false, mustNotify=true
12-08 20:27:09.023881 993 1018 D DisplayPowerController: updatePowerState: policy=BRIGHT, useProximitySensor=false, screenBrightness=102, screenAutoBrightnessAdjustment=0.0, brightnessSetByUser=true, useAutoBrightness=false, blockScreenOn=false, lowPowerMode=false, boostScreenBrightness=false, dozeScreenBrightness=-1, dozeScreenState=UNKNOWN, useTwilight=false, mWaitingForNegativeProximity=false, autoBrightnessAdjustmentChanged=false, mustNotify=true
12-08 20:27:17.193356 993 1018 D DisplayPowerController: updatePowerState: policy=DIM, useProximitySensor=false, screenBrightness=102, screenAutoBrightnessAdjustment=0.0, brightnessSetByUser=true, useAutoBrightness=false, blockScreenOn=false, lowPowerMode=false, boostScreenBrightness=false, dozeScreenBrightness=-1, dozeScreenState=UNKNOWN, useTwilight=false, mWaitingForNegativeProximity=false, autoBrightnessAdjustmentChanged=false, mustNotify=true
12-08 20:27:17.657676 993 1018 D DisplayPowerController: updatePowerState: policy=DIM, useProximitySensor=false, screenBrightness=102, screenAutoBrightnessAdjustment=0.0, brightnessSetByUser=true, useAutoBrightness=false, blockScreenOn=false, lowPowerMode=false, boostScreenBrightness=false, dozeScreenBrightness=-1, dozeScreenState=UNKNOWN, useTwilight=false, mWaitingForNegativeProximity=false, autoBrightnessAdjustmentChanged=false, mustNotify=false
12-08 20:27:19.200712 993 1018 D DisplayPowerController: updatePowerState: policy=OFF, useProximitySensor=false, screenBrightness=102, screenAutoBrightnessAdjustment=0.0, brightnessSetByUser=true, useAutoBrightness=false, blockScreenOn=false, lowPowerMode=false, boostScreenBrightness=false, dozeScreenBrightness=-1, dozeScreenState=UNKNOWN, useTwilight=false, mWaitingForNegativeProximity=false, autoBrightnessAdjustmentChanged=false, mustNotify=true
12-08 20:27:19.755524 993 1018 D DisplayPowerController: updatePowerState: policy=OFF, useProximitySensor=false, screenBrightness=102, screenAutoBrightnessAdjustment=0.0, brightnessSetByUser=true, useAutoBrightness=false, blockScreenOn=false, lowPowerMode=false, boostScreenBrightness=false, dozeScreenBrightness=-1, dozeScreenState=UNKNOWN, useTwilight=false, mWaitingForNegativeProximity=false, autoBrightnessAdjustmentChanged=false, mustNotify=true
12-08 20:27:20.206754 993 1018 D DisplayPowerController: updatePowerState: policy=OFF, useProximitySensor=false, screenBrightness=102, screenAutoBrightnessAdjustment=0.0, brightnessSetByUser=true, useAutoBrightness=false, blockScreenOn=false, lowPowerMode=false, boostScreenBrightness=false, dozeScreenBrightness=-1, dozeScreenState=UNKNOWN, useTwilight=false, mWaitingForNegativeProximity=false, autoBrightnessAdjustmentChanged=false, mustNotify=true
查看知道返回是0参数,0代表靠近。ALS是Lightsensor PS是Psensor
12-08 20:27:14.133 <4>[ 8550.770608] (0)[2026:Binder:993_9]<ALS/PS> ps_delay 20000000 ns
12-08 20:27:19.822 <4>[ 8556.459917] (3)[1245:Binder:993_3]<ALS/PS> ps_delay 200000000 ns
12-08 20:27:19.879 <7>[ 8556.517378] (3)[466:AALServiceMain][name:ltr559&][ALS/PS] ltr559_obj als enable value = 0
和驱动沟通确认发现只报了靠近,未报远离,导致灭屏后,无法重新亮起了,驱动回复,校准下就行
常见的亮灭屏流程分析相关推荐
- Android Keyguard 亮灭屏流程分析
文章目录 概述 Keyguard 关键文件 Power 灭屏 超时灭屏 Power 亮屏 FAQ 亮屏慢 概述 Keyguard 锁屏流程: Keyguard 加载时机:一个是开机的时候:另一个是灭屏 ...
- Android 手机灭屏流程分析详解
参考地址:https://www.jianshu.com/p/9241f3a91095 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 1.前言 2.Pow ...
- qcom平台 LCD亮灭屏流程及LCD知识点总结
一.LK中亮屏流程 1.gcdb_display_init(),进行display初始化的起始地方: 2.oem_panel_select(),在这里去选择哪一款屏,也可以在这里添加新一款屏: 3.d ...
- android 亮灭屏流程
1. frameworks\base\core\java\android\hardware\display\DisplayManagerInternal.java 内部服务 frameworks\ba ...
- Android7.0 PowerManagerService亮灭屏分析(三)
在前面两部分已经对绘制windows与设置设备状态进行了详细讲解. 之后接着就该对亮度值进行设置, 实现亮屏动作了. 在DisplayPowerController中的animateScreenBri ...
- Android 系统(42)---Android7.0 PowerManagerService亮灭屏分析(三)
Android7.0 PowerManagerService亮灭屏分析(三) 在前面两部分已经对绘制windows与设置设备状态进行了详细讲解. 之后接着就该对亮度值进行设置, 实现亮屏动作了. 在D ...
- Android 亮屏流程分析
https://blog.csdn.net/FightFightFight/article/details/79808100 相关文章: [Android Framework] 8.1 PowerMa ...
- Android 8.1 PowerManagerService分析(四)——亮屏流程分析
欢迎大家关注我的掘金帐号 我会在那里定期更新最新版本的Android Framework源码分析! 相关文章: [Android Framework] 8.1 PowerManagerService分 ...
- Android手机亮屏流程分析
极力推荐Android 开发大总结文章:欢迎收藏程序员Android 力荐 ,Android 开发者需要的必备技能 注:文章转于网络,点击查看原文 PowerManagerService 之前系列文章 ...
最新文章
- 使用工作集(Working Set)整理项目
- [PHP] 现代化PHP之路:composer的安装和升级
- java仿聊天室项目总结_Java团队课程设计-socket聊天室(个人总结)
- 网站页首可关闭广告条
- MyBatis操作指南-与Spring集成(基于注解)
- 多对多的添加修改,显示,的逻辑步骤
- 2020大厂web前端面试都喜欢问这些
- linux的进程/线程/协程系列5:协程的发展复兴与实现现状
- php xingnengfenxi_php代码性能分析方法
- SSH应用之BBS之路-2、Hibernate配置
- 10岁女程序员,婉拒谷歌Offer,研发全球首款AI桌游,现在是一名CEO
- window.load和$(document).ready()事件
- windows 删除网络驱动器
- 文件后缀名怎么修改?文件不显示后缀名怎么办
- php mql web开发,自己动手开发多线程异步 MQL5 WebRequest
- matlab仿真低通滤波,Matlab 低通Butterworth滤波仿真m文件
- python出现无法定位序数于动态链接库ssleay32.dll的问题
- 企业微信集成外部APP
- 资源管理器清楚WPS网盘、百度网盘方法
- 微信小程序的推广思路与方法,详细思路解析
热门文章
- winform textbox换行
- Android实用代码3-转自农民伯伯
- XMLHttpRequest请求
- 【窗体控件】:TextBox和RichTextBox控件
- Question2Answer(Q2A)如何修改帖子的最大字数限制8000个字符?
- 同步/异步 阻塞/非阻塞区别
- STM32CubeMX HAL库和串口屏通信卡死问题解决
- java structs spring_采用spring+structs+hibanate框架开发javaWeb项目
- springmvc整合shiro做登陆权限控制,使用mongodb存储session
- vsftpd环境搭建