Android 7.0 Audio: Mediaplayer

1.1.1           播放代码


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

 

其基本的方法和功能简介如下:

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    停止播放  


除开界面的相关布局和控件,声音播放的代码流程主要如下,

 

       mPlayer = new MediaPlayer();

 

       try {

           mPlayer.setDataSource(mMediaItem.getPath());

           mPlayer.setOnCompletionListener(this);

           mPlayer.setOnErrorListener(mErrorListener);

           mPlayer.prepare();

            mPlayer.start();

       }

它主要使用了MediaPlayer类来完成播放功能,对于该类的介绍请见后续章节。


MediaPlayer各个状态间关系如图:


Idle状态为空闲,Initialized状态为初始化,Idle状态加载了音频资源后进入Initialized状态,之后调用prepare()方法就可以进入Prepared状态。在Prepared状态调用start()方法便可播放音乐。在代码编写的时候,api如何调用,状态如何转换,请参见下面的状态流程图,避免在不正确的状态调用不合适的api,引起各种异常。

 

播放流程的功能块图如下,




播放过程中每个步骤的函数调用流程如下,

Init:

 

 

 

setDataSource:

 

 

 


 


prepareAsync:


prepare里面,当MediaExtractor解析文件后会产生一个音频流和一个视频流(可能还有字幕流),对应一个MediaSource的数据结构






Start:











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值