如何编写使用 Sony Dualshock 4 控制器数字和模拟输入的 Android 应用程序?
Posted
技术标签:
【中文标题】如何编写使用 Sony Dualshock 4 控制器数字和模拟输入的 Android 应用程序?【英文标题】:How to code an Android app that use Sony Dualshock 4 controller digital and analogs inputs? 【发布时间】:2019-05-08 19:59:03 【问题描述】:我使用 java 创建了一个 android 应用程序来通过蓝牙控制我的机器人,但是我需要一种更高级的方式来与我的机器人交互,而不是使用手机或平板电脑上的虚拟操纵杆和虚拟按钮。我有一个 Sony Dualshock 4 控制器,我想通过我的 java android 应用程序来控制我的机器人。
因此,我搜索了使用 USB OTG(usb 电缆)监听控制器数字和模拟输入事件的方法。
我看到原生 KeyEvent 可以工作,但只能使用数字输入。比如这个KeyEvent constant
我还看到了一个名为 Gamepad4j 的库,但我没有设法使用它,而且它在 android 版本方面不符合我的要求。
所以我想要一种方法在我的 android API 25 (Android 7.1.1 Nougat) 上的 Android 设备上用 Java 监听模拟事件(如操纵杆移动)和数字事件(如按下控制器上的按钮),或者如果它是不可能,在 API 28(Android 9.0 Pie)上。最好的方法是什么?
【问题讨论】:
【参考方案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
【讨论】:
谢谢!这个答案对我帮助很大! github.com/lefuturiste/LYRC-control-android-app/commit/…以上是关于如何编写使用 Sony Dualshock 4 控制器数字和模拟输入的 Android 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
IOKit:未收到来自与蓝牙连接的 DualShock 4 控制器的 HID 中断报告