gpt4 book ai didi

android - 无障碍服务 : get views you can interact with instantly (same as Voice Access)?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:13:48 26 4
gpt4 key购买 nike

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

Voice Access去做。而且它似乎使用了 Accessibility API。

Google map 中的底部菜单就是一个完美的例子。当它展开时,下方的“沿路线搜索”按钮仍然可见,但应用程序突出显示它。


那我们有什么?

  • 有一个流 AccessibilityEvent .最有用的是 AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED ,这样我们就可以在有事情发生时得到通知。
  • getSource()我们可以获得 AccessibilityNodeInfo 的实例触发了事件。或者我们可以用 AccessibilityService.getRootInActiveWindow() 得到一个窗口的根.有了它,我们就能够遍历应用程序中的整个层次结构。
  • AccessibilityNodeInfo不提供有关 View 的 z 顺序的任何信息,因此无法理解上面的内容和下面的内容。
  • 底部菜单在同一个窗口中(不是模态的)。
  • 如果您尝试在底部菜单展开时单击“沿路线搜索”按钮,底部菜单会折叠。所以您实际上无法点击它,它位于菜单下方。
  • 我查看了 AccessibilityNodeInfo 的所有参数,例如 isVisibleToUser()isClickable()isContextClickable()isSelected()isFocusable (), isFocused(), isAccessibilityFocused() 和按钮在底部菜单折叠/展开时有相同的参数。它对用户可见、可聚焦和可点击。

  • 我查看了隐藏的 API,没有发现任何有用的东西。

我错过了什么?


enter image description here

最佳答案

关键点在于 AccessibilityService.onAccessibilityEvent()树层次结构不是最终的。要获得目前可交互的 View ,AccessibilityService.getRootInActiveWindow()应该延迟调用。

关于android - 无障碍服务 : get views you can interact with instantly (same as Voice Access)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56563740/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com