适用于 Wear OS 的 Google 助理

手表语音助理可随时随地实现快速高效的使用场景。穿戴式设备上的语音交互是动态的,这意味着用户在等待响应时可以直接对着手腕说话,而无需盯着设备看。

借助 Google 助理与应用有关的 Action,Android 开发者可以将 Wear OS 应用扩展到 Google 助理,让用户通过语音命令(例如,“Ok Google,现在开始运行 ExampleApp”)快速跳转至所需应用。

限制

Wear 设备上的 Google 助理支持进行媒体和锻炼记录活动互动。如需有关媒体应用与 Google 助理集成的指南,请参阅 Google 助理和媒体应用。Wear OS 应用支持以下健康与健身 BII:

运作方式

与应用有关的 Action 可将应用功能扩展到 Google 助理,让用户能够通过语音快速使用应用功能。当用户向 Google 助理表明他们想要使用您的应用后,Google 助理会在应用的 shortcuts.xml 资源中查找已向您的应用注册的与应用有关的 Action。

shortcuts.xml 中说明了与应用有关的 Action,其中包含 Android capability 元素。Capability 元素将内置 intent (BII) 与执行方式说明(例如深层链接模板)进行配对,这些内置 intent 属于应用功能的语义说明。当您使用 Google Play 管理中心上传应用时,Google 会注册 shortcuts.xml 中声明的功能,以便用户可通过 Google 助理触发应用。

与应用有关的 Action 的流程

上图展示了用户在独立应用中暂停运动。具体步骤如下:

  1. 用户向 Google 助理发出启用特定穿戴式应用的语音请求。
  2. Google 助理将请求与预训练模型 (BII) 进行匹配,并提取查询中找到受 BII 支持的任何参数。
  3. 在此示例中,Google 助理会将查询与 PAUSE_EXERCISE BII 进行匹配,并提取运动名称参数“hike”。
  4. 通过该 BII 的 shortcuts.xml 功能执行方式定义触发应用。
  5. 应用对执行方式进行处理,然后暂停运动。

网络连接

与应用有关的 Action 开发因您的应用在 Android 设备生态系统中的功能而异。

  • 网络共享:如果穿戴式应用依赖于移动应用来实现完整功能,则通过手表向 Google 助理发出的用户查询会在移动设备上执行。必须将与应用有关的 Action 执行方式逻辑内置到移动应用中,这样移动应用才能正常运行。

  • 断开网络共享:如果穿戴式应用无需依赖移动应用便可实现功能,则 Google 助理会在手表上执行本地用户查询。您必须将与应用有关的 Action 功能内置到穿戴式应用中,才能正确执行这些请求。

为 Wear 添加语音功能

按照以下步骤将与应用有关的 Action 与 Wear OS 应用集成:

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

    <!-- AndroidManifest.xml -->
    <meta-data
        android:name="android.app.shortcuts"
        android:resource="@xml/shortcuts" />
    
  3. <intent-filter> 元素添加到 AndroidManifest.xml。这样一来,Google 助理便可以使用深层链接来连接到应用的内容。

  4. 创建 shortcuts.xml,以提供该 BII 的执行方式详细信息。您可以使用 capability 快捷键元素向 Google 助理声明您的应用支持的 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. 更新应用的逻辑以处理传入的与应用有关的 Action 执行方式。

    //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)
    }
    

预览、测试和发布应用

与应用有关的 Action 为审核和测试应用提供了工具。如需了解详情,请参阅适用于 Android Studio 的 Google 助理插件。完成应用测试并创建好测试版本后,您可以请求执行与应用有关的 Action 审核并开展相应部署。如需有关处理常见错误的指导,请查看以下最佳实践。

最佳实践

将您的应用与 Google 助理集成时,请遵循这些推荐的最佳实践,以打造良好的用户体验。

显示相应或相关的确认屏幕以及触感反馈和音频反馈,以便在成功执行用户请求时或提醒出现错误时,响应用户请求。

普通画质 画质更好 最佳画质
  • 创建 intent,以从 activity 启动 ConfirmationActivity
  • 创建 intent,以从 activity 启动 ConfirmationActivity
  • 播放提示音和触感反馈以指示当前状态。
  • 创建 intent,以从 activity 启动 ConfirmationActivity
  • 文字转语音 (TTS) 和触感反馈,用于指示错误或操作成功。

常见错误和解决方法

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

错误情形 用户互动示例 应用响应
活动正在进行 “启动我的 ExerciseName”
“恢复我的 ExerciseName”
显示错误:“活动正在进行。”
未启动任何活动 “暂停/停止我的 ExerciseName” 显示错误:“未启动任何活动。”
活动类型不匹配 “暂停/停止我的 ExerciseName”,它与进行中的活动属于不同运动类型。 显示错误:“活动类型不匹配。”
登录错误 当用户未登录应用时,启动我的 ExerciseName。 播放触感反馈来提醒用户并重定向到登录屏幕。
权限错误 用户无权启动所请求的活动。 播放触感反馈来提醒用户并重定向到权限请求屏幕。
传感器问题 用户在其设备设置中关闭了位置信息服务。 播放触感反馈来提醒用户并显示传感器错误屏幕。后续步骤(可选):
  • 启动 activity 且不使用传感器跟踪,并通知用户。
  • 请求用户确认以启动 activity 且不使用传感器跟踪。