我用java创建了一个Android应用程序,通过蓝牙控制我的机器人,但我需要一种更高级的方式来与我的机器人互动,而不是使用手机或平板电脑上的虚拟操纵杆和虚拟按键。我有一个索尼的Dualshock 4控制器,我想用它通过我的java android应用程序来控制我的机器人。
因此,我使用using (usb线缆)寻找方法来监听控制器的数字和模拟输入事件。
我看到原生KeyEvent可以工作,但只能使用数字输入。以此KeyEvent constant为例
我还看到了一个名为Gamepad4j的库,但我没有设法使用它,而且它也不符合我对安卓版本的要求。
因此,我想要一种方法,在我的android设备上的android API 25 (Android 7.1.1 Nougat)上,或者如果不可能,在API 28 (Android 9.0 Pie)上,用Java监听模拟事件(如操纵杆移动)和数字事件(如按下控制器上的按钮)。最好的方法是什么?
发布于 2019-05-09 04:21:05
这样的游戏控制器可以像任何其他InputDevice一样处理。
它不是InputDevice.SOURCE_GAMEPAD就是InputDevice.SOURCE_JOYSTICK。
documentation还显示了以下内容:

其中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
https://stackoverflow.com/questions/56048188
复制相似问题