辅助功能服务:获取可以立即交互的视图(与语音访问相同)?

Accessibility service: get views you can interact with instantly (same as Voice Access)?

目标是获得可以立即进行交互的视图(可以立即点击,然后会发生一些事情)。如果视图通常可见且可点击,但悬停在另一个 view/menu/side 面板上,则应将其省略。

Voice Access 这样做。而且它似乎使用辅助功能 API.

最好的例子是 Google 地图中的底部菜单。当它展开时,下面的 "Search along the route" 按钮仍然可见,但它 被应用高亮显示。


那我们有什么?

我错过了什么?


关键点是AccessibilityService.onAccessibilityEvent() the tree hierarchy is not final. To get views that are interactable at the moment, AccessibilityService.getRootInActiveWindow()应该延迟调用。

AccessibilityNodeInfo#getDrawingOrder() 可能会对您有所帮助。请注意,您需要进行树遍历以确定什么在什么之上。

仍然有透明视图的极端情况会给您带来麻烦,但这应该可以帮助您完成 95% 的工作。我们正在为这种情况寻找更好的答案。