0

查看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)执行反馈触觉。导致物理按钮不基于视图。找了整整一个下午的源代码,但没有找到关于物理按钮如何执行触觉反馈的有价值的代码行~~~~ 谁能给我一些提示?

谢谢

4

1 回答 1

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

于 2013-01-22T01:26:54.603 回答