Android:捕捉并拦截所有手势

问题描述

我正在为自定义 rom (Android 9) 构建自定义启动器,因此我拥有启动器的 root、系统 uid 甚至更改 android 源的访问权限。 我想构建可随时在任何应用程序中使用的自定义手势。 所以我必须有能力倾听所有的手势,也许还有能力拦截它们。

据我所知,可以在开发人员设置中显示所有触摸事件,但它是如何完成的?此代码位于何处?或者有没有其他地方可以监听触摸事件?

一些注意事项: 我尝试构建自定义无障碍服务,它仅适用于点击事件,但我需要触摸事件。

解决方法

是怎么做的?此代码位于何处?

对于 android 9,指针位置在 PhoneWindowManager#enablePointerLocation 中启用。 WindowManagerService 为PhoneWindowManager 提供了一个内部API registerPointerEventListener。所以它可以获取所有的输入事件。 mWindowManagerFuncs.registerPointerEventListener(mPointerLocationView)

还有其他地方可以监听触摸事件吗?

如果您可以修改框架并构建您的自定义rom,那么您可以将相同的API添加到WindowManager,然后您的应用程序就可以调用这个新的API来监听触摸事件。