Android MediaPlayer
2017-03-27 本文已影响0人
和平北路
一、官方文档
https://developer.android.com/reference/android/media/MediaPlayer.html
二、状态机
State Diagram三、核心内容
- MediaPlayer的生命周期是从new对象或reset方法起,到release方法为止,即Idle至End
- 在构造函数后调用getDuration等方法,不回触发OnErrorListener的onError方法,但reset之后直接调用会触发
- 一旦不需要使用MediaPlayer,调用release方法可以立即释放资源,同时该player对象会永远处于End状态
- new出来的MediaPlayer处于Idle状态,create方法初始化的MediaPlayer处于Prepared状态
- 只能在MediaPlayer的Idle状态调用setDataSource方法,其他状态下调用会报错
- 在Preparing状态下调用的任何方法都有可能引起未知的错误
- 只能在MediaPlayer的Initialized状态下调用prepare或prepareAsync方法,其他状态下调用会报错
- MediaPlayer一定要处于Prepared状态下时才能开始播放
- 如果MediaPlayer已经处于Started状态了,那么再次调用start方法不会起作用
- 在Started和Paused之间的状态变化是异步的,会有秒级的耗时,这时候isPlaying方法的返回值可能不准确
- 在Started、Paused、Prepared或PlaybackCompleted状态调用stop都会进入Stoped状态
- seekto方法是即时的,但需要一定时间缓冲内容,缓冲完成后OnSeekCompleteListener会被触发