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

时间:2019-05-08 19:59:04

标签: java android gamepad

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

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

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

我也看到了一个名为Gamepad4j的库,但是我没有设法使用它,并且它不符合我对Android版本的要求。

所以我想要一种在Java API 25(Android 7.1.1 Nougat)的android设备上侦听Java中的模拟事件(例如操纵杆移动)和数字事件(例如按下控制器上的按钮)的方法。无法使用API​​ 28(Android 9.0 Pie)。最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

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

它是InputDevice.SOURCE_GAMEPADInputDevice.SOURCE_JOYSTICK

documentation也显示以下内容:

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

其中1是数字按钮:

AXIS_HAT_XAXIS_HAT_YDPAD_UPDPAD_DOWNDPAD_LEFTDPAD_RIGHT

和2/3是模拟操纵杆:

AXIS_XAXIS_YBUTTON_THUMBL

AXIS_ZAXIS_RZBUTTON_THUMBR