如何编写使用 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_GAMEPADInputDevice.SOURCE_JOYSTICK

documentation 也显示了这一点:

其中 1 是数字按钮:

AXIS_HAT_XAXIS_HAT_YDPAD_UPDPAD_DOWNDPAD_LEFTDPAD_RIGHT

和 2/3 是模拟操纵杆:

AXIS_XAXIS_YBUTTON_THUMBL

AXIS_ZAXIS_RZBUTTON_THUMBR

【讨论】:

谢谢!这个答案对我帮助很大! github.com/lefuturiste/LYRC-control-android-app/commit/…

以上是关于如何编写使用 Sony Dualshock 4 控制器数字和模拟输入的 Android 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

带有 C# 的 Dualshock 4 触摸板

IOKit:未收到来自与蓝牙连接的 DualShock 4 控制器的 HID 中断报告

Manjaro 和 DualShock 3

PS4都有哪些值得入手的配件?

如何在 Linux 中从 Mono/C# 访问游戏杆/游戏手柄?

如何将嵌套字典写入json