android如何在物理按钮上执行反馈触觉?

时间:2013-01-18 10:25:41

标签: android

检查android源代码后, 我知道按钮执行单击时会调用视图的performHapticFeedback方法,这样手机就会执行BZZZTT效果。 performHapticFeedback代码如下:

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);
}

但是,我想知道android如何在物理按钮上执行反馈触觉(例如key_home,key_Back,key_menu)。导致物理按钮不基于View。我已经搜索了整个下午的源代码,但是我没有得到关于物理按钮如何执行触觉反馈的有价值的代码行~~~~ 谁能给我一些提示?

由于

1 个答案:

答案 0 :(得分:0)

相对代码行位于PhoneWindowManager.java - > public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags, boolean isScreenOn)。(在其他上传应用可以处理之前调用); 在判断KeyEvent代码之后,它将通过调用mVibrator.vibrate(pattern[0]);

来调用获取mVibrator的mVibrator = (Vibrator)context.getSystemService(Context.VIBRATOR_SERVICE);