Android10.0 按电源键灭屏问题分析

MainLog日志分析:

owner模式不切多用户下:

按电源键
10-26 00:02:25.599  1121  2438 D WindowManager: KeyEvent:26
10-26 00:02:25.826  1121  2438 D WindowManager: KeyEvent:26
开始调用休眠流程
10-26 00:02:25.830  1121  2438 I PowerManagerService: Going to sleep due to power_button (uid 1000)...
半亮当前值-1,半亮状态未知。
10-26 00:02:25.845  1121  2438 D DisplayPowerController: requestPowerState: policy=OFF, useProximitySensor=false, screenBrightnessOverride=-1, useAutoBrightness=false, screenAutoBrightnessAdjustmentOverride=NaN, screenLowPowerBrightnessFactor=1.0, blockScreenOn=false, lowPowerMode=false, boostScreenBrightness=false, 
dozeScreenBrightness=-1, dozeScreenState=UNKNOWN, waitForNegativeProximity=false
休眠流程
10-26 00:02:25.846  2533  3118 D KeyguardViewMediator: onStartedGoingToSleep(2)
10-26 00:02:25.854  2533  3118 D KeyguardViewMediator: notifyStartedGoingToSleep
10-26 00:02:25.855  2533  2533 D James   : handleStartedGoingToSleep!!
10-26 00:02:25.868  2533  2533 D James   : recordGoingToSleepTime mCurrentState = 18
10-26 00:02:25.868  2533  2533 D KeyguardViewMediator: handleNotifyStartedGoingToSleep
10-26 00:02:26.368  1121  2219 I DisplayPowerController: Blocking screen off
10-26 00:02:26.369  1121  2219 I DisplayPowerController: Unblocked screen off after 1 ms
通知灭屏
10-26 00:02:26.372  2533  3012 D KeyguardViewMediator: notifyScreenTurnedOff
10-26 00:02:26.373  2533  2533 D KeyguardViewMediator: handleNotifyScreenTurnedOff
亮屏到灭屏:亮度值为0
10-26 00:02:26.401  1121  2219 V DisplayPowerController: Brightness [0] reason changing to: 'screen_off', previous reason: 'manual'.
10-26 00:02:26.533  1121  2219 I DreamManagerService: Entering dreamland.
10-26 00:02:27.099  2533  3012 D KeyguardViewMediator: onFinishedGoingToSleep(2)
10-26 00:02:27.099  2533  3012 D KeyguardViewMediator: notifyFinishedGoingToSleep
10-26 00:02:27.120  2533  2533 D KeyguardViewMediator: handleNotifyFinishedGoingToSleep
10-26 00:02:27.137   764   764 E audio_hw_primary: adev_set_parameters  screen_off  
10-26 00:02:27.402   764   764 D sound_trigger_hw: handle_screen_status_change: screen off
接收到灭屏广播
10-26 00:02:27.485  3828  3828 I DeviceStatusMonitor: DeviceStatusMonitor$1.onReceive():51 onReceive() : Action = android.intent.action.SCREEN_OFF
10-26 00:02:27.519  4123  4123 V UserExperience: TriggerManager$8.onReceive() receive action android.intent.action.SCREEN_OFF
10-26 00:02:27.642  4037  4037 D PASRDozeReceiver: Received Intent Intent { act=android.intent.action.SCREEN_OFF flg=0x50200010 }
10-26 00:02:27.645  4037  4037 D PASRDozeReceiver: Sent intent Successfully
10-26 00:02:27.645  4037  4037 D PASRService: OnStart, Intent: android.intent.action.SCREEN_OFF
10-26 00:02:27.645  4037  4037 D PASRService: Screen Off


多用户灭屏流程:

切一次访客
11-05 12:38:06.638  2452  2452 D KeyguardViewMediator:  KeyguardViewMediator  onUserSwitchComplete by userId11
切回机主
11-05 12:38:07.185  2452  2452 D KeyguardViewMediator:  KeyguardViewMediator  onUserSwitchComplete by userId0

按电源键
11-05 12:38:18.332  1026  2228 D WindowManager: KeyEvent:26
11-05 12:38:18.835  1026  2228 D WindowManager: KeyEvent:26

开始调用休眠流程
11-05 12:38:19.136  1026  1456 I PowerManagerService: Going to sleep due to power_button (uid 1000)...
11-05 12:38:19.147  2452  2828 D KeyguardViewMediator: onStartedGoingToSleep(2)
11-05 12:38:19.152  2452  2828 D KeyguardViewMediator: notifyStartedGoingToSleep
11-05 12:38:19.152  2452  2452 D James   : handleStartedGoingToSleep!!

亮屏到半亮:目标亮度值为17,半亮状态关闭。
11-05 12:38:19.276  1026 23467 D DisplayPowerController: requestPowerState: policy=DOZE, useProximitySensor=false, screenBrightnessOverride=-1, useAutoBrightness=false, screenAutoBrightnessAdjustmentOverride=NaN, screenLowPowerBrightnessFactor=1.0, blockScreenOn=false, lowPowerMode=false, boostScreenBrightness=false, 
dozeScreenBrightness=17, dozeScreenState=OFF, waitForNegativeProximity=false
11-05 12:38:19.277  1026  1779 V DisplayPowerController: Brightness [17] reason changing to: 'doze', previous reason: 'manual'.
11-05 12:38:19.277  1026  1779 D DisplayPowerController: Unfinished business...
11-05 12:38:19.277  1026  1779 I DisplayPowerController: Blocking screen off
11-05 12:38:19.277  1026  1779 I DisplayPowerController: Unblocked screen off after 1 ms
11-05 12:38:19.279  2452  2828 D KeyguardViewMediator: notifyScreenTurnedOff

半亮到灭屏:目标亮度值为0
11-05 12:38:19.310  1026  1779 D DisplayPowerController: Animating brightness: target=0, rate=0
11-05 12:38:19.311  1026  1779 V DisplayPowerController: Brightness [0] reason changing to: 'screen_off', previous reason: 'doze'.
11-05 12:38:19.311  1026  1779 D DisplayPowerController: Animating brightness: target=0, rate=0
11-05 12:38:19.463  2452  2491 D KeyguardViewMediator: onFinishedGoingToSleep(2)
11-05 12:38:19.463  2452  2491 D KeyguardViewMediator: notifyFinishedGoingToSleep
11-05 12:38:19.463  2452  2491 E KeyguardViewMediator: resetStateLocked

灭屏到半亮流程:目标亮度值为17,半亮状态值打开
11-05 12:38:19.511  1026 23467 D DisplayPowerController: requestPowerState: policy=DOZE, useProximitySensor=false, screenBrightnessOverride=-1, useAutoBrightness=false, screenAutoBrightnessAdjustmentOverride=NaN, screenLowPowerBrightnessFactor=1.0, blockScreenOn=false, lowPowerMode=false, boostScreenBrightness=false,
 dozeScreenBrightness=17, dozeScreenState=ON, waitForNegativeProximity=false
11-05 12:38:19.511  1026  1779 I DisplayPowerController: Blocking screen on until initial contents have been drawn.
11-05 12:38:19.512  1026  1779 D DisplayPowerController: Animating brightness: target=17, rate=0
11-05 12:38:19.512  2452  2491 D KeyguardViewMediator: notifyScreenOn
11-05 12:38:19.518  1026  1779 V DisplayPowerController: Brightness [17] reason changing to: 'doze', previous reason: 'screen_off'.
11-05 12:38:19.518  1026  1779 D DisplayPowerController: Unfinished business...
11-05 12:38:19.518  1026  1779 D DisplayPowerController: Animating brightness: target=17, rate=0
11-05 12:38:19.518  2452  2452 D KeyguardViewMediator: handleNotifyScreenTurningOn

11-05 12:38:19.969  1026  1779 I DisplayPowerController: Unblocked screen on after 458 ms
11-05 12:38:19.969  1026  1779 D DisplayPowerController: Animating brightness: target=17, rate=180
11-05 12:38:19.969  1026  1779 D DisplayPowerController: Animating brightness: target=17, rate=180
11-05 12:38:19.969  1026  1779 D DisplayPowerController: Display ready!
11-05 12:38:19.969  1026  1779 D DisplayPowerController: Finished business...
11-05 12:38:19.970  2452 31024 D KeyguardViewMediator: notifyScreenTurnedOn
11-05 12:38:19.970  2452  2452 D KeyguardViewMediator: handleNotifyScreenTurnedOn
11-05 12:38:19.980  2452  2452 D James   : handleScreenTurnedOn!!!mStartDetectingAfterScreenOn = false

灭屏广播:
11-05 12:38:20.037  3705  3705 I DeviceStatusMonitor: DeviceStatusMonitor$1.onReceive():51 onReceive() : Action = android.intent.action.SCREEN_OFF
11-05 12:38:20.058  2631  2631 D QSLMJ   : SLM received action android.intent.action.SCREEN_OFF
11-05 12:38:20.103 31444 31444 I DeviceStatusMonitor: DeviceStatusMonitor$1.onReceive():51 onReceive() : Action = android.intent.action.SCREEN_OFF

半亮到灭屏流程:目标亮度值为17,半亮状态关闭。
11-05 12:38:25.118  1026 10515 D DisplayPowerController: requestPowerState: policy=DOZE, useProximitySensor=false, screenBrightnessOverride=-1, useAutoBrightness=false, screenAutoBrightnessAdjustmentOverride=NaN, screenLowPowerBrightnessFactor=1.0, blockScreenOn=false, lowPowerMode=false, boostScreenBrightness=false, 
dozeScreenBrightness=17, dozeScreenState=OFF, waitForNegativeProximity=false
11-05 12:38:25.120  1026  1779 I DisplayPowerController: Unblocked screen off after 1 ms
11-05 12:38:25.121  1026  1779 D DisplayPowerController: Animating brightness: target=0, rate=0
11-05 12:38:25.121  1026  1779 V DisplayPowerController: Brightness [0] reason changing to: 'screen_off', previous reason: 'doze'.
11-05 12:38:25.121  2452  2828 D KeyguardViewMediator: notifyScreenTurnedOff
11-05 12:38:25.121  1026  1779 D DisplayPowerController: Animating brightness: target=0, rate=0

通过dumpsys分析display 相关属性

获取相关值 重点关注 mScreenBrightness、ColorFadeLevel值、mActualState值

抓dumpsys的属性
adb shell dumpsys diaplay | grep mColorFadeLevel

Display Power State:
  mScreenState=ON
  mScreenBrightness=17
  mScreenReady=true
  mScreenUpdatePending=false
  mColorFadePrepared=false
  mColorFadeLevel=1.0
  mColorFadeReady=true
  mColorFadeDrawPending=false

Photonic Modulator State:
  mPendingState=ON
  mPendingBacklight=17
  mActualState=ON
  mActualBacklight=17
  mStateChangeInProgress=false

通过复现抓取 systrace:

Android/Sdk/platform-tools/systrace

执行 python systrace.py -b 8000 -t 5 -o systrace.html power

搜索关键字:

requestGlobalDisplayState|setDisplayBrightness|setDisplayState|setLight|ScreenBrightness

代码流程分析:

前面代码参考 https://blog.csdn.net/fu_kevin0606/article/details/54408094

最终调用

SurfaceControl.java的 nativeSetDisplayBrightness方法

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值