上海做网站的公司电话,如何添加网站白名单,公众号网站怎么做,公司网站域名如何续费安卓手机APP开发__媒体开发部分__播放器的接口
目录
概述
组件之间的共同的接口
媒体3的播放的架构
播放器的状态
对改变的监听
当前的播放
定制的播放器实现 概述 一个播放器是你的APP中完成媒体项的播放的组件. 媒体3的播放器接口提供了一个关于播放器处理的功能的总…安卓手机APP开发__媒体开发部分__播放器的接口
目录
概述
组件之间的共同的接口
媒体3的播放的架构
播放器的状态
对改变的监听
当前的播放
定制的播放器实现 概述 一个播放器是你的APP中完成媒体项的播放的组件. 媒体3的播放器接口提供了一个关于播放器处理的功能的总结. 这包括如下的内容:
对于播放的控制,例如播放,暂停,查找与查询当前的媒体的属性 例如播放位置. 管理一个播放列表/媒体项的队列 配置播放属性,例如缓冲,重复,速度,和音量. 向屏幕上渲染视频
媒体3也提供了一个播放器的接口的实现,叫做ExoPlayer.
组件之间的共同的接口
在媒体3中的一些组件实现了播放器的接口.例如:
播放器的列表 组件描述与行为的解释ExoPlayer这是播放器接口的默认的实现MediaController与媒体会话的交互来发送播放的命令.如果你的播放器与在一个服务中的媒体会话独立于活动和片段, 你能让你的媒体控制器作为播放器.通过媒体会话让你的播放和播放列表的方法调用发给播放器.MediaBrowser除了媒体控制器提供的功能,和一个媒体库会话的交互,来浏览可用的媒体内容.ForwardingPlayer把方法调用转给另一个播放器的播放器实现.使用这个类定制化特别的方法.SimpleBasePlayer把方法的实现变得最小的播放器的实现.当你要使用一个连接媒体会话的定制化的播放器时很有用.CastPlayer和一个广播接收器的APP通信的播放器实现.它的行为依赖于广播的会话. 媒体3的播放的架构
如果你和播放器通信,你应该直接调用它的方法来发播放的指令. 你能在你的播放中加上广告,通过实现一个媒体会话,给外部的源 授权它进行播放控制.这些外部的源实现了一个媒体控制器,它的功能是 连接一个媒体会话,和发出播放指令的请求.
当在后台播放媒体时,你需要保持你的媒体会话和有一个媒体会话服务 和媒体库服务的播放器作为一个前台的服务来运行.如果你这么做,你能 让你的播放器与你的APP中的活动独立出来.你在使用一个媒体控制器时 这是必要的. 播放器的状态
一个媒体播放器的状态实现了播放器的接口,包括了4类主要的信息:
第一类:播放状态 使用getPlaybackState()来检索状态. 状态的值由接口来定义,有STATE_IDLE, STATE_BUFFERING, STATE_READY, and STATE_ENDED.
第二类:媒体项的播放列表 播放的媒体项的实现的序列 使用getCurrentTimeline()来检索时间线 播放器实例能提供播放列表的方法,例如加媒体项,删除媒体项,得到当前媒体项. 第三类:播放/暂停属性,例如: playWhenReady:当可能时或者是保持暂停时,显示用户是否要媒体播放 Playback suppression reason:显示播放挂起的原因 isPlaying:显示播放是否正在播放,如果播放状态为STATE_READY,playWhenReady为真, 并且没有播放挂起时,这个值为真.
第四类:播放位置包括: Current media item index:在播放列表中的当前媒体项的索引 isPlayingAd: 显示是否正在播放一个插入的广告 Current playback position:当前的媒体项或者是插入的广告的当前播放位置. 此外,播放器接口允许读取可用的轨道,媒体元数据,播放速度,音量和播放的其它的附加的属性. 注意的是播放器实例没有必要支持接口的所有的特性. 对改变的监听
使用一个Player.Listener来监听一个播放器的改变. Kotlin
val handler Handler(Looper.getMainLooper())
fun checkPlaybackPosition(delayMs: Long): Boolean handler.postDelayed({val currentPosition player.currentPosition// Update UI based on currentPositioncheckPlaybackPosition(delayMs)},delayMs)
当前的播放
播放器的接口提供了操纵播放的状态和控制方面的很多的方法.
基本的播放控制有播放,暂停,准备和停止. 播放列表的方法有加媒体项和删除媒体项. 查找当前的媒体项或者是位置. 设置重复模式和乱序模式. 刷新轨道选择的信息 设置播放速度.
定制的播放器实现
为了创建一个定制的播放器,你能扩展一个媒体3中的简单播放器.这个类提供了一个基本的实现. 它把你需要实现的方法的数量减少到了最小的程度.
通过覆盖getState()方法来开始这个方法包括
可用的指令集 播放属性例如当播放状态为STATE_READY时是否开始播放。当前的播放的媒体项的索引当前 项的播放位置。 Kotlin
class CustomPlayer : SimpleBasePlayer(looper) {override fun getState(): State {return State.Builder().setAvailableCommands(...) // Set which playback commands the player can handle// Configure additional playback properties.setPlayWhenReady(true, PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST).setCurrentMediaItemIndex(0).setContentPositionMs(0).build()}
}
简单播放器强调了状态值的有效组合的状态。它也能处理监听器和通知状态改变的监听器。 如果你需要手工地触发一个状态上的刷新就调用invalidateState().
除了getState()方法你仅需要实现你的播放器声明可用的指令的方法。