从 Android 13 开始,系统 UI 中的媒体控件包含针对操作按钮和远程播放的更新。这些更改为手机和平板电脑带来更完善的媒体控件体验,并支持跨设备无缝媒体传输。
媒体控件更新
本节介绍针对 Android 13 中媒体控件的操作按钮和远程播放所做的更新。
操作按钮变更
为了确保用户可以访问用于播放媒体的应用的丰富媒体控件集,Android 13 中媒体控件上的操作按钮源自 PlaybackState
操作状态。通过此项更改,函数 MediaDataManager#createActionsFromState
会根据 PlaybackState
操作状态生成操作按钮信息。这与媒体控件在其他 Android 平台(例如 Auto、Assistant 和 Wear)中的呈现方式一致。
相比之下,在 Android 12 中,媒体控件上的操作按钮由添加到 MediaStyle
通知的 通知操作 决定。
如需查看操作按钮更新的应用兼容性变更摘要,请参阅 StatusBarManager
。
远程播放 API
为了在各种界面上提供统一的媒体体验,从 Android 13 开始,新增了一个系统 API Notification#setRemotePlaybackInfo
,用于在媒体控制系统界面 (System UI) 上将媒体通知标记为远程播放。系统应用可以通过此 API 发布通知,以执行以下操作:
- 为源自远程设备的媒体在媒体控件的默认输出切换器上提供信息和功能。
- 必要时替换输出切换器功能。
使用此通知的系统应用必须具有 MEDIA_CONTENT_CONTROL
权限。
Notification#setRemotePlaybackInfo
API 还添加了以下 extras
,以确定远程播放设备的名称、图标和 intent。
Notification#EXTRA_MEDIA_REMOTE_DEVICE
Notification#EXTRA_MEDIA_REMOTE_ICON
Notification#EXTRA_MEDIA_REMOTE_INTENT
借助此信息,系统界面 (System UI) 可以替换默认输出切换器芯片设备信息,并将远程播放的媒体控件添加到本地媒体控件列表的末尾。
媒体控件的实现
OEM 必须注意默认行为的此项更改,因为它会影响应用媒体控件的生成方式。OEM 还必须确保新的系统 API 在其输出切换器功能中按适用方式工作。
OEM 无需进行任何更改,并且可以使用 AOSP 中的默认实现。
远程播放的自定义
如果 OEM 拥有发布远程媒体播放通知的系统应用,则该应用可以选择调用 setRemotePlaybackInfo
以进行通知,前提是该应用已被授予 MEDIA_CONTENT_CONTROL
权限。但是,这不是一项要求,合作伙伴可以选择不进行自定义。
媒体控件的验证
要在系统界面 (System UI) 中测试媒体控件,请运行手动测试以验证以下内容:
- 在从应用播放媒体时,按钮按预期方式运行。
- 输出切换器显示正确的设备信息。
使用以下测试来验证远程播放 API:
NotificationManagerTest
中的 CTS 测试,例如testMediaStyleRemotePlayback_noPermission
和testMediaStyleRemotePlayback_hasPermission
。com.android.systemui.media
下的单元测试。
请参阅新的 CDD 要求 [3.8.3.1/H-1-SR],了解相关建议。