2012-02-23 75 views
11

我知道最新版本的Android(Honeycomb和ICS)支持游戏杆和游戏手柄。 吉他英雄(和车库乐队)控制器本质上是USB HID设备,对不对?Android和吉他英雄控制器

所以我的问题: 是否有可能从Android设备上的吉他英雄(或摇滚乐队)控制器接收数据(按钮点击)? Android会将其理解为手柄输入吗?

P.S.我需要的是在我的游戏中检测塑料吉他上这五个按钮的输入。

+0

另一种选择是黑客入侵吉他,让Arduino充当Android和吉他手之间的中间人。 – Andreas 2012-02-29 22:08:53

回答

6

一个很好的起点是查看支持一些吉他英雄控制器的Frets On Fire的linux源代码。

Frets on Fire: SourceForge

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

看起来这将是困难的普遍支持所有控制器,从不同的平台。每个控制台都有自己的协议,但它看起来像JoyStick to keyboard emulation是可能的PS3控制器的PC上。在第二个链接上有一个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,这是非常有可能的GarageBand的控制器将有不同的价值观

ALSO

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

免责声明:我不知道这是否可行。我也看到博客陈述这是无法完成的。

0

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

要在非4.0设备上完成此操作,您必须为USB端口提供替代电源。通常这可以通过泄露功率的便宜的USB集线器来完成。该设备也必须生根。完成此操作后,您需要创建一个设备外壳接口,以在Dalvik虚拟机之外启动C语言等本地语言。使用你的C绑定到适当的套接字,你应该能够来回传输数据。您可能还需要编译内核模块以提供驱动程序支持。

就像我说的这是一个完整的黑客4.0以下的设备。但这是可能的。