前言
歡迎大家我分享和推薦好用的代碼段~~
聲明
歡迎轉載,但請保留文章原始出處:
CSDN:http://www.csdn.net
雨季o莫憂離:http://blog.csdn.net/luckkof
正文
如果你需要做雙擊 home key 的檢測
你可以參考如下 sample code 自行實現
請修改 phoneWindowManager.java 的 interceptKeyBeforeQueueing 方法
找到參考位置後, 加入註釋所述代碼:
-
<span style="font-family:SimSun;font-size:10px;">
-
if (down && (policyFlags & WindowManagerPolicy.FLAG_VIRTUAL) != 0
-
&& event.getRepeatCount() == 0) {
-
performHapticFeedbackLw(null, HapticFeedbackConstants.VIRTUAL_KEY, false);
-
}
-
int result = 0; //原爲 int result, 請加入初始值.
// mtk sample code for double home click detection BEGIN.
//請在類中補充 boolean homeDownDoubleClick = false; 的定義
//請在類中補充 long lastHomeDownTime=0; 的定義
//請在類中補充 long lastHomeUpTime=0; 的定義
//檢測原理: 檢測上一次按下的 home key 與本次按下的 home key 時間間隔是否 < 500ms
//if yes, 則認爲是雙擊 home key
-
<span style="font-family:SimSun;font-size:10px;">if(keyCode == KeyEvent.KEYCODE_HOME){
-
if(down){
-
-
if(((event.getEventTime() - lastHomeDownTime) < 500)){
-
homeDownDoubleClick = true;
-
}else{
-
homeDownDoubleClick = false;
-
}
-
lastHomeDownTime = event.getEventTime();
-
}else{
-
-
Log.d(TAG,"homeDownDoubleClick="+homeDownDoubleClick+",lastHomeDownTime="+lastHomeDownTime+",lastHomeUpTime="+lastHomeUpTime+",this home up="+event.getEventTime());
-
if(homeDownDoubleClick && ((event.getEventTime() - lastHomeUpTime) < 500)){
-
Log.d(TAG,"double click on home detected");
-
try {
-
IStatusBarService statusbar = getStatusBarService();
-
if (statusbar != null) {
-
statusbar.preloadRecentApps();
-
statusbar.toggleRecentApps();
-
}
-
} catch (RemoteException e) {
-
Slog.e(TAG, "RemoteException when preloading recent apps", e);
-
mStatusBarService = null;
-
}
-
-
result |= ACTION_WAKE_UP;
-
return result;
-
}
-
lastHomeUpTime = event.getEventTime();
-
}
-
}</span>
// mtk sample code for double home click detection END.