LINUX.ORG.RU

Android и геймпад

 ,


0

1

Имеется смартфон на Android и Bluetooth геймпад с 4 аналоговыми осями (2 стика) и 2 цифровыми (кнопки вверх-вниз-вправо-влево, «крестовина») + ещё кнопки.

Я считываю кнопки с помощью переопределения dispatchKeyEvent и оси с помощью dispatchGenericMotionEvent у Activity. И у меня 2 проблемы:

1) Мне удалось считать только 2 аналоговых оси из 4 с помощью ev.getAxisValue(MotionEvent.AXIS_X) и ev.getAxisValue(MotionEvent.AXIS_Y). Я не могу разобраться, как считать ещё две оси, хотя ОС их точно чувствует - движения второго стика тоже вызывают dispatchGenericMotionEvent.

2) Движения первого стика эмулирует «крестовину». То есть я получаю события о нажатии кнопок вверх-вниз-вправо-влево и при их реальном нажатии, и при движении первого стика. А я так не хочу. Я хочу иметь возможность различать эти события. Как?

★★★★★
Ответ на: комментарий от Dendy

Не получилось, зато обнаружил, что AXIS_HAT_X и AXIS_HAT_Y реагируют только на dpad, так что использую его.

KivApple ★★★★★
() автор топика
Ответ на: комментарий от Dendy

Не то - выдаёт нули, несмотря на движения второго стика.

KivApple ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.