问题 Android和吉他英雄控制器


我知道最新版本的Android(Honeycomb和ICS)支持游戏杆和游戏手柄。 Guitar Hero(和Garage Band)控制器本质上是USB HID设备,对吗?

所以我的问题: 是否可以从Android设备上的Guitar Hero(或Rock Band)控制器接收数据(按钮点击)? Android会将其理解为游戏手柄输入吗?

附:我只需要在游戏中检测塑料吉他琴座上的五个按钮的输入。


5203
2018-02-23 06:12


起源

另一种选择是黑客入侵吉他手,让Arduino充当Android和吉他手之间的中间人。 - Andreas


答案:


一个很好的起点是审查Frets On Fire的linux源代码,它支持一些Guitar Hero控制器。

Frets on Fire:SourceForge

SVN: https://fretsonfire.svn.sourceforge.net/svnroot/fretsonfire 

看起来很难普遍支持来自不同平台的所有控制器。每个控制台都有自己的协议,但看起来确实如此 JoyStick键盘模拟 可以在带有PS3控制器的PC上使用。在第二个链接上有一个PS3控制器的配置文件可能会有所帮助,它适用于JoyToKey(非开源),但配置中的某些值可能对您有所帮助。


6
2018-02-25 18:22





嘿,这是一个非常酷的主意。从这里开始:

http://developer.android.com/guide/topics/usb/host.html

然后,看看这个样本:

http://developer.android.com/resources/samples/USB/MissileLauncher/index.html

在该示例中,有一个名为的方法 setDevice(UsbDevice device)

如果我正在实施这个,我会从一个副本开始 MissileLauncher 项目,并修改此 setDevice 方法。我会记录下我能找到的所有内容 UsbDevice device 并尝试在这些条件中进行实验 setDevice 方法:

if (ep.getType() != UsbConstants.USB_ENDPOINT_XFER_INT) {
...
if (intf.getEndpointCount() != 1) {

虽然 MissileLauncher 用这个 type 和这个 endpointCount,车库频段控制器很可能会有不同的值

看看 run 查看来回通信​​示例的方法

免责声明:我不知道这是否有效。我也看过博客说这不可能。


4
2018-03-01 05:21





我的猜测是它应该检测数据。这甚至可以在现有的Android设备上实现 - 但它不适合Android Market。

要在非4.0设备上完成此操作,您必须为USB端口提供备用电源。通常这可以通过泄漏电源的廉价USB集线器来完成。该设备也必须是root。完成此操作后,您需要创建设备shell的接口,以在Dalvik VM之外启动C之类的本机语言。使用您的C绑定到适当的套接字,您应该能够来回传输数据。您可能还需要编译内核模块以提供驱动程序支持。

就像我说的那样,对于低于4.0的设备来说这是一个完整的黑客但这是可能的。


0
2018-03-02 14:41