Android MediaPlayer

 

转自:http://wiki.emsym.com/index.php?title=Android_MediaPlayer&oldid=5476

MediaPlayer

MediaPlayer类可以用来播放音频、视频和流媒体,MediaPlayer包含了Audio和Video的播放功能。

在Android的界面上,Music和Video两个应用程序都是调用MediaPlayer实现的。

首先来看看MediaPlayer的生命周期:

MediaPlayer state diagram.png

从MediaPlayer的生命周期图或者说是状态转移图上来看:

  1. 当一个MediaPlayer对象别创建或者调用reset()方法之后,它处于空闲状态,在调用release()方法后,才会处于结束状态。
    • 一个新建的MediaPlayer对象在调用getCurrentPosition(), getDuration(), getVideoHeight(), getVideoWidth(), setAudioStreamType(int), setLooping(boolean), setVolume(float,float), pause(), start(), stop(), seekTo(int), prepare(), prepareAsync()方法时,不会触发OnErrorListener.onError()事件,但是MediaPlayer对象如果调用了reset()方法后,再使用这些方法则会触发OnErrorListener.onError()事件。
    • 当MediaPlayer对象不再被使用时,最好通过release()方法来释放,使其处于结束状态,以免造成不必要的错误。当MediaPlayer处于结束状态是,便不能再使用。
    • MediaPlayer对象被新建时处于空闲状态,如果通过creat()方法创建之后便处于准备状态。
  2. 一般情况下,一些常用的播放控制操作可能因为音频、视频的格式不被支持或者质量较差以及流超时,也有可能由于开发者的疏忽使得MediaPlayer对象处于无效状态而导致错误。这时可以通过注册setOnErrorListener()方法实现OnErrorListener.onError()方法来监控这些错误。如果发生了错误,MediaPlayer对象将处于错误状态,可以使用reset()方法来恢复错误。
  3. 任何MediaPlayer对象都必须先处于准备状态,然后才开始播放。
  4. 要开始播放MediaPlayer对象都必须成功调用start()方法。可以通过isPlaying()方法来检测当前是否正在播放。
  5. 当MediaPlayer对象在播放时,可以进行暂停和停止等操作,pause()方法暂停播放,stop()方法停止播放。处于暂停状态时可以通过start()方法来恢复播放,但是处于停止状态则必须先调用pause()方法处于准备状态,然后再通过start()方法来开始播放。
  6. 可以通过setLooping(boolean)方法来设置是否循环播放。

下边是MediaPlayer提供的常用方法:

方法说明
MediaPlayer构造方法
create创建一个要播放的多媒体
getCurrentPosition得到当前播放位置
getDuration得到文件的时间
getVideoHeight得到视频的高度
getVideoWidth得到视频的宽度
isLooping是否循环播放
isPlaying是否正在播放
pause暂停
prepare准备(同步)
prepareAsync准备(异步)
release释放MediaPlayer对象
reset重置MediaPlayer对象
seekTo指定播放的位置(以毫秒为单位的时间)
setAudioStreamType设置流媒体的类型
setDataSource设置多媒体数据来源
setDisplay设置用SurfaceHolder来显示多媒体
setLooping设置是否循环播放
setOnButteringUpdateListener网络流媒体的缓冲监听
setOnErrorListener设置错误信息监听
setOnVideoSizeChangedListener视频尺寸监听
setScreenOnWhilePlaying设置是否使用SurfaceHolder来保持屏幕显示
setVolume设置音量
start开始播放
stop停止播放

至此,可以得出Android中通过MediaPlayer来播放音乐的步骤:

 MediaPlayer mp = new MediaPlayer();//构建MediaPlayer对象
 mp.setDataSource("/sdcard/test.mp3");//设置文件路径
 mp.prepare();//准备
 mp.start();//开始播放

 

一个很好例子:

android-2.2-froyo/com/android/mediaframeworktest/functional/CodecTest.java

http://www.oschina.net/code/explore/android-2.2-froyo/com/android/mediaframeworktest/functional/CodecTest.java

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值