微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > Home key点亮屏幕后, 如何使手机不自动回到launcher界面

Home key点亮屏幕后, 如何使手机不自动回到launcher界面

时间:10-02 整理:3721RD 点击:

[DESCRIPTION]

有些项目会把 home key 配置成 wake key
这样, 按 home key 的时候就可以唤醒手机
但同时,home key 又会把当前的界面切到 launcher
如果只想让 home key 在黑屏时起到唤醒功能, 而不自动切换到 launcher
需要怎么做?

[SOLUTION]

注意: 黄色背景部分代码为所添加的代码
1: 修改 phonewindowmanager.Java 中 interceptKeyBeforeQueueing 方法的下面这段 code:
if (keyCode == KeyEvent.KEYCODE_power) {
policyFlags |= WindowManagerPolicy.FLAG_WAKE;
}
改为:
if (keyCode == KeyEvent.KEYCODE_POWER || (keyCode == KeyEvent.KEYCODE_HOME && !isScreenOn)) {
policyFlags |= WindowManagerPolicy.FLAG_WAKE;
}
2: 仍然是此方法,对应部分修改为如下:
int result; //参考行
if (((isScreenOn && !mHeadless) || (isInjected && !isWakeKey))) {//参考行
// When the screen is on or if the key is injected pass the key to the application.
Log.d(TAG,"oldScreenOn = "+oldScreenOn);
if(!oldScreenOn && (keyCode == KeyEvent.KEYCODE_HOME)){
Log.d(TAG,"eat the home up because home down has dropped");
result |= ACTION_WAKE_UP;
}else{
result = ACTION_PASS_TO_USER;
}
} else {
// When the screen is off and the key is not injected, determine whether
// to wake the device but don't pass the key to the application.
result = 0;
if (down && isWakeKey && isWakeKeyWhenScreenOff(keyCode)) {
......
}
}
oldScreenOn = isScreenOn;
其中的 oldScreenOn 请定义在 phoneWindowManager 这个 class 中, 定义如下:
boolean oldScreenOn = true;

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top