Android framework中雙擊home 的實現

前言
         歡迎大家我分享和推薦好用的代碼段~~
聲明
         歡迎轉載,但請保留文章原始出處:
         CSDN:
http://www.csdn.net
         雨季o莫憂離:http://blog.csdn.net/luckkof

正文

 

如果你需要做雙擊 home key 的檢測
你可以參考如下 sample code 自行實現
請修改 phoneWindowManager.java 的 interceptKeyBeforeQueueing 方法
找到參考位置後, 加入註釋所述代碼:
[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. <span style="font-family:SimSun;font-size:10px;">  //以下是原有代碼, 即參考行  
  2.   if (down && (policyFlags & WindowManagerPolicy.FLAG_VIRTUAL) != 0  
  3.                 && event.getRepeatCount() == 0) {  
  4.             performHapticFeedbackLw(null, HapticFeedbackConstants.VIRTUAL_KEY, false);  
  5.         }  
  6.   //參考行到此結束</span>  
        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 

[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. <span style="font-family:SimSun;font-size:10px;">if(keyCode == KeyEvent.KEYCODE_HOME){  
  2.    if(down){  
  3.   // this is home down  
  4.   if(((event.getEventTime() - lastHomeDownTime) < 500)){   
  5.    homeDownDoubleClick = true;   
  6.   }else{  
  7.    homeDownDoubleClick = false;  
  8.   }  
  9.   lastHomeDownTime = event.getEventTime();  
  10.  }else{  
  11.   // then home up comes  
  12.   Log.d(TAG,"homeDownDoubleClick="+homeDownDoubleClick+",lastHomeDownTime="+lastHomeDownTime+",lastHomeUpTime="+lastHomeUpTime+",this home up="+event.getEventTime());  
  13.   if(homeDownDoubleClick && ((event.getEventTime() - lastHomeUpTime) < 500)){   
  14.    Log.d(TAG,"double click on home detected");  
  15.    try {  
  16.     IStatusBarService statusbar = getStatusBarService();  
  17.     if (statusbar != null) {  
  18.      statusbar.preloadRecentApps();  
  19.      statusbar.toggleRecentApps();  
  20.                 }  
  21.             } catch (RemoteException e) {  
  22.     Slog.e(TAG, "RemoteException when preloading recent apps", e);  
  23.                 mStatusBarService = null;  
  24.    }  
  25.        
  26.    result |= ACTION_WAKE_UP;  
  27.    return result;  
  28.   }  
  29.   lastHomeUpTime = event.getEventTime();  
  30.  }  
  31. }</span>  
  // mtk sample code for double home click detection END.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章