背景
我正在开发一个可以回答某些查询(电话号码查询,也许还有其他查询)的应用程序。
谷歌在 Android 6 上引入了一项新功能,称为“Google Now On Tap”(又名“Assist API”),它允许用户查询屏幕上显示的内容(通过长按主页按钮或通过说某些东西),无需输入任何内容。
谷歌为其提供了开发者教程,here http://developer.android.com/training/articles/assistant.html
问题
我找不到任何代码片段来展示如何为其准备应用程序。
我唯一注意到的是我可以从 Application 类扩展,并在内部添加 OnProvideAssistDataListener ,然后注册到它。
但是,它提出了很多关于如何做到这一点的问题。
遗憾的是,因为这个话题太新了,我几乎找不到任何相关内容,所以我想在这里提出问题。
问题
1)这个新功能是否有任何示例或至少有更多解释的教程?
2)文档中说:
在大多数情况下,实施辅助功能支持将使
助手获取所需信息。这包括提供
android:contentDescription 属性,正在填充
自定义视图的 AccessibilityNodeInfo,确保自定义 ViewGroups
正确地暴露他们的孩子,并遵循最佳实践
“使应用程序可访问”中描述。
为什么以及如何与应用程序的辅助功能一起使用?它与暴露子视图(或根本没有视图)有什么关系?如果应用程序尚未运行(因为该功能在任何地方的任何应用程序上都已激活),那么它怎么可能与视图有关呢?
我认为,只有当前台应用程序是我的应用程序时,才会调用此方法,但如果是这种方式,我如何根据输入的内容实际提供针对所有应用程序出现的查询?
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 是否应该是我查看的输入,并决定我的应用程序是否可以处理它或忽略它?