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

2024-01-02

背景

我正在开发一个可以回答某些查询(电话号码查询,也许还有其他查询)的应用程序。

谷歌在 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 是否应该是我查看的输入,并决定我的应用程序是否可以处理它或忽略它?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 使用 Apache Commons Math 插值函数

    我正在尝试实现一些插值函数来绘制一些值 其中 X 值 Date seconds 且 Y 值 double 我一直在研究使用Apache Commons Mathlib 来实现这一点 我找到了一种我认为可以使用的方法here http www
  • Eclipse-CDT:如何配置调试器以在出现异常时停止?

    这可能是一个 GDB 问题 但我想在调试器中运行我的应用程序 并在引发异常时让调试器中断 这样我就可以看到代码在哪里以及当时它在做什么 我经常在 Visual Studio 中使用 调试 gt 异常 对话框执行此操作 检查我想要停止的异常类
  • 有没有办法重置网络客户端?

    我在网络客户端解析一些非常敏感的网页时遇到问题 不知何故 网络客户端无法执行某些任务 我什至不知道为什么 没有例外 没有错误 只是简单地不起作用 这不是网站的问题 我循环运行 webclient 但是 只有第一个请求成功 所有接下来的请求都
  • 如何将 PdfPTable 插入现有 PDF 模板?

    Update 经过一番讨论 我们决定使用 TeX 特别是与 Windows 兼容的MiKTeX http www miktex org 我们意识到 即使我们可以通过微观管理布局来格式化动态加长表 这似乎不可能 或者与计算每行的行高一样繁琐
  • JavaFX 应该取代 Swing 吗?

    我习惯了 Swing 编程 也听说过 JavaFX 它是否应该取代 Swing 成为用 Java 编写桌面应用程序的首选平台 换句话说 我应该为我的新项目选择 JavaFX 吗 是的 JavaFX 正在取代 Swing 另请参阅Oracle
  • 文本字段、标签和按钮

    我在理解 GUI 以及为什么我的程序无法正常运行方面遇到了一些困难 是因为我必须扩展到 JFrame 类吗 这是一个代码 import java awt event ActionEvent import java awt event Act
  • 这个具有空捕获列表的 lambda 如何能够引用到达范围名称?

    在 C 14 标准 5 1 2 12 中 它显示了 lambda 表达式的示例 该表达式显然似乎能够引用到达范围的变量x 虽然 捕获列表为空 即没有捕获默认值 该评论说它 没有捕获x 这是例子 void f int const int 2
  • Emacs:定义命令输出的目标窗口

    我厌倦了 emacs 用它的输出来破坏我的窗口 而且是不可预测的 我想在 emacs 框架中有几个窗口 并且每个窗口仅用于特定目的 例如 ECB panels Editor 1 Editor 2 Bookmarks Messages out
  • Intellij 拒绝将 Kotlin 目标 jvm 设置为 1.8?

    ParallelStreams kts 41 15 error calls to static methods in Java interfaces are prohibited in JVM target 1 6 Recompile wi
  • 挂载Android模拟器创建的qcow2镜像

    我正在尝试挂载 Android 模拟器创建的 userdata qemu img qcow2 文件 以下过程不起作用 sudo qemu nbd c dev nbd0 android avd Pixel C API 27 avd userd
  • python optparse,如何在使用输出中包含附加信息?

    使用 python 的 optparse 模块 我想在常规使用输出下方添加额外的示例行 我当前的 help print 输出如下所示 usage check dell py options options h help show this
  • ES5 中的 Object.defineProperty?

    我看到关于 新 Object create 的帖子 它使枚举可配置 但是 它依赖于 Object defineProperty 方法 我找不到此方法的跨浏览器实现 我们是否还在为旧的 Object create 编写代码 我不能写在 IE6
  • 如何使用 C++ 对 Arduino 进行编程 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 最近我一直在摆弄我的 Arduino 我想知道是否有某种方法可以用 C 对 Arduino 进行编程 我一直在使用 C 对其进行编程加
  • ActiveCollab API 分页和速率限制

    我在以下位置找不到有关 API 分页或速率限制的信息 https developers activecollab com api documentation https developers activecollab com api doc
  • 如何在jquery mobile可折叠列表中添加多个图标

    我想在 jquery mobile 可折叠列表的加号图标附近添加另一个图标 但无法添加它 因为 jquery mobile 动态创建该图标 任何建议将不胜感激 这当然是一种 hack 但您可以等待页面初始化 然后找到列表视图小部件并将图标的
  • 使用 PowerShell 远程处理在活动用户会话中启动程序

    是否可以检测到特定用户在计算机上有一个打开的会话 并在该会话中打开一个进程 以便用户可以使用 PowerShell 远程处理与应用程序进行交互 我将如何检测哪些用户在计算机上打开了会话以及他们的状态 活动 空闲 断开连接等 我如何在其中一个
  • 如何在 Python 中将一维数组打印为网格?

    我有一个包含 200 个项目的数组 grid 0 0 0 0 0 0 0 0 0 0 0 0 0 0 and so on 我怎样才能像这样将它打印为二维数组 实际上每 10 个字符就分割一次 0 0 0 0 0 0 0 0 0 0 0 0
  • 如何防止 ReSharper 在添加 using 指令时缩短命名空间?

    当我使用 ReSharper 添加 using 指令 使用 Alt Enter 时 它会删除命名空间的 不必要 部分 我更喜欢使用完整的命名空间 这也是 Visual Studio 的行为 Example namespace MyCompa
  • CF8 和 AES 解密 MySQL AES:编码不同

    这已经成为一种练习 告诉我我做错了什么 而不是关键任务 但我仍然想看看我犯了什么 可能很简单 的错误 我正在使用 mysql 5 1 x AES ENCRYPT 来加密字符串 我正在使用 CF 的generateSecretKey AES
  • 如何提供要在 Google-Now-On-Tap 上显示的内容?

    背景 我正在开发一个可以回答某些查询 电话号码查询 也许还有其他查询 的应用程序 谷歌在 Android 6 上引入了一项新功能 称为 Google Now On Tap 又名 Assist API 它允许用户查询屏幕上显示的内容 通过长按