Dav*_*ven 5 android input-devices gamepad-api
我有一个可以连接游戏手柄的Android设备(它是一个完全标准的XBox 360控制器,但我也需要支持其他品种).游戏手柄显示为带有一些模拟轴和一些按钮的InputDevice.
我需要能够查询Android以找出游戏手柄支持的按钮.有谁知道如何做到这一点?
我知道系统有这个信息,因为如果我编写一个打开的命令行应用程序/dev/input/event...并使用EVIOCGBITioctl 查询按钮,我会从内核中获得一个很好的支持按钮列表.但我无法从Android应用程序执行此操作,因为我无权直接访问输入设备.
看起来应该可以获取InputDevice的KeyCharacterMap对象并进行查询; 但看起来Android已将默认的QWERTY键盘键映射附加到游戏手柄,而不是构建一个实际匹配游戏手柄支持的键盘.这将很高兴地告诉我游戏手柄有一个Q键,它没有,并且它没有BUTTON_X键,它所做的,并且我正在接收关键事件.所以这没有帮助.
有没有办法做到这一点?
我还没有找到办法,但我找到了一个可怕的解决方法。
如果你打电话KeyCharacterMap.deviceHasKey(keycode),我可以询问Android系统上的输入设备是否支持指定的键码。通过迭代游戏手柄上可能出现的所有按钮(有用的是,它们都被称为KeyEvent.KEYCODE_BUTTON_something),我可以发现任何连接的游戏手柄必须至少支持其中一些按钮。
这不是一个很好的解决方案 --- 如果我同时连接了 Xbox 360 控制器和 Wiimote,那么我无法弄清楚 Xbox 控制器没有按钮 1 或 2,而 Wiimote 也没有例如,X 或 Y。但至少这是一个开始。
如果有人有更好的想法,请提出一些...
| 归档时间: |
|
| 查看次数: |
2171 次 |
| 最近记录: |