5

1 つは方向パッド用、もう 1 つはアナログ ジョイスティック用 (同じゲームパッド上) です。

問題は、onGenericMotionEventコールバックで両方に同じ情報があり、MotionEventそれらを区別できないことです。

// d-pad
MotionEvent { action=ACTION_MOVE, id[0]=0, x[0]=-1.5259255E-5, y[0]=-1.5259255E-5, toolType[0]=TOOL_TYPE_UNKNOWN, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=151637936, downTime=0, deviceId=5, source=0x1000010 }

// analog joystick
MotionEvent { action=ACTION_MOVE, id[0]=0, x[0]=0.64507514, y[0]=0.710811, toolType[0]=TOOL_TYPE_UNKNOWN, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=151650802, downTime=0, deviceId=5, source=0x1000010 }

どの種類の入力が使用されているかを特定することはできますか? どのように?

4

3 に答える 3

0

提供された情報を見ると、それらは同じソース、つまりジョイスティック (0x1000010) からのもののように見えます。これらの情報は、Input Deviceオブジェクトで確認できます。

次の情報は、コントローラー アクションの処理からのものです。

接続された入力デバイスがゲーム コントローラであることを確認するには、 を呼び出しgetSources()て、そのデバイスでサポートされている入力ソース タイプの組み合わせビット フィールドを取得します。

のソース タイプはSOURCE_GAMEPAD、入力デバイスにゲームパッド ボタン ( などBUTTON_A) があることを示します。このソース タイプは、ゲーム コントローラに D-pad ボタンがあるかどうかを厳密に示しているわけではありませんが、通常、ほとんどのゲームパッドには方向コントロールがあります。

のソース タイプはSOURCE_DPAD、入力デバイスに方向パッド ボタン (たとえば、DPAD_UP) があることを示します。

のソース タイプはSOURCE_JOYSTICK、入力デバイスにアナログ コントロール スティックがあることを示します (たとえば、 と に沿った動きを記録するジョイスティックAXIS_X) AXIS_Y

また、 Supporting Multiple Controller Inputを確認することもできます。

于 2016-01-03T14:23:40.307 に答える