Я получаю положение осей от моего контроллера геймпада bluetooth в 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 только после следующего события перемещения. Более того - ситуация такая же, даже если я нажимаю обычную кнопку (событие кнопки улавливается полностью другим способом dispatchKeyEvent(android.view.KeyEvent)
)
Что происходит?