毕业三年了,曾经做过视频播放器,Camera和Wlan。刚毕业的时候就做的是视频播放器,但是由于每天都在bug中奋战,所以对于framework和底层没有深挖,等到了前段时间面试,才发现,面试官问的全部都是底层的架构性的东西。唉,总算是吃一堑长一智,现在开始好好梳理一些framework和底层的东西,当然还是从上层开始看起,毕竟两年没接触了,好多东西记不太清了。如果看到有错误,还请指正。
MediaPlayer给我们封装了播放音乐和视频的一些基本的api。
MediaPlayer对象的获取
当前一般我们获取MediaPlayer对象的方式有两种:
- mMediaPlayer = new MediaPlayer;
- MediaPlayer mp = MediaPlayer.create(this, R.raw.test_media_file_rsid);
MediaPlayer实例对象的操作方法
setDataSource(设置播放资源)
如果采用new对象的方式,需要调用setDataSource给MediaPlayer设置播放资源,而create方式中我们已经设置的有播放资源
prepare() or prepareAsync()
顾名思义,prepareAsync()方法为异步调用,我们可以通过设置setOnPreparedListener来监听播放器prepare准备完成的事件。而Prepare则是同步的,准备完毕,即可直接开始播放
seekTo()
seekTo()是定位方法,可以让播放器从指定的位置开始播放,需要注意的是该方法是个异步方法,也就是说该方法返回时并不意味着定位完成,尤其是播放的网络文件,真正定位完成时会触发OnSeekComplete.onSeekComplete(),如果需要是可以调用setOnSeekCompleteListener(OnSeekCompleteListener)设置监听器来处理的。
start(), pause(), stop()
开始播放,暂停和停止播放。
reset() release()
reset()将播放器置为idle状态,可以从error状态中恢复;release()释放资源
MediaPlayer各种监听器
播放中可能会遭遇各种情况,比如出现错误,或者有一些提示信息,以及歌曲播放进度定位等等情况的反馈,可以通过设置监听器来处理。比如:
setOnCompletionListener(MediaPlayer.OnCompletionListener listener)
setOnInfoListener();
setOnErrorListener();
后续有总结我会继续更新,先这么多!
网友评论