将媒体应用扩展到 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 移动应用开发相比,Wear OS 应用开发中的特定功能、API 或最佳实践有何不同,请参阅功能表

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 信号较弱时,电池电量会更快耗尽。添加了对音频分流的支持,以帮助节省电量。
  • 该设备提供了多个界面,以便用户重新与您的应用互动。请在这些界面上展示应用的功能。

使用蓝牙音箱或蓝牙耳机

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

为了提供最佳用户体验,您的应用可以使用媒体工具包,确保在有蓝牙耳机或音箱连接到手表时播放音频。

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 的持续性活动。这样,用户就可以与长时间进行的活动(例如媒体播放)保持更高的互动度。