我目前正在为RealWear HMT-1开发颤动应用程序,这是一台戴在头上的工业安卓电脑,所有与它的互动都建立在语音命令上。它运行一项后台服务,将语音命令转换为按钮点击和其他手势。实际上,每个应用程序都可以通过语音进行控制,但为了帮助服务找到您需要的一些控制,您应该在视图布局中提供一些附加元数据。它支持按文本、资源id和内容描述属性进行搜索。不幸的是,您不能为Flutter小部件设置这些属性。
幸运的是,有一种方法可以将原生Android视图嵌入到Flutter应用程序中。我创建了一个简单的按钮插件,就像这里描述的https://medium.com/flutter-community/flutter-platformview-how-to-create-flutter-widgets-from-native-views-366e378115b6,并成功地在示例应用程序中显示了这个按钮。但问题来了-这个本机按钮在视图层次结构中是看不见的,我不能在UI Automator Viewer中选择它,并且我在视图树中看不到它。最糟糕的是,它没有被HMT-1语音服务检测到,它通常用一些数字覆盖标记所有检测到的按钮(即使是常规的颤动按钮,那些我不能绑定元数据的按钮),但不是这个按钮。谷歌搜索让我认为这可能与可访问性有关,也许我应该实现一些AccesibilityDelegate或AccessibilityNodeProvider,所以我尝试了这种方法,但没有成功。
我是Android的新手,也是Flutter的新手,如果有任何帮助,我将不胜感激。
发布于 2019-03-27 19:37:04
抓住你了。你必须用语义包装你的小部件,并且在按钮的情况下定义onTap回调来使它可点击。之后,可访问性工具将能够检测视图层次结构中的小部件。
https://stackoverflow.com/questions/55247785
复制相似问题