2012-02-23 4 views
11

私はAndroid(HoneycombとICS)の最新バージョンがジョイスティックとゲームパッドをサポートしていることを知っています。 ギターヒーロー(およびガレージバンド)コントローラーは本質的にUSB HIDデバイスです。Androidとギターヒーローコントローラー

私の質問 Androidデバイスのギターヒーロー(またはロックバンド)コントローラからデータ(ボタンクリック)を受信することは可能ですか? Androidはそれをゲームパッド入力として認識しますか?

P.S.私が必要とするのは、私のゲームでプラスチック製のギターのフレットの5つのボタンからの入力を検出することです。

+0

ギターをハッキングして、Androidとギターの間の仲介人としてArduinoを動作させる方法もあります。 – Andreas

答えて

6

良い出発点は、ギターヒーローコントローラのいくつかをサポートするFrets On FireのLinuxソースコードを見直すことです。

Frets on Fire: SourceForge

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

異なるプラットフォームから、普遍的にすべてのコントローラをサポートすることは困難であるように見えます。各コンソールには独自のプロトコルがありますが、PS3コントローラを搭載したPCではJoyStick to keyboard emulationが可能です。 2番目のリンクにPS3コントローラ用の設定ファイルがあります。これはJoyToKey(オープンソースではありません)のためのものですが、configの値のいくつかが役立つかもしれません。

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メソッドを変更してください。 MissileLauncherこのtypeと、このendpointCountを使用していますが、それは非常に可能性の高いGarageBandのコントローラは異なる値を持つことになりますされ

if (ep.getType() != UsbConstants.USB_ENDPOINT_XFER_INT) { 
... 
if (intf.getEndpointCount() != 1) { 

:私はsetDevice方法で可能UsbDevice deviceについて検索し、これらの条件文を使って実験してみてください可能性があり、すべてをログに記録します

チェックアウトrun方法を前後に通信の例を参照するに

免責事項:これがうまくいくかどうかはわかりません。私はまた、これを行うことができないと述べているブログを見たことがあります。

0

私の推測では、データを検出する必要があります。これは既存のAndroidデバイスでも可能ですが、Android Marketには適していません。

これを4.0以外のデバイスで実行するには、USBポートに代替電源を供給する必要があります。通常、これは電力を漏らす安価なUSBハブで行うことができます。デバイスはまた根づかなければなりません。これが完了したら、Dalvik VM外のCのようなネイティブ言語を起動するためのデバイスシェルへのインタフェースを作成する必要があります。Cを使って適切なソケットにバインドすれば、データを前後にバスできるようになります。また、ドライバのサポートを提供するためにカーネルモジュールをコンパイルする必要があります。

私はこれが4.0以下のデバイスの完全なハックだと言いました。しかし、それは可能です。