2013-01-18 63 views
0

檢查Android源代碼, 後,我知道當一個按鈕進行點擊就會調用視圖的performHapticFeedback methor讓手機將執行BZZZTT效果。 的performHapticFeedback碼是這樣的:android如何在物理按鈕上執行觸覺反饋?

public boolean performHapticFeedback(int feedbackConstant, int flags) { 
    if (mAttachInfo == null) { 
     return false; 
    } 
    //noinspection SimplifiableIfStatement 
    if ((flags & HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING) == 0 
      && !isHapticFeedbackEnabled()) { 
     return false; 
    } 
    return mAttachInfo.mRootCallbacks.performHapticFeedback(feedbackConstant, 
      (flags & HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING) != 0); 
} 

但是,不知如何機器人上執行物理按鈕的反饋的觸覺(如key_home,key_Back,key_menu)。導致物理按鈕不基於View。我已經搜索了整個下午的源代碼,但沒有得到有關物理按鈕如何執行的有價值的代碼行觸覺反饋~~~~ 任何人都可以給我一些提示嗎?

由於

回答

0

相對代碼行中PhoneWindowManager.java發現 - >public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags, boolean isScreenOn)(這被稱爲在另一個之前uplever應用程序可以處理)。 對KeyEvent的編碼判斷之後,那麼它會調用mVibrator.vibrate(pattern[0]);其中mVibrator通過調用mVibrator = (Vibrator)context.getSystemService(Context.VIBRATOR_SERVICE);