睡眠后短按pwrkey偶现点亮不了屏幕 (唤醒系统)
时间:10-02
整理:3721RD
点击:
使用PMIC 6323的平台,诸如MT6582/72等,偶现深度睡眠后, 短按pwrkey键无法点亮屏幕的情况。通过查看log可发现,短按pwrkeyu时,并没有上报key press。
解决方法:
针对以上问题,可采用以下两种优化方法(可单独使用也可一起使用):
1.上层修改
下面从php?mod=tag&id=6090" target="_blank" class="relatedlink">Framework的角度给一个workaround的方法:
在/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java中添加一个变量标记是否按下power key:
Private Boolean isPressedPwrkey;
然后在public int interceptKeyBeforeQueueing(KeyEvent event, int
policyFlags)方法中添加以下代码:
- // Handle special keys.
- switch (keyCode) {
- …
- case KeyEvent.KEYCODE_POWER: {
- result &= ~ACTION_PASS_TO_USER;
- isWakeKey = false; // wake-up will be handled separately
- if (down) {
- isPressedPwrkey = true;
- interceptPowerKeyDown(event, interactive);
- } else {
- If(!isPressedPwrkey && !isScreenOn(){
- interceptPowerKeyDown(event, interactive);
- isPressedPwrkey = true;
- }
- interceptPowerKeyUp(event, interactive, canceled);
- }
- break;
- }
2.driver层修改
在PMIC_MT6323.c中创建一个全局变量keyispressed,在函数pwrkey_int_handler中作如下逻辑判断:如果按键未被按下的情况下,收到release,先上报press再上报release.
- if(upmu_get_pwrkey_deb()==1)
- {
- ……
- If(keyispressed==false) //add
- {
- kpd_pwrkey_pmic_handler(0x1); //add
- }
- kpd_pwrkey_pmic_handler(0x0);
- ……
- keyispressed=false; //add
- }
- Else
- {
- ……
- keyispressed=true ;//add
- }