dispatchGenericMotionEvent(android.view. MotionEvent)
の方法で私のブルートゥースのゲームパッドコントローラから軸の位置を受け取ります。 私の方法:現在のアンドロイドのゲームパッドの軸の位置を取得する
@Override
public boolean dispatchGenericMotionEvent(final MotionEvent event) {
if(mPadListener==null ||
(event.getSource()&InputDeviceCompat.SOURCE_JOYSTICK)!=InputDeviceCompat.SOURCE_JOYSTICK){
return super.dispatchGenericMotionEvent(event);
}
int historySize = event.getHistorySize();
for (int i = 0; i < historySize; i++) {
// Process the event at historical position i
Log.d("JOYSTICKMOVE",event.getHistoricalAxisValue(MotionEvent.AXIS_Y,i)+" "+event.getHistoricalAxisValue(MotionEvent.AXIS_Z,i));
}
// Process current position
Log.d("JOYSTICKMOVE",event.getAxisValue(MotionEvent.AXIS_Y)+" "+event.getAxisValue(MotionEvent.AXIS_Z));
return true;
}
問題は、私はすべてのジョイスティックの軸を放したとき、私は私のログの最後の軸の値(0,0)を取得していないよということです。たとえば(0.23,0.11)で停止し、適切な値が次の移動イベントの後でのみlogcatに表示されます。さらに、普通のボタンを押しても状況は変わりません(ボタンイベントはまったく別の方法でキャッチされます)
何が起こっているのですか?