我用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)。最好的方法是什么?
答案 0 :(得分:1)
这样的游戏控制器可以像其他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