适用于 Wear OS 的 Google 助理

手表语音助理可实现快速高效的移动场景。可穿戴设备上的语音互动是动态的,这意味着用户可能会对着手腕说话,而不必在等待响应时看着设备。

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

限制

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

工作原理

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

应用操作在 shortcuts.xml 中使用 Android capability 元素描述。Capability 元素将内置 intent (BII)(应用功能的语义描述)与实现指令(例如深层链接模板)配对。当您使用 Google Play 管理中心上传应用时,Google 会注册在 shortcuts.xml 中声明的功能,从而使它们可供用户从助理触发。

App Actions flow

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

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

连接性

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

  • 系留:当可穿戴设备应用依赖于移动应用才能实现完整功能时,通过手表向助理发出的用户查询将在移动设备上实现。为此场景正常运行,应用操作实现逻辑必须内置到移动应用中。

  • 非系留:当可穿戴设备应用在功能上独立于移动应用时,助理会在手表上本地实现用户查询。应用操作功能必须内置到可穿戴设备应用中,才能正确实现这些请求。

为 Wear 添加语音功能

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

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

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

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

  5. shortcuts.xml 中,为您选择的 BII 实现一个 capability。以下示例展示了 START_EXERCISE BII 的 capability:

    <?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 助理插件。测试您的应用并创建测试版本后,您可以请求应用操作审核并部署。查看以下最佳实践以获取处理常见错误的指导。

最佳实践

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

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

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

常见错误和解决方法

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

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