[通话][MTK]来电黑屏需按电源键才能点亮屏

来源:互联网 发布:淘宝虚拟市场怎么加入 编辑:程序博客网 时间:2024/04/30 00:50


该问题是因为在来电亮屏之后, 紧接着又有进程调用了 PowerManagerService.gotoSleep 操作. 


导致系统关闭背光. 所以才出现来电无法亮屏的情况. 而这个调用 goToSleep 的进程对应的 uid


为 10018. 所以我们需要先确认 10018 这个 uid 到底是哪个 application. 请知悉.


您可以通过下面的方式确认 uid 对应的 packages


1. 电脑连接手机.


2. adb pull data/system/packages.xml d:/packages.xml


3. 打开 packages.xml 文件. 搜索 10018, 查看某个 uid n="10018" 对应的 package 信息.
就可以确认是哪个 package. 然后在对应的 package 里面搜索调用 PowerManagerService.goToSleep
地方. 确认为何要有这样的逻辑.




1. 灭屏
--------------------------------------------------------------------------------------------------
08-16 14:31:00.167197 998 1346 D DisplayPowerState: Updating screen state: state=ON, backlight=0, backlightChanged=true


2. 来电 ECPI URC
--------------------------------------------------------------------------------------------------
08-16 14:32:33.064434 1210 1252 D AT : AT< +ECPI: 1,0,0,0,1,0,"02110108888",161,""


3. 这里 acquire full wakelock, 亮屏之后, 在此锁 release 之前,
如无主动 goto sleep 操作, 则一直保持亮屏状态.
--------------------------------------------------------------------------------------------------
08-16 14:32:34.849950 998 998 I Telecom : InCallWakeLockController: Acquiring full wake lock


08-16 14:32:35.113044 1210 1252 D AT : AT< +ECPI: 1,4,0,1,1,0,"02110108888",161,""


4. 这里是 layout InCallActivity 时, WMS wakeUp 系统
--------------------------------------------------------------------------------------------------
08-16 14:32:36.677385 998 1024 D PowerManagerService: |----com.android.server.power.PowerManagerService.wakeUpNoUpdateLocked(PowerManagerService.java:1387)
08-16 14:32:36.677432 998 1024 D PowerManagerService: |----com.android.server.power.PowerManagerService.wakeUpInternal(PowerManagerService.java:1378)
08-16 14:32:36.677471 998 1024 D PowerManagerService: |----com.android.server.power.PowerManagerService.-wrap40(PowerManagerService.java)
08-16 14:32:36.677512 998 1024 D PowerManagerService: |----com.android.server.power.PowerManagerService$BinderService.wakeUp(PowerManagerService.java:3669)
08-16 14:32:36.677549 998 1024 D PowerManagerService: |----android.os.PowerManager.wakeUp(PowerManager.java:746)
08-16 14:32:36.677589 998 1024 D PowerManagerService: |----com.android.server.wm.WindowManagerService.performLayoutAndPlaceSurfacesLockedInner(WindowManagerService.java:10694)
08-16 14:32:36.677628 998 1024 D PowerManagerService: |----com.android.server.wm.WindowManagerService.performLayoutAndPlaceSurfacesLockedLoop(WindowManagerService.java:9323)
08-16 14:32:36.677673 998 1024 D PowerManagerService: |----com.android.server.wm.WindowManagerService.performLayoutAndPlaceSurfacesLocked(WindowManagerService.java:9270)
08-16 14:32:36.677709 998 1024 D PowerManagerService: |----com.android.server.wm.WindowManagerService.-wrap7(WindowManagerService.java)
08-16 14:32:36.677746 998 1024 D PowerManagerService: |----com.android.server.wm.WindowManagerService$H.handleMessage(WindowManagerService.java:8115)
08-16 14:32:36.677785 998 1024 D PowerManagerService: |----android.os.Handler.dispatchMessage(Handler.java:111)
08-16 14:32:36.677823 998 1024 D PowerManagerService: |----android.os.Looper.loop(Looper.java:207)
08-16 14:32:36.677864 998 1024 D PowerManagerService: |----android.os.HandlerThread.run(HandlerThread.java:61)
08-16 14:32:36.677907 998 1024 D PowerManagerService: |----com.android.server.ServiceThread.run(ServiceThread.java:46)
08-16 14:32:36.677959 998 1024 D PowerManagerService: wakeUpNoUpdateLocked: eventTime=166299032, uid=1000
08-16 14:32:36.678009 998 1024 I PowerManagerService: Waking up from sleep (uid 1000)...


5. 这里有一个主动调用 goto sleep 的操作. 显示调用的 UID = 10018
不太确定这个 UID = 10018 是谁, 不过从 event log 来看, 好像是
systemUI. 所以我们需要先确认 10018 这个 uid 对应的是哪个 app 进程
--------------------------------------------------------------------------------------------------
08-16 14:32:36.689145 998 2060 D PowerManagerService:     |----com.android.server.power.PowerManagerService.goToSleepNoUpdateLocked(PowerManagerService.java:1450)
08-16 14:32:36.689231 998 2060 D PowerManagerService:     |----com.android.server.power.PowerManagerService.goToSleepInternal(PowerManagerService.java:1439)
08-16 14:32:36.689268 998 2060 D PowerManagerService:     |----com.android.server.power.PowerManagerService.-wrap14(PowerManagerService.java)
08-16 14:32:36.689312 998 2060 D PowerManagerService:     |----com.android.server.power.PowerManagerService$BinderService.goToSleep(PowerManagerService.java:3687)
08-16 14:32:36.689346 998 2060 D PowerManagerService:     |----android.os.IPowerManager$Stub.onTransact(IPowerManager.java:182)
08-16 14:32:36.689387 998 2060 D PowerManagerService:     |----android.os.Binder.execTransact(Binder.java:458)
08-16 14:32:36.689444 998 2060 D PowerManagerService: goToSleepNoUpdateLocked: eventTime=166299044, reason=0, flags=0, uid=10018
08-16 14:32:36.689481 998 2060 I PowerManagerService: Going to sleep by application request (uid 10018)...


6. 这里因为 step-4 而点亮屏幕背光
--------------------------------------------------------------------------------------------------
08-16 14:32:37.205158 998 1346 D DisplayPowerState: Updating screen state: state=ON, backlight=55, backlightChanged=true


7. 这里因为 step-5 而关闭屏幕背光
--------------------------------------------------------------------------------------------------
08-16 14:32:37.743317 998 1346 D DisplayPowerState: Updating screen state: state=ON, backlight=0, backlightChanged=true


8. 通话结束
--------------------------------------------------------------------------------------------------
08-16 14:32:51.832485 1210 1252 D AT : AT< +ECPI: 1,133,0,0,1,0,"02110108888",161,""


9. release step-3 acquire 的 full wake lock.
--------------------------------------------------------------------------------------------------
08-16 14:32:51.957822 998 2069 I Telecom : InCallWakeLockController: Releasing full wake lock


main_log中有如下的log显示,从这是否可以确认10018就是SystemUI?

AppOps : startOperation: allowing code 3 uid 10018 package com.android.systemui


基本可以确认. 一般情况下我是看 packages.xml 里面的 uid 信息. 所以如果确认是 systemUI 的话. 那这个问题

就需要贵司 check 一下 system UI 里面调用的 goToSleep 地方的逻辑是什么. 

0 0
原创粉丝点击