我知道最新版本的Android(Honeycomb和ICS)支持游戏杆和游戏手柄。 吉他英雄(和车库乐队)控制器本质上是USB HID设备,对不对?Android和吉他英雄控制器
所以我的问题: 是否有可能从Android设备上的吉他英雄(或摇滚乐队)控制器接收数据(按钮点击)? Android会将其理解为手柄输入吗?
P.S.我需要的是在我的游戏中检测塑料吉他上这五个按钮的输入。
我知道最新版本的Android(Honeycomb和ICS)支持游戏杆和游戏手柄。 吉他英雄(和车库乐队)控制器本质上是USB HID设备,对不对?Android和吉他英雄控制器
所以我的问题: 是否有可能从Android设备上的吉他英雄(或摇滚乐队)控制器接收数据(按钮点击)? Android会将其理解为手柄输入吗?
P.S.我需要的是在我的游戏中检测塑料吉他上这五个按钮的输入。
一个很好的起点是查看支持一些吉他英雄控制器的Frets On Fire的linux源代码。
SVN:https://fretsonfire.svn.sourceforge.net/svnroot/fretsonfire
看起来这将是困难的普遍支持所有控制器,从不同的平台。每个控制台都有自己的协议,但它看起来像JoyStick to keyboard emulation是可能的PS3控制器的PC上。在第二个链接上有一个PS3控制器的配置文件,它可能对JoyToKey(这不是开源的)有帮助,但配置中的一些值可能会对您有所帮助。
嘿,这是一个非常酷的想法。从这里开始:
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
,这是非常有可能的GarageBand的控制器将有不同的价值观
ALSO
检查出run
方法看来回通信的示例
免责声明:我不知道这是否可行。我也看到博客陈述这是无法完成的。
我的猜测是它应该检测数据。这甚至可以在现有的Android设备上实现 - 但它不适合Android电子市场。
要在非4.0设备上完成此操作,您必须为USB端口提供替代电源。通常这可以通过泄露功率的便宜的USB集线器来完成。该设备也必须生根。完成此操作后,您需要创建一个设备外壳接口,以在Dalvik虚拟机之外启动C语言等本地语言。使用你的C绑定到适当的套接字,你应该能够来回传输数据。您可能还需要编译内核模块以提供驱动程序支持。
就像我说的这是一个完整的黑客4.0以下的设备。但这是可能的。
另一种选择是黑客入侵吉他,让Arduino充当Android和吉他手之间的中间人。 – Andreas 2012-02-29 22:08:53