观看语音助理如何实现快速高效的移动场景。可穿戴设备上的语音交互是动态的,这意味着用户可以在等待响应时对着手腕说话,而无需查看设备。
借助助理应用操作,Android 开发者可以将 Wear OS 应用 扩展到 Google 助理,使用语音命令(例如“嘿 Google,在 ExampleApp 上开始我的跑步”)快速将用户引导到他们的应用中。
限制
Wear 上的助理支持媒体和锻炼跟踪活动交互。有关将媒体应用与助理集成的指南,请参阅 Google 助理和媒体应用。Wear OS 应用支持以下健康和健身 BII
工作原理
应用操作将应用功能扩展到助理,使用户能够快速使用语音访问应用功能。当用户向助理指示他们想要使用您的应用时,助理会在应用的 shortcuts.xml
资源中查找注册到您的应用的应用操作。
应用操作在 shortcuts.xml
中使用 Android 功能 元素进行描述。功能元素将 内置意图 (BII)(即应用功能的语义描述)与执行说明(例如深度链接模板)配对。当您使用 Google Play 控制台上传应用时,Google 会注册在 shortcuts.xml
中声明的功能,使它们可供用户从助理触发。
上图演示了用户在独立应用中暂停锻炼。将发生以下步骤
- 用户向助理发出针对特定可穿戴应用的语音请求。
- 助理将请求与预训练模型 (BII) 匹配,并提取查询中找到的 BII 支持的任何参数。
- 在本例中,助理将查询与
PAUSE_EXERCISE
BII 匹配,并提取锻炼名称参数“远足”。 - 应用通过其
shortcuts.xml
功能执行定义为该 BII 触发。 - 应用处理执行,暂停锻炼。
连接
应用操作开发因您在 Android 驱动的设备生态系统中应用的功能而异。
绑定:当可穿戴应用依赖移动应用才能发挥全部功能时,通过手表向助理发出的用户查询将在移动设备上完成。在这种情况下,应用操作执行逻辑必须内置到移动应用中才能正常运行。
未绑定:当可穿戴应用在功能上独立于移动应用时,助理将在手表上本地完成用户查询。这些请求要正确完成,应用操作功能必须内置到可穿戴应用中。
向 Wear 添加语音功能
按照以下步骤将应用操作与您的 Wear OS 应用集成
- 将您想要启用语音的功能与 相应的 BII 匹配。
在您的主要活动
AndroidManifest.xml
资源中声明对 Android 快捷方式的支持。<!-- AndroidManifest.xml --> <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" />
将
<intent-filter>
元素添加到 AndroidManifest.xml。这使助理能够使用深度链接连接到您的应用内容。创建 shortcuts.xml 以提供 BII 的执行详细信息。您使用
capability
快捷方式元素向助理声明您的应用支持的 BII。有关更多信息,请参阅 添加功能。在
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>
如果适用,请使用 内联清单 扩展对用户语音变体的支持,该清单表示您应用中的功能和内容。
<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
消息。
错误情况 | 示例用户交互 | 应用响应 |
---|---|---|
活动正在进行中 | "开始我的ExerciseName" "恢复我的ExerciseName" |
显示错误:“活动正在进行中”。 |
未启动活动 | "暂停/停止我的ExerciseName" | 显示错误:“未启动活动”。 |
活动类型不匹配 | "暂停/停止我的ExerciseName",它与正在进行的活动的类型不同。 | 显示错误:“活动类型不匹配”。 |
登录错误 | "开始我的ExerciseName",而用户未登录应用。 | 播放触觉反馈以提醒用户并重定向到登录屏幕。 |
权限错误 | 用户没有权限启动他们请求的活动。 | 播放触觉反馈以提醒用户并重定向到权限请求屏幕。 |
传感器问题 | 用户已在设备设置中关闭位置服务。 | 播放触觉反馈以提醒用户并显示传感器错误屏幕。可选下一步
|