背景
我正在开发一个可以回答某些查询(电话号码查询,也许还有其他)的应用程序。
Google 在 Android 6 上引入了一项新功能,称为“Google Now On Tap”(又名“Assist API”),它允许用户查询屏幕上显示的内容(通过长按主页按钮或说某些东西)而无需输入任何内容。
谷歌为它提供了一个开发者教程,在这里
问题
我找不到任何代码片段来展示如何为它准备应用程序。
我注意到的唯一一件事是我可以从 Application 类扩展,并在里面添加 OnProvideAssistDataListener 并注册到它。
但是,它引发了很多关于如何做到这一点的问题。
可悲的是,因为这个话题太新了,我几乎找不到任何关于它的东西,所以我想在这里问问题。
问题
1) 这个新功能是否有任何示例或至少有更解释的教程?
2)文档中说:
在大多数情况下,实施可访问性支持将使助手能够获得所需的信息。这包括提供 android:contentDescription 属性、为自定义视图填充 AccessibilityNodeInfo、确保自定义 ViewGroup 正确地公开其子级,以及遵循“使应用程序可访问”中描述的最佳实践。
为什么以及如何与应用程序的辅助功能一起使用?它与暴露子视图(或根本视图)有什么关系?如果应用程序尚未运行(因为该功能已在任何应用程序、任何地方激活),它甚至可能与视图有关。
我认为只有在前台应用程序是我的应用程序时才会调用它,但如果是这样,我如何才能根据输入的内容实际提供针对所有应用程序出现的查询?
3) 从 Application 扩展的类是否应该实现 OnProvideAssistDataListener ?如果是这样,为什么需要注册呢?如果不是,Google-Now-On-Tap 怎么可能与它配合使用?它不能只是打开所有有这样一个类的应用程序,看看他们是否注册......
4)文档有一个我不明白的示例片段:
@Override
public void onProvideAssistContent(AssistContent assistContent) {
super.onProvideAssistContent(assistContent);
String structuredJson = new JSONObject()
.put("@type", "MusicRecording")
.put("@id", "example.comhttps://example.com/music/recording")
.put("name", "Album Title")
.toString();
assistContent.setStructuredData(structuredJson);
}
新功能对每个键有什么作用?它是由应用程序使用,还是由 Google-Now-On-Tap 使用?我有什么选择?这是我定义我的应用程序是否可以处理该功能建议我的内容的地方吗?AssistContent 是否应该是我查看的输入,并决定我的应用程序是否可以处理或忽略它?