适用于 Wear OS 的 Google 助理

观看语音助理如何实现快速高效的移动场景。可穿戴设备上的语音交互是动态的,这意味着用户可以在等待响应时对着手腕说话,而无需查看设备。

借助助理应用操作,Android 开发者可以将 Wear OS 应用 扩展到 Google 助理,使用语音命令(例如“嘿 Google,在 ExampleApp 上开始我的跑步”)快速将用户引导到他们的应用中。

限制

Wear 上的助理支持媒体和锻炼跟踪活动交互。有关将媒体应用与助理集成的指南,请参阅 Google 助理和媒体应用。Wear OS 应用支持以下健康和健身 BII

工作原理

应用操作将应用功能扩展到助理,使用户能够快速使用语音访问应用功能。当用户向助理指示他们想要使用您的应用时,助理会在应用的 shortcuts.xml 资源中查找注册到您的应用的应用操作。

应用操作在 shortcuts.xml 中使用 Android 功能 元素进行描述。功能元素将 内置意图 (BII)(即应用功能的语义描述)与执行说明(例如深度链接模板)配对。当您使用 Google Play 控制台上传应用时,Google 会注册在 shortcuts.xml 中声明的功能,使它们可供用户从助理触发。

App Actions flow

上图演示了用户在独立应用中暂停锻炼。将发生以下步骤

  1. 用户向助理发出针对特定可穿戴应用的语音请求。
  2. 助理将请求与预训练模型 (BII) 匹配,并提取查询中找到的 BII 支持的任何参数。
  3. 在本例中,助理将查询与 PAUSE_EXERCISE BII 匹配,并提取锻炼名称参数“远足”。
  4. 应用通过其 shortcuts.xml 功能执行定义为该 BII 触发。
  5. 应用处理执行,暂停锻炼。

连接

应用操作开发因您在 Android 驱动的设备生态系统中应用的功能而异。

  • 绑定:当可穿戴应用依赖移动应用才能发挥全部功能时,通过手表向助理发出的用户查询将在移动设备上完成。在这种情况下,应用操作执行逻辑必须内置到移动应用中才能正常运行。

  • 未绑定:当可穿戴应用在功能上独立于移动应用时,助理将在手表上本地完成用户查询。这些请求要正确完成,应用操作功能必须内置到可穿戴应用中。

向 Wear 添加语音功能

按照以下步骤将应用操作与您的 Wear OS 应用集成

  1. 将您想要启用语音的功能与 相应的 BII 匹配。
  2. 在您的主要活动 AndroidManifest.xml 资源中声明对 Android 快捷方式的支持。

    <!-- AndroidManifest.xml -->
    <meta-data
        android:name="android.app.shortcuts"
        android:resource="@xml/shortcuts" />
    
  3. <intent-filter> 元素添加到 AndroidManifest.xml。这使助理能够使用深度链接连接到您的应用内容。

  4. 创建 shortcuts.xml 以提供 BII 的执行详细信息。您使用 capability 快捷方式元素向助理声明您的应用支持的 BII。有关更多信息,请参阅 添加功能

  5. shortcuts.xml 中,为选定的 BII 实现 功能。以下示例演示了 START_EXERCISE BII 的功能

    <?xml version="1.0" encoding="utf-8"?>
    <!-- This is a sample shortcuts.xml -->
    <shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
      <capability android:name="actions.intent.START_EXERCISE">
        <intent
          android:action="android.intent.action.VIEW"
          android:targetPackage="YOUR_UNIQUE_APPLICATION_ID"
          android:targetClass="YOUR_TARGET_CLASS">
          <!-- Eg. name = "Running" -->
          <parameter
            android:name="exercise.name"
            android:key="name"/>
          <!-- Eg. duration = "PT1H" -->
          <parameter
            android:name="exercise.duration"
            android:key="duration"/>
        </intent>
      </capability>
    </shortcuts>
    
  6. 如果适用,请使用 内联清单 扩展对用户语音变体的支持,该清单表示您应用中的功能和内容。

    <capability android:name="actions.intent.START_EXERCISE">
      <intent
        android:targetPackage="com.example.myapp"
        android:targetClass="com.example.myapp.ExerciseActivity">
        <parameter android:name="exercise.name" android:key="exercise" />
      </intent>
    </capability>
    
    <shortcut android:shortcutId="CARDIO_RUN">
      <capability-binding android:key="actions.intent.START_EXERCISE">
        <parameter-binding
          android:key="exercise.name"
          android:value="@array/run_names" />
        </capability-bindig>
    </shortcut>
    
  7. 更新您的应用逻辑以处理传入的应用操作执行。

    //FitMainActivity.kt
    
    private fun handleIntent(data: Uri?) {
        var actionHandled = true
        val startExercise = intent?.extras?.getString(START_EXERCISE)
    
        if (startExercise != null){
            val type = FitActivity.Type.find(startExercise)
            val arguments = Bundle().apply {
                putSerializable(FitTrackingFragment.PARAM_TYPE, type)
            }
            updateView(FitTrackingFragment::class.java, arguments)
        }
        else{
            showDefaultView()
            actionHandled = false
        }
        notifyActionSuccess(actionHandled)
    }
    

预览、测试和发布您的应用

应用操作提供用于查看和测试应用的工具。有关更详细的信息,请参阅Android Studio 的 Google 助理插件。测试完应用并创建测试版本后,您可以请求应用操作审核并进行部署。请查看以下最佳实践,以获取有关处理常见错误的指导。

最佳实践

通过遵循以下推荐的最佳实践,在将您的应用与助理集成时创造积极的用户体验。

显示相应的或相关的确认屏幕,以及触觉和音频反馈,以响应用户请求 - 无论是成功满足请求时,还是提醒错误时。

基本质量 较好质量 最佳质量
  • 创建意图以从活动启动ConfirmationActivity
  • 创建意图以从活动启动ConfirmationActivity
  • 播放提示音和触觉反馈以指示当前状态。
  • 创建意图以从活动启动ConfirmationActivity
  • 文本转语音 (TTS) 和触觉反馈以指示错误或成功。

常见错误和解决方法

对于以下错误情况,请使用以下推荐的应用ConfirmationActivity消息。

错误情况 示例用户交互 应用响应
活动正在进行中 "开始我的ExerciseName"
"恢复我的ExerciseName"
显示错误:“活动正在进行中”。
未启动活动 "暂停/停止我的ExerciseName" 显示错误:“未启动活动”。
活动类型不匹配 "暂停/停止我的ExerciseName",它与正在进行的活动的类型不同。 显示错误:“活动类型不匹配”。
登录错误 "开始我的ExerciseName",而用户未登录应用。 播放触觉反馈以提醒用户并重定向到登录屏幕。
权限错误 用户没有权限启动他们请求的活动。 播放触觉反馈以提醒用户并重定向到权限请求屏幕。
传感器问题 用户已在设备设置中关闭位置服务。 播放触觉反馈以提醒用户并显示传感器错误屏幕。可选下一步
  • 在没有传感器跟踪的情况下启动活动并通知用户。
  • 请求用户确认在没有传感器跟踪的情况下启动活动。