我们已经开始在https://developer.android.com/guide/topics/ui/accessibility/services.html上研究安卓的建筑无障碍服务。基于此文档,我们可以代表用户执行自定义手势,如https://developer.android.com/guide/topics/ui/accessibility/services.html#act-for-users的“为用户采取操作”一节中所述。基于本文档,我们有以下问题。
1)正如我们所理解的,用户会执行一些手势,我们的代码也会监听。让我们称这些为倾听手势。然后,我们的代码可以为用户执行一些手势。让我们称这些为执行手势。问题是,执行手势对触摸和探索层的影响在哪里,还是在触摸和探索层的下面?对于更多信息,触摸和浏览是Android操作系统的功能,可由辅助功能服务请求。
2)执行手势是否会触发通知可访问性服务的AccessibilityEvent?如果是,则如果收听手势和执行手势恰好相同,则可能存在递归。也就是说,监听的手势可能是向右滑动,这会触发一些事件。执行手势也可以说是向右滑动。现在,这也将触发相同的事件处理程序。
3)我们如何确定执行手势是否成功执行?如果执行手势发生在触摸和探索层的下面,那么整个事情就有意义了。
任何帮助都将不胜感激。
发布于 2019-02-18 01:34:45
1)不会,代表用户使用无障碍服务功能执行手势不会最终被捕获为“监听”手势。AccessibilityService实际上将手势发送到计算屏幕触摸的API,其方式与屏幕完全相同,完全绕过了屏幕。因此,这些事件对于辅助技术是不可见的。但是,如果你抓住一个引用,你当然可以自己从AccessibilityService调用这些手势的回调。因此,您执行的任何手势都不会触发触摸来探索手势。事实上,你可以通过触摸来触发执行一个手势来探索手势。
2)对我来说,这实际上是和问题1一样的问题。不,它不是,因为问题1中的所有原因都是相同的。
3)这个问题有两个答案。第一个是'dispatchGesture‘返回一个布尔值。如果操作系统在调度您的手势时没有遇到技术问题,则此布尔值为真。例如,潜在的问题可能是:您试图在屏幕外进行交互。你真是太傻了!LOL。如果此方法返回"true“,则表示您的手势通常是可接受的,并且已执行。在这一点上,我们可以确定一个手势是执行的,就像用户自己实际执行该手势一样。这与操作系统中的逻辑完全相同。如果你不相信我,你可以自己看看AOSP :)
3B)确保一切正常的唯一方法是看着你的手势在屏幕上采取行动。
https://stackoverflow.com/questions/48226853
复制相似问题