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