将媒体应用扩展到 Wear OS

Wear OS 是 Android 用户随时随地与各种音频内容(如有声读物、音乐、播客和电台)互动的绝佳平台。借助 Wear OS by Google 谷歌,您可以编写各种类别的应用(包括音频内容),帮助用户保持联系、保持健康和表达自我。

如果您已有 Android 开发经验,那么您可能会对应用和通知等功能十分熟悉。在开发适用于 Wear OS 的应用时,您可以运用所掌握的 Modern Android Development 知识。

Wear OS 应用开发原则

Wear OS 以 Android 为基础,因此 Android 的许多最佳实践也适用于 Wear OS。为了缩短开发时间,请在开始构建 Wear OS 应用之前,查看这些原则

创建并运行 Wear OS 应用

若要开始体验,最好的方法是亲自看看 Wear OS 应用!您可以使用 Android Studio 中的模板构建您的首个 Wear OS 应用。该应用展示了在 Wear OS 设备上一目了然地查看信息的不同方法,并介绍了在该平台上开发应用的一些最佳实践。

如需查看分步指南,请参阅在 Wear OS 上创建和运行应用

Wear OS 应用开发与移动应用开发

设计移动应用的方式与设计 Wear OS 应用的方式之间存在差异。如需了解与 Android 移动应用开发相比,特定功能、API 或最佳实践在 Wear OS 应用开发中有何不同,请查看功能表

Wear OS 上媒体应用的常见用例

在 Wear OS 上构建媒体应用,让用户能够从手表流式传输和播放下载的内容。为了提供最佳用户体验,不妨考虑实现以下媒体用例,它们在 Wear OS 设备上表现尤为出色。

播放下载的内容

用户可以在锻炼时收听内容,而无需连接到网络。虽然 Wear OS 设备通常支持蓝牙和 Wi-Fi,但可能不支持 LTE。针对不稳定的连接和离线用例(例如锻炼和通勤)进行设计,这些用户可能将移动设备留在家里。如需了解详情,请参阅使用下载的内容

通过任意可用网络在线播放

用户可以通过手表在线播放音乐、播客或电台,但在线播放会消耗手表的电量。当用户选择在手表上听音乐时,应用可在浏览列表中显示最近用过的下载内容,以便用户优先聆听已下载的内容。考虑添加一个按钮,点按该按钮可将用户带到完整的下载列表,如下图所示。

音频库列表包括 音频库列表,包括播放列表和有声读物

使用 Compose for Wear OS 进行构建

Compose for Wear OS 是 Android Jetpack 的一部分,就像您使用的其他 Wear Jetpack 库一样,它也可以帮助您更快地编写出更好的代码。这是 Google 推荐用于为 Wear OS 应用构建界面的方法。

Jetpack Compose 在移动设备上的许多开发原则都适用于 Compose for Wear OS。不过,二者间也有一些重要的区别。使用 Compose for Wear OS 构建应用时,请务必设计可让用户在手表上方便快捷地访问媒体内容的应用。手表是一个独特的平台,方便、快速地互动是其首要任务,因为用户与手表互动的时间比在手机或平板电脑上花费的时间要少得多。

如需详细了解声明式界面框架的一般优势,请参阅为什么采用 Compose。如果您不熟悉如何使用 Jetpack Compose 工具包,请参阅 Compose 开发者在线课程。 如需详细了解 Compose for Wear OS,请参阅 Compose for Wear OS 开发者在线课程和 GitHub 上的 Wear OS 示例仓库

Wear OS 媒体工具包

Wear OS 媒体工具包是一套库,可加速开发适用于 Wear OS 的高品质媒体应用。该工具包是 Horologist 项目的一部分。Horologist 是一个附加库,有助于加快应用开发。

该工具包为媒体用例使用一流的库,从使用 Compose for Wear OS 实现的界面到使用 Media3 实现的播放功能,不一而足。如果您的应用有特定要求,您可以采用工具包中的界面实现,同时仍依赖于您现有的播放器。

媒体工具包可以帮助您解决各种难题,例如避免在手表的内置扬声器上播放媒体内容、启用音频分流,以及避免不必要地对网络进行 ping 操作。

设计媒体应用提供了您使用 Horologist 实现的指南,以及有关 Wear OS 架构和用例的信息。

针对 Wear OS 特定挑战的最佳实践

在 Wear OS 上创建媒体应用时,请考虑手表上的用户体验与移动设备上的用户体验有何不同,特别是在以下方面:

  • 内置扬声器不适用于播放音乐。因此,请使用蓝牙扬声器或耳机。
  • 网络连接受限或变化多样,因此您应该针对不同的网络条件优化应用,并最大限度地减少网络使用量。
  • 小型电池的功率有限。如果设备在主 CPU 上执行音频处理,以及当设备的 LTE 信号较差时,消耗的电量会更快。添加了对音频分流的支持,以帮助节省电量。
  • 设备提供多个界面 surface,可让用户再次与您的应用互动。您可以在这些 surface 上展示应用的功能。

使用蓝牙音箱或耳机

虽然手表扬声器可用于通话和引导式活动,但它们并不能提供最佳媒体内容收听体验。

为了提供最佳用户体验,您的应用可以使用 Media Toolkit 来确保在有蓝牙耳机或扬声器连接到手表时播放音频。

媒体工具包提供了一个特定的 Media3 扩展程序,用于修饰 ExoPlayer 实例,并在它发出声音之前主动停止意外播放。

根据网络状况进行优化

为了让媒体应用在手表上正常运行,您需要选择以下流式传输注意事项和网络条件:

  • 您可以通过选择低比特率(如 48 kbps)和编解码器(如 AAC 和 MP3)来优化内容。
  • 优化图片和轨道的预提取策略,以便在连接暂时中断时继续播放。
  • 在所有网络配置(Wi-Fi、LTE 和通过蓝牙连接到手机的手表)下测试您的应用。此外,您还要测试手表在网络之间切换时会发生什么情况。

Wear OS 媒体工具包有助于构建高性能应用的基础,例如提供网络感知模块,以便针对特定操作选择更好的连接。

启用音频分流

为了提升 Wear OS 上的应用性能并降低功耗,请使用音频分流。 它允许将音频处理工作从 CPU 分流到专用的信号处理器。媒体工具包提供 AudioOffloadManager 支持

如果您不确定给定音频格式是否支持音频分流,请使用 AudioManager.isOffloadedPlaybackSupported() 方法。如需了解详情,请参阅 Exoplayer 文档

除非绝对必要,否则避免网络连接

当您针对 Wear OS 开发应用时,用户的网络连接可能会受到限制。通过使用 MediaDownloadService,您可以让用户畅享可靠、高性能的下载,随时随地播放媒体内容。

借助该工具包,您可以使用 Media3 的 DownloadManager 和 AndroidX WorkManager 来调度下载,从而更高效地优化媒体下载。

Media3 会启动所有必要的通知和前台服务。示例应用代码将 WorkManager 配置为在 Wi-Fi 连接可用时运行下载,以提供更好的性能。通过使用网络感知模块,开发者能够将网络操作映射到网络类型。

让用户了解正在进行的媒体播放

在 Wear OS 3 及更高版本中,持续性通知可以显示在 Wear OS 界面内的多个 surface 中。点按持续性活动通知时,应用会打开播放器屏幕。

借助 Media3,Wear OS 会自动为媒体应用创建持续性活动,并传入用于打开应用的 intent。这样,用户就可以与长时间进行的活动(例如媒体播放)保持更高的互动度。