[英]Accessibility service: get views you can interact with instantly (same as Voice Access)?
我们的目标是获得可与瞬间 (可以单击现在有什么东西会发生)进行交互的意见。 如果视图一般可见且可点击但由另一个视图/菜单/侧面板悬停,则应省略该视图。
Voice Access可以做到这一点。 它似乎使用Accessibility API。
完美的例子是谷歌地图的底部菜单。 当它展开时,下面的“沿着路线搜索”按钮仍然可见,但应用程序没有突出显示它。
我查看了AccessibilityNodeInfo的所有参数,如isVisibleToUser()
, isClickable()
, isContextClickable()
, isSelected()
, isFocusable()
, isFocused()
, isAccessibilityFocused()
和底部菜单时按钮具有相同的参数折叠/展开。 它对用户可见,可聚焦且可点击。
我查看了隐藏的API,但没有看到任何有用的东西。
我错过了什么?
关键点在于,在AccessibilityService.onAccessibilityEvent()中 ,树层次结构不是最终的。 要获取此时可交互的视图,应调用AccessibilityService.getRootInActiveWindow()并延迟。
AccessibilityNodeInfo#getDrawingOrder()可能会帮助你。 请注意,您需要执行树遍历以确定最重要的内容。
仍然存在透明视图的角落案例会给你带来麻烦,但这应该可以让你获得95%的胜利。 我们正在为这个案子找到更好的答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.