安卓和吉他英雄控制器

11

我知道最新版本的Android(Honeycomb和ICS)支持手柄和游戏手柄。

Guitar Hero(和Garage Band)控制器本质上是USB HID设备,对吗?

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

P.S. 我只需要在我的游戏中检测来自这些五个按钮的输入信号。


一个替代方案是黑客攻击吉他,让Arduino充当Android和吉他之间的中间人。 - Andreas
3个回答

6
一个很好的起点是查看Frets On Fire的Linux源代码,该代码支持一些Guitar Hero控制器。 Frets on Fire: SourceForge SVN:https://fretsonfire.svn.sourceforge.net/svnroot/fretsonfire 看起来普遍支持所有不同平台的控制器似乎很困难。每个游戏机都有自己的协议,但在PC上使用PS3控制器似乎可以进行手柄到键盘模拟。第二个链接中有一个PS3控制器的配置文件,可能会有所帮助,它是为JoyToKey(不是开源)编写的,但配置文件中的某些值可能会对您有所帮助。

4

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

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使用了这个typeendpointCount,但车库乐队控制器很可能具有不同的值。

另外,检查一下run方法,可以看到来回通信的示例。

免责声明:我不知道这是否有效。我也看过一些博客声称这是不能实现的。


0

我的猜测是它应该能够检测数据。即使在现有的Android设备上也可能实现这一点,但它不适用于Android市场。

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

就像我说的那样,这对于4.0以下的设备来说是一个完全的黑客行为。但是这是可能的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接