Je reçois la position des axes de mon contrôleur de manette bluetooth dans la méthode dispatchGenericMotionEvent(android.view. MotionEvent)
. Ma méthode:Obtenir la position actuelle de l'axe de manette de jeu Android
@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;
}
Le problème est que lorsque je libère tous les axes du joystick, je ne reçois pas les dernières valeurs des axes (0,0) dans mon journal. Il s'arrête par exemple dans (0.23,0.11) et les valeurs appropriées n'apparaissent dans logcat qu'après l'événement de déplacement suivant. Quoi de plus - la situation est la même même si j'appuie sur le bouton normal (l'événement de bouton est complètement pris par une autre méthode dispatchKeyEvent(android.view.KeyEvent)
)
Que se passe-t-il?