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

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

如果您有 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 应用的设计方式存在一些差异。要了解 Wear OS 应用开发中特定功能、API 或最佳实践与 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 信号较差时,电池消耗会更快。添加对音频卸载的支持有助于节省电量。
  • 设备提供了多个界面供用户重新与您的应用互动。在这些界面上展示您应用的功能。

使用蓝牙扬声器或耳机

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

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

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

优化网络条件

为了让您的媒体应用在手表上表现良好,您需要针对以下串流注意事项和网络条件做出选择:

  • 通过选择较低的比特率进行串流(例如 48 kbps)和使用 AAC 和 MP3 等编解码器来优化内容。
  • 优化图片和轨道的预取策略,以便在暂时丢失连接时也能继续播放。
  • 在所有网络配置下测试您的应用:Wi-Fi、LTE,以及手表通过蓝牙连接到手机的情况。同时测试手表在不同网络之间切换时会发生什么。

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

启用音频卸载

为了提高 Wear OS 应用的性能和降低功耗,请使用音频卸载。它允许将音频处理从 CPU 卸载到专用的信号处理器。媒体工具包通过 AudioOffloadManager 提供支持

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

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

在为 Wear OS 开发时,您可以预料用户可能网络连接有限。通过使用MediaDownloadService,您可以让用户获得可靠、高性能的下载,以便他们随时随地播放媒体。

该工具包允许您使用 Media3 的 DownloadManager 和AndroidX WorkManager 更有效地优化媒体下载以安排下载。

Media3 会启动所有必要的通知和前台服务。示例应用代码配置 WorkManager,以便在 Wi-Fi 连接可用时运行下载,从而提供更好的性能。使用Network Awareness 模块可以帮助开发者将网络操作与网络类型关联起来。

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

在 Wear OS 3 及更高版本上,正在进行的通知可以出现在 Wear OS 用户界面中的多个界面上。当点按正在进行的 activity 通知时,应用会打开播放器屏幕。

借助 Media3,Wear OS 会自动为媒体应用创建正在进行的 activity,并提供用于打开应用的 intent。这可以让用户更好地参与长时间运行的 activity,例如媒体播放。