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 に答える