如何提供在Google-Now-On-Tap上显示的内容?

and*_*per 5 android android-6.0-marshmallow google-assist-api

背景

我开发的应用程序可以回答某些查询(电话号码查询,也可能是其他查询).

Google在Android 6上引入了一项名为"Google Now On Tap"的新功能(AKA"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);
}
Run Code Online (Sandbox Code Playgroud)

新功能对每个键有什么作用?是应用程序还是Google-Now-On-Tap?我有什么选择呢?这是我在哪里定义我的应用程序是否可以处理该功能建议我的内容?AssistContent应该是我看到的输入,并决定我的应用程序是否可以处理它或忽略它?