0

ジョイスティックと方向パッド入力を区別しようとしています。私は常に同じイベント ソース (16777232) を取得します。方向パッドを押すか、ジョイスティックを回すかは関係ありません。

私はipegaゲームコントローラーを使用しています

私の問題は次のとおりです。
最初:
左のジョイスティックを右に回すと:
1. dispatchGenericMotionEvent(MotionEvent motionEvent)がトリガーされます。および
a= 16777232(SOURCE_JOYSTICK)
2. に転送されますdispatchKeyEvent(KeyEvent event)

2番目:
右のジョイスティックを右に回すと:
1.ispatchGenericMotionEvent(MotionEvent motionEvent)がトリガーされます。および
a= 16777232(SOURCE_JOYSTICK)
2. に転送しますdispatchKeyEvent(KeyEvent event)

3 番目:
左/右/上/下の方向パッド ボタンを押すと:
1.ispatchGenericMotionEvent(MotionEvent motionEvent)がトリガーされます。および
a= 16777232(SOURCE_JOYSTICK)
2. に転送されますdispatchKeyEvent(KeyEvent event)

@Override
public boolean dispatchGenericMotionEvent(MotionEvent motionEvent)
{
    int a=motionEvent.getSource();

    return super.dispatchGenericMotionEvent(motionEvent);
}

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    int a=motionEvent.getSource();

    return super.dispatchKeyEvent(event);
}
4

1 に答える 1

0

私がかつて経験したのと同じ問題を抱えているかどうかはわかりません (特定の携帯電話で DS4 を試しただけです)。

私が遭遇したのは、dispatchKeyEvent メソッドを使用して、コントローラーが左スティックと方向パッドを混同していたことです (同じ応答が得られました)。私の記憶が正しければ、左スティックと右スティックのコマンドが混在していました。

スティックを動かしたり、ボタンを押したりするたびにログを記録すると、いくつかのアクションが onGenericMotionEvent と dispatchKeyEvent の両方を呼び出しますが、イベントが異なることがわかります。

私がしなければならなかったことは、両方のスティックのアクションを onGenericMotionEvent メソッド (0.0 から 1.0 までの強度も提供します) で分離し、dispatchKeyEvent メソッドが KeyEvent を起動し続けることでした。

于 2016-03-22T19:45:44.107 に答える