2012-02-23 29 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以下的設備。但這是可能的。