Как кодировать приложение для Android, в котором используются цифровые и аналоговые входы контроллера Sony Dualshock 4? - PullRequest
0 голосов
/ 08 мая 2019

Я создал приложение Android с java для управления своим роботом через Bluetooth, однако мне нужен более продвинутый способ взаимодействия с моим роботом, чем использование виртуального джойстика и виртуальных кнопок на моем телефоне или планшете.У меня есть контроллер Sony Dualshock 4, который я хочу использовать для управления своим роботом через приложение java для Android.

Итак, я искал способы прослушивания событий для цифрового и аналогового ввода моего контроллера с помощью USB OTG (USB-кабель).

Я видел, что родной KeyEvent может работать, но только с цифровым вводом.Например, Константа KeyEvent

Я также видел библиотеку под названием Gamepad4j , но мне не удалось ее использовать, и она не соответствовала моим требованиям с точки зренияверсия для Android.

Итак, я хочу, чтобы на моем устройстве Android на Android-устройстве Android 25 (Android 7.1) была возможность прослушивать аналоговые события (например, движения джойстиков) и цифровые события (например, нажатие кнопки на контроллере) в Java.1 нуга) или, если это невозможно, на API 28 (Android 9.0 Pie).Каковы лучшие подходы?

1 Ответ

1 голос
/ 08 мая 2019

С таким игровым контроллером можно обращаться как и с любым другим InputDevice ...

Это либо InputDevice.SOURCE_GAMEPAD, либо InputDevice.SOURCE_JOYSTICK.

документация показывает это:

Figure 1 shows how Android maps key codes and axis values to the physical controls on most game controllers.

, где 1 - цифровые кнопки:

AXIS_HAT_X, AXIS_HAT_Y, DPAD_UP, DPAD_DOWN, DPAD_LEFT, DPAD_RIGHT.

и 2/3 - аналоговые джойстики:

AXIS_X, AXIS_Y, BUTTON_THUMBL

AXIS_Z, AXIS_RZ, BUTTON_THUMBR

...