11

最新バージョンの Android (Honeycomb と ICS) がジョイスティックとゲームパッドをサポートしていることは知っています。Guitar Hero (および Garage Band) のコントローラーは、基本的に USB HID デバイスですよね?

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

PS 必要なのは、私のゲームで、プラスチック ギターのフレットにある 5 つのボタンからの入力を検出することだけです。

4

3 に答える 3

6

出発点として、Guitar Hero コントローラーの一部をサポートする Frets On Fire の Linux ソース コードを確認することをお勧めします。

フレット・オン・ファイア: SourceForge

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

さまざまなプラットフォームのすべてのコントローラーを普遍的にサポートすることは難しいようです。各コンソールには独自のプロトコルがありますが、PS3 コントローラーを搭載した PC では、JoyStick からキーボードへのエミュレーションが可能であるように見えます。2 番目のリンクに PS3 コントローラーの構成ファイルがあり、役立つかもしれません。それは JoyToKey (オープン ソースではない) 用ですが、構成内の値の一部が役立つ場合があります。

于 2012-02-25T18:22:26.357 に答える
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) {

MissileLauncherthistypeとthisを使用しますendpointCountが、ガレージバンドコントローラーの値が異なる可能性が非常に高くなります

また

メソッドをチェックしてrun、前後の通信の例を確認してください

免責事項:これが機能するかどうかはわかりません。これはできないと言っているブログも見ました。

于 2012-03-01T05:21:56.073 に答える
0

私の推測では、データを検出する必要があります。これは既存のAndroidデバイスでも可能ですが、Androidマーケット向けではありません。

4.0以外のデバイスでこれを実現するには、USBポートに代替電源を提供する必要があります。通常、これは電力をリークする安価なUSBハブを使用して実行できます。デバイスもルート化する必要があります。これが完了したら、デバイスシェルへのインターフェイスを作成して、DalvikVMの外部でCなどの母国語を起動する必要があります。Cを使用して適切なソケットにバインドすると、データを前後にバス接続できるようになります。ドライバーをサポートするために、カーネルモジュールをコンパイルする必要がある場合もあります。

私が言ったように、これは4.0未満のデバイスの完全なハックです。しかし、それは可能です。

于 2012-03-02T14:41:13.810 に答える