Android媒体应用(三)--使用媒体会话

原文地址:https://developer.android.google.cn/guide/topics/media-apps/working-with-a-media-session.html

Media session与其管理的播放器具有相同的生命周期。你应该在拥有 media session及其关联播放器的Activity或Service的onCreate()方法中创建和初始化 media session

注意:编写媒体应用程序的最佳做法是使用media-compat库。在此页面上,术语“ media session”是指MediaSessionCompat的实例,“ media controller”表示MediaControllerCompat的实例。


Media session

新创建的 media session没有功能。您必须通过执行以下步骤来初始化会话:
  1. 设置标志,以便media session可以从media controllermedia buttons接收回调。
  2. 创建并初始化PlaybackStateCompat的一个实例,并将其分配给media session。播放状态在整个会话期间发生变化,因此我们建议您将PlaybackStateCompat.Builder缓存重复使用。
  3. 创建一个MediaSessionCompat.Callback的实例并将其分配给media session(更多在下面的回调)。
你应该在拥有  media session及其关联播放器的Activity或Service的onCreate()方法中创建和初始化  media session
为了让 media buttons在您的应用程序新初始化(或停止)时起作用,其播放状态必须包含与媒 media buttons发送的意图相符的播放动作。这就是为什么在初始化期间将ACTION_PLAY分配给会话状态的原因。有关详细信息,请参阅 响应media buttons

保持播放状态和元数据


有两个表示 media session状态的类。
PlaybackStateCompat类描述播放器的当前操作状态。这包括:
  1. 运输状态(玩家是否播放/暂停/缓冲等)
  2. 玩家位置
  3. 可在当前状态下处理的有效控制器动作
MediaMetadataCompat类描述正在播放的资料:
  1. 艺术家,专辑和曲目的名称
  2. 轨道持续时间
  3. 专辑图片显示在锁定屏幕上。该图像是最大尺寸为320x320dp的位图(如果更大,则缩小)。
  4. ContentUris的一个实例,指向一幅较大版本的作品
播放器状态和元数据可以在 media session的整个生命周期中改变。每次状态或元数据更改时,您必须为每个类PlaybackStateCompat.Builder()或MediaMetadataCompat.Builder()使用相应的构建器,然后通过调用setPlaybackState()或setMetaData()将新实例传递到 media session。为了减少这些频繁操作的总体内存消耗,建议一次创建构建器并在会话的整个生命周期中重用它们。


Media Session锁定屏幕


从Android 4.0(API级别14)开始,系统可以访问 media session的播放状态和元数据。这是锁屏后仍然可以显示媒体控件和图稿的原因。不过具体的表现形式因Android版本而异。

专辑作品

在Android 4.0(API级别14)及更高版本中,锁定屏幕的背景将显示您的专辑封面,但只有当媒体会话元数据包含背景位图时。

Transport controls(传输控件)

从Android 4.0(API级别14)到Android 4.4(API级别19),当 media session处于活动状态并且 media session元数据包含背景位图时,锁定屏幕将自动显示传输控件。
在Android 5.0(API级别21)或更高版本中,系统不会在锁定屏幕上提供传输控件。相反,您应该使用MediaStyle通知来显示传输控件。


Media session回调

主要的媒体media session方法是onPlay(),onPause()和onStop()。这是您添加控制播放器的代码的位置。

由于您在运行时(在onCreate())中实例化和设置会话的回调,您的应用程序可以定义使用不同播放器的替代回调,并根据设备和系统级别选择适当的回调/播放器组合。您可以更改播放器而不更改其余的应用程序。例如,您可以在Android 4.1(API级别16)或更高版本上运行时使用ExoPlayer,并在早期系统上使用MediaPlayer。

除了控制播放器和管理media session状态转换外,回调还可以启用和禁用应用程序的功能,并控制其与其他应用程序和设备硬件交互的方式。 (请参阅处理音频输出中的更改)。

media session回调方法的实现取决于您的应用程序的结构。请参考如何在音频应用程序视频应用程序,详细介绍了如何为每种应用程序实现回调。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值