如何编写使用 Sony Dualshock 4 控制器数字和模拟输入的 Android 应用程序?

How to code an Android app that use Sony Dualshock 4 controller digital and analogs inputs?

我用 java 创建了一个 Android 应用程序来通过蓝牙控制我的机器人,但是我需要一种更高级的方式来与我的机器人交互,而不是使用 [=] 上的虚拟操纵杆和虚拟按钮=35=] 或平板电脑。我有一个 Sony Dualshock 4 控制器,我想用它来通过我的 java android 应用程序控制我的机器人。

因此,我搜索了使用 USB OTG(USB 电缆)监听控制器数字和模拟输入事件的方法。

我看到原生 KeyEvent 可以工作,但只能使用数字输入。例如这个 KeyEvent constant

我还看到了一个名为 Gamepad4j 的库,但我没能使用它,而且它在 android 版本方面不符合我的要求。

所以我想要一种方法来监听 android 设备上的 Java 中的模拟事件(如操纵杆移动)和数字事件(如按下控制器上的按钮) =] API 25 (Android 7.1.1 Nougat) 或者如果不可能,在 API 28 (Android 9.0 Pie) 上。什么是最好的方法?

这样的游戏控制器可以像任何其他游戏控制器一样处理InputDevice ...

它是 InputDevice.SOURCE_GAMEPADInputDevice.SOURCE_JOYSTICK

documentation 也显示了这个:

其中 1 是数字按钮:

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

和2/3是模拟摇杆:

AXIS_XAXIS_YBUTTON_THUMBL

AXIS_ZAXIS_RZBUTTON_THUMBR