手表语音助理可实现快速高效的移动场景。可穿戴设备上的语音互动是动态的,这意味着用户可能会对着手腕说话,而不必在等待响应时看着设备。
借助助理应用操作,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
中声明的功能,从而使它们可供用户从助理触发。
上图展示了用户在独立应用中暂停锻炼。以下步骤发生:
- 用户向助理发出针对特定可穿戴设备的语音请求。
- 助理将请求与预训练模型 (BII) 匹配,并提取查询中支持 BII 的任何参数。
- 在此示例中,助理将查询与
PAUSE_EXERCISE
BII 匹配,并提取锻炼名称参数“hike”。 - 应用通过其针对此 BII 的
shortcuts.xml
功能实现定义进行触发。 - 应用处理实现,暂停锻炼。
连接性
应用操作的开发因应用在 Android 驱动设备生态系统中的功能而异。
系留:当可穿戴设备应用依赖于移动应用才能实现完整功能时,通过手表向助理发出的用户查询将在移动设备上实现。为此场景正常运行,应用操作实现逻辑必须内置到移动应用中。
非系留:当可穿戴设备应用在功能上独立于移动应用时,助理会在手表上本地实现用户查询。应用操作功能必须内置到可穿戴设备应用中,才能正确实现这些请求。
为 Wear 添加语音功能
按照以下步骤将应用操作与您的 Wear OS 应用集成:
- 将您要启用语音功能的应用内功能与相应的 BII 匹配。
在您的主 activity
AndroidManifest.xml
资源中声明对 Android 快捷方式的支持。<!-- AndroidManifest.xml --> <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" />
向 AndroidManifest.xml 添加
<intent-filter>
元素。这使助理能够使用深层链接连接到您的应用内容。创建 shortcuts.xml 以提供您的 BII 的实现详细信息。您可以使用
capability
快捷方式元素向助理声明您的应用支持的 BII。如需了解更多信息,请参阅添加功能。在
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>
如果适用,使用内嵌库存扩展对用户语音变体的支持,内嵌库存代表您应用中的功能和内容。
<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>
更新您的应用逻辑以处理传入的应用操作实现。
//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
消息。
错误情况 | 用户互动示例 | 应用响应 |
---|---|---|
活动已在进行中 | “开始我的 锻炼名称” “恢复我的 锻炼名称” |
显示错误:“活动已在进行中。” |
未开始任何活动 | “暂停/停止我的 锻炼名称” | 显示错误:“未开始任何活动。” |
活动类型不匹配 | “暂停/停止我的 锻炼名称”,这是与正在进行的活动不同的锻炼类型。 | 显示错误:“活动类型不匹配。” |
登录错误 | “开始我的 锻炼名称”,而用户未登录应用。 | 播放触觉反馈以提醒用户并重定向到登录屏幕。 |
权限错误 | 用户没有权限开始他们请求的活动。 | 播放触觉反馈以提醒用户并重定向到权限请求屏幕。 |
传感器问题 | 用户在设备设置中关闭了定位服务。 | 播放触觉反馈以提醒用户并显示传感器错误屏幕。可选的后续步骤:
|