Android和吉他英雄控制器

时间:2012-02-23 06:12:40

标签: android hid joystick guitar gamepad-api

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

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

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

3 个答案:

答案 0 :(得分:6)

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

Frets on Fire: SourceForge

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

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

答案 1 :(得分: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使用此type和此endpointCount,但很可能车库频段控制器会有不同的值

ALSO

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

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

答案 2 :(得分:0)

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

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

就像我说的那样,对4.0以下的设备来说这是一个完整的黑客攻击。但这是有可能的。