我知道最新版本的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