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

时间:2015-11-29 15:57:42

标签: android android-6.0-marshmallow google-assist-api

背景

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

Google在Android 6上推出了一项新功能,名为" Google Now On Tap" (AKA" Assist API"),允许用户查询屏幕上显示的内容(通过长按主页按钮或说出某些内容触发),而无需键入任何内容。

Google为其提供了开发人员教程here

问题

我无法找到任何代码段来展示如何为其准备应用。

我唯一注意到的是我可以从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应该是我看到的输入,并决定我的应用程序是否可以处理它或忽略它?

0 个答案:

没有答案