Я получаю положение осей от моего контроллера 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)
)
В чем дело ?