将您的媒体应用扩展到 Wear OS

Wear OS 是一个很棒的平台,Android 用户可以在旅途中使用各种音频内容,例如有声读物、音乐、播客和广播。Google 的 Wear OS 允许您为各种类别(包括音频内容)编写应用程序,帮助用户保持联系、保持健康并表达自我。

如果您有 Android 开发经验,那么诸如应用程序和通知之类的功能可能已经很熟悉了。在开发 Wear OS 应用时,您可以运用您对现代 Android 开发的知识。

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 应用之间存在一些差异。要了解特定功能、API 或最佳实践在 Wear OS 应用开发中与 Android 移动开发相比有何不同,请查看功能表

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

在 Wear OS 上构建媒体应用,让用户可以从手表流式传输和播放已下载的内容。为了提供最佳用户体验,请考虑实现以下媒体用例,这些用例在 Wear OS 设备上特别有效。

播放已下载的内容

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

在任何可用的网络上进行流式传输

用户可以通过从手表流式传输来收听音乐、播客或广播电台,但流式传输会消耗手表电池电量。当用户选择在手表上收听时,优先考虑已下载的内容,并在浏览列表中显示最近使用的下载内容。考虑添加一个按钮,将他们带到完整的下载列表,如下面的图像所示。

A list of audio libraries includes A list of audio libraries, including a playlist and an audio book

使用 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 构建时,务必设计允许用户方便快捷地在手表上访问媒体的应用。手表是一个独特的界面,用户与手表的交互时间比与手机和平板电脑的交互时间少得多,因此交互的便捷性和速度是重中之重。

有关声明式 UI 框架的一般优势的更多信息,请参阅为什么选择 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 实现的 UI 到使用Media3 实现的播放功能。如果您的应用有特定的需求,您可以在仍然依赖现有播放器的情况下采用工具包中的 UI 实现。

媒体工具包可以帮助您解决诸如避免在手表内置扬声器上播放媒体、启用音频卸载以及避免不必要地 ping 网络等挑战。

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

Wear OS 特定挑战的最佳实践

在 Wear OS 上创建媒体应用时,请考虑手表上的用户体验与移动设备上的用户体验有何不同,尤其要注意以下方面

  • 内置扬声器并非为音乐播放而设计。因此,请使用蓝牙扬声器或耳机。
  • 网络连接有限或变化多端,因此您应该针对各种网络状况优化您的应用并最大程度地减少网络使用。
  • 较小的电池电量有限。当设备在主 CPU 上执行音频处理以及设备的 LTE 信号较弱时,电池电量消耗更快。添加对音频卸载的支持以帮助节省电量。
  • 该设备提供多个 UI 界面,让用户可以重新使用您的应用。在这些界面上展示您的应用的功能。

使用蓝牙扬声器或耳机

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

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

媒体工具包提供了一个特定的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 用户界面内的多个界面上。当点击持续活动 通知时,应用将打开播放器屏幕。

使用 Media3,Wear OS 会自动为具有打开应用意图的媒体应用创建持续活动。这可以让用户更专注于长时间运行的活动,例如媒体播放。