问题描述
我正在为自定义 rom (Android 9) 构建自定义启动器,因此我拥有启动器的 root、系统 uid 甚至更改 android 源的访问权限。 我想构建可随时在任何应用程序中使用的自定义手势。 所以我必须有能力倾听所有的手势,也许还有能力拦截它们。
据我所知,可以在开发人员设置中显示所有触摸事件,但它是如何完成的?此代码位于何处?或者有没有其他地方可以监听触摸事件?
一些注意事项: 我尝试构建自定义无障碍服务,它仅适用于点击事件,但我需要触摸事件。
解决方法
是怎么做的?此代码位于何处?
对于 android 9,指针位置在 PhoneWindowManager#enablePointerLocation 中启用。 WindowManagerService 为PhoneWindowManager 提供了一个内部API registerPointerEventListener。所以它可以获取所有的输入事件。
mWindowManagerFuncs.registerPointerEventListener(mPointerLocationView)
还有其他地方可以监听触摸事件吗?
如果您可以修改框架并构建您的自定义rom,那么您可以将相同的API添加到WindowManager,然后您的应用程序就可以调用这个新的API来监听触摸事件。