2012-07-27 8 views
5

ゲームパッドを接続できるAndroidデバイスがあります(これは完全に標準のXBox 360コントローラですが、他の種類もサポートする必要があります)。ゲームパッドは、いくつかのアナログ軸といくつかのボタンを備えたInputDeviceとして表示されています。Android:ゲームパッドのボタンを列挙する

Androidに照会して、ゲームパッドがサポートするボタンを確認できるようにする必要があります。誰もこれを行う方法を知っていますか?

私は/dev/input/event...を開き、EVIOCGBITのioctlを使用して、ボタンを照会コマンドラインアプリケーションを書く場合、私はカーネルからサポートボタンの素敵なリストを取得するためのシステムは、この情報を持っていることを知っています。しかし、私は入力デバイスに直接アクセスする権限がないので、Androidアプリケーションからこれを行うことはできません。

InputDeviceのKeyCharacterMapオブジェクトを取得してそれを照会することが可能であるようです。実際にゲームパッドがサポートしているものと一致するものを構築するのではなく、AndroidがデフォルトのQWERTYキーボードのキーマップをゲームパッドに接続しているように見えます。これはうれしいことに、ゲームパッドにはQキーがあり、キーパッドにはないQキーがあり、キーパッドにはBUTTON_Xキーがなく、キーイベントは受け付けています。それは助けにはならない。

これを行う方法はありますか?

+0

は、この上のベンダーからの文書があるはずです。どのようなデバイスを使用していますか? –

+0

いずれか---これは移植可能なソリューションである必要があります。 –

答えて

1

私はまだ方法を理解していませんが、私は恐ろしい回避策を見つけました。

KeyCharacterMap.deviceHasKey(keycode)に電話すると、入力デバイスが指定されたキーコードをサポートしている場合、Androidにお問い合わせいただけます。ゲームパッドで発生する可能性のあるすべてのボタンを反復すると、KeyEvent.KEYCODE_BUTTON_somethingと呼ばれています。接続されているゲームパッドは、少なくとものボタンをサポートしている必要があります。

私はXBox 360コントローラとWiimoteを同時に接続していると、XBoxコントローラにボタン1または2がないことがわかりません。例えば、WiimoteにはXやYがありません。しかし少なくともそれはスタートです。

誰もが任意のより良いアイデアを持っている場合は、いくつかを提案してください...

+1

最後にInputDevice.hasKeysを使用してAPIレベル19(4.4)でこれを追加したようです: http://developer.android.com/reference/android/view/InputDevice.html#hasKeys%28int...%29 –

関連する問題