【发布时间】:2021-04-08 05:48:56
【问题描述】:
我有一个蓝牙游戏手柄连接到我的 Android 设备,并且连接和传输良好。
从操纵杆获取数据的唯一方法似乎是来自onGenericMotionEvent 或dispatchGenericMotionEvent
来自文档,onGenericMotionEvent:
通用运动事件描述操纵杆移动、鼠标悬停、触控板触摸、滚轮移动和其他输入事件。
我检查了输入的来源,并验证了来源正确,控制器规格等。
但是,我得到的唯一输入是来自我的操纵杆的纯 -1.0、0.0 或 1.0,它确实在指定的 MotionRange 内。它从不返回中间值。
除此之外,我还担心批处理(来自文档):
为了提高效率,带有 ACTION_MOVE 的运动事件可以将多个运动样本批处理到一个对象中。
这是否意味着我永远无法在我的操纵杆上获得直接、即时的反馈?尽管如此,我还是检查了历史值,但MotionEvent#getHistorySize 为每个模拟输入返回了 0。
(附带说明,按钮事件可以正常工作)
这是控制器、批处理、事件处理或其他方面的问题吗?如果无法避免批处理,我可以设置一个单独的线程来持续收集这些信息吗?
为了清楚起见,我使用的是通过蓝牙和 API 级别 30 连接的 Nintendo JoyCon (R)。
【问题讨论】:
标签: java android joystick gamepad