Android NDK输入源

时间:2018-08-09 05:41:59

标签: android c++ input android-ndk motorola

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

我正在使用AINPUT_SOURCE枚举来过滤输入事件进入我的本机活动的过程。目前,我只关心AINPUT_SOURCE_TOUCHSCREEN (0x1002)

这似乎可以在99%的设备上运行,但是Motorola Moto G6 Plus不符合该标准。

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

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

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

我环顾四周,似乎没有关于此问题的讨论。

还有其他我应该知道的AINPUT_SOURCE类型吗? NDK参考上未列出的那些。

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

谢谢!

Android NDK输入参考:

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

1 个答案:

答案 0 :(得分:1)

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