听音乐、有声书或播客是智能手机上最常见的活动之一,这也是为什么安卓系统对媒体通知给予特别处理。安卓不会将它们与其他通知混在一起,而是将媒体通知突出显示在快捷设置面板、锁屏界面,甚至是常显屏幕上。不过,你仍然需要下拉通知栏才能看到当前播放曲目的名称。Android 16 的新功能引入了状态栏小组件,理论上可以解决这个问题,但遗憾的是,它并不支持你最喜欢的音乐播放器。原因如下。

Android 16 带来了一个名为“实时更新”(Live Updates)的新通知功能,它基本上是安卓版的 iOS“实时活动”(Live Activities)。实时更新是一种特殊的通知,系统会将其提升为在锁屏、常显屏幕、通知面板和状态栏中突出显示。设计上,这类通知始终完全展开,用户无法折叠。
在锁屏和常显屏幕上,实时更新即使在其他通知最小化时也保持完全展开。在通知抽屉中,它们显示在最顶部;而在状态栏中,则以带图标和简短文本片段的小组件形式出现。

要让应用的通知符合“实时更新”(Live Update)的资格,必须满足以下几个关键条件:
- 必须拥有特殊权限。应用需要申请Android 16 QPR1 新增的 POST_PROMOTED_NOTIFICATION 权限,用户可以随时在设置中授予或撤销该权限。
- 必须明确请求。应用必须向系统请求将其通知提升为实时更新,要么通过设置 EXTRA_REQUEST_PROMOTED_ONGOING 标志,要么调用 requestPromotedOngoing API。
- 必须是“持续进行中”的通知。这告诉系统该通知关联的是用户“正在积极参与”的后台任务,因此不能被用户关闭。
- 必须遵守特定的格式规则。通知必须有标题,且优先级高于最低级。它不能是群组摘要,不能嵌入自定义内容,也不能使用自定义背景色。
虽然上述要求较为简单,但还有一个至关重要的限制:通知的样式。只有使用以下四种特定模板之一的通知,才能被提升为实时更新:
- 标准(Standard):基本的通知模板,没有特殊功能。
- 大文本(BigText):用于包含大量可展开文本的通知,比如邮件。
- 来电(Call):专为来电提醒设计,通常带有大头像和“接听”或“拒接”等来电操作按钮。
- 进度(Progress):Android 16 新增的样式,用于显示进度条的任务。
那么,为什么媒体通知不能成为实时更新,尤其它们通常带有进度条呢?原因是它们并未使用安卓16的“进度”样式。音乐、有声书和播客应用一般采用专用的“媒体”(Media)样式模板。正如前面提到的,这样做是为了获得安卓系统对媒体播放通知的特殊支持。如果改用“进度”样式,它们的通知将无法固定在快捷设置面板,也无法显示媒体输出切换器等功能。最终,媒体应用为了获得实时更新功能,必须放弃这些关键功能——这是它们不太可能做出的权衡。

那么问题来了:为什么谷歌不能直接让媒体样式通知也以“实时更新”的形式出现呢?毕竟,三星已经在 One UI 7 中做了类似的事情,让媒体通知默认以“实时通知”的形式显示。这将带来极佳的用户体验,让你只需轻点状态栏的小组件,就能看到当前播放的曲目并访问媒体控制,无需下拉通知栏。

据我们所知,谷歌没有技术上的障碍阻止其这样做。看起来,谷歌只是没有将媒体播放视为“实时更新”的有效使用场景。根据谷歌的官方文档,这项功能是为那些“正在积极进行中,且有明确开始和结束”的活动设计,且需要用户在整个过程中持续关注。适用的场景包括“主动导航、正在进行的电话通话、实时拼车追踪和实时外卖配送追踪”,而不适用的场景则包括“聊天消息、提醒、即将到来的日历事件以及应用功能的快速访问”等。
因此,虽然媒体播放并未被明确排除,但它并不符合谷歌所定义的“时间敏感”模型,这也解释了为什么媒体样式通知不会自动被提升为实时更新。这有些遗憾,因为我们认为在状态栏小组件中显示正在播放的信息将是一个非常棒的功能——至少三星似乎也是这么认为的。希望谷歌能看到合作伙伴们的做法,重新评估自己的立场。
对于想尝试“实时更新”功能的用户,需要在兼容的 Pixel 设备上安装 Android 16 QPR1 测试版,因为该功能在正式版中尚未激活。同时你还需要找到支持该功能的应用,比如谷歌自己的示例应用。对开发者来说,可以查阅谷歌的官方文档,并尝试使用 Jetpack 核心库的最新 alpha 版本进行开发测试。