Android NDK 输入源

Android NDK Input Sources

我有一个本机 C++ Android 应用程序。

我正在使用 AINPUT_SOURCE 枚举来过滤输入事件,因为它们进入我的本地 activity。目前,我只关心AINPUT_SOURCE_TOUCHSCREEN (0x1002)

这似乎适用于 99% 的设备,但摩托罗拉 Moto G6 Plus 不符合此标准。

G6报告输入源为0x5002。无论您点击触摸屏多少次,设备都不会发送实际的触摸屏输入事件。

在数月的 G6 用户报告无法玩我的游戏后,我只能通过自己购买一个来发现这一点。

官方 Android NDK 参考站点甚至没有列出带有值 (0x5002) 的输入源。

我看了一圈,似乎没有任何关于这个问题的讨论。

还有其他 AINPUT_SOURCE 类型我应该了解吗? NDK 参考中未列出的那些。

我希望能够继续使用这些标志来将我的触摸输入代码与键盘、鼠标、控制器按钮等分开。

谢谢!

Android NDK 输入参考:

https://developer.android.com/ndk/reference/group/input

这些是 ENUM,因此您必须以这种方式计算它们:5002 由 0x02 + 0x1000 + 0x4000 = 触摸屏 + 手写笔 + 按钮组成。该设备似乎有一个手写笔和一个按钮,因此您将获得所有这三样东西的事件。要检查设备是否支持 TOUCHSCREEN,您只需执行 "founded_flag & 0x1000 == 0x1000",如果此检查为您提供 TRUE 值,则该设备支持常见的触摸屏行为。