mediaPlayer的详解
来源:互联网 发布:淘宝虚拟物品怎么卖 编辑:程序博客网 时间:2024/05/16 07:50
大家好我们今天研究的是Android中很重要也最为复杂的媒体播放器---MediaPlayer.
Android的MediaPlayer包含了Audio和video的播放功能,在Android的界面上,Music和Video两个应用程序都是调用MediaPlayer实现的。
首先来看看MediaPlayer的生命周期:
从MediaPlayer的生命周期图或者说是状态转移图上来看:
- 当一个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()方法创建之后便处于准备状态。
- 一般情况下,一些常用的播放控制操作可能因为音频、视频的格式不被支持或者质量较差以及流超时,也有可能由于开发者的疏忽使得MediaPlayer对象处于无效状态而导致错误。这时可以通过注册setOnErrorListener()方法实现OnErrorListener.onError()方法来监控这些错误。如果发生了错误,MediaPlayer对象将处于错误状态,可以使用reset()方法来恢复错误。
- 任何MediaPlayer对象都必须先处于准备状态,然后才开始播放。
- 要开始播放MediaPlayer对象都必须成功调用start()方法。可以通过isPlaying()方法来检测当前是否正在播放。
- 当MediaPlayer对象在播放时,可以进行暂停和停止等操作,pause()方法暂停播放,stop()方法停止播放。处于暂停状态时可以通过start()方法来恢复播放,但是处于停止状态则必须先调用pause()方法处于准备状态,然后再通过start()方法来开始播放。
- 可以通过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();//开始播放
MediaPlayer在底层是基于OpenCore(PacketVideo)的库实现的,为了构建一个MediaPlayer程序,上层还包含了进程间通讯等内容,这种进程间通讯的基础是Android基本库中的Binder机制。
而我们今天的例子只是利用MediaPlayer来播放res/raw文件夹中一首非常动听的英文哥Avril Lavigne - Complicated.mp3.程序有4个ImageButton按钮,播放,停止,重播和暂停!4个按钮的功能我就不用多说.下面我将Step By Step教你如何完成本Demo的实现.本实例可以实现音乐播放器除了来电的时候会暂停播放,通话结束后恢复播放外,打开其他的Activity都可以继续播放音乐,享受一边听音乐一边做其他的事情。
0 0
- mediaPlayer的详解
- Android MediaPlayer的使用方法详解
- Android MediaPlayer的使用方法详解
- Android --- MediaPlayer的使用详解
- MediaPlayer 详解
- mediaplayer 详解
- MediaPlayer详解
- MediaPlayer详解
- MediaPlayer详解
- 深入Android MediaPlayer的使用方法详解
- 深入Android MediaPlayer的使用方法详解
- 深入Android MediaPlayer的使用方法详解
- 深入Android MediaPlayer的使用方法详解
- 深入Android MediaPlayer的使用方法详解
- 深入Android MediaPlayer的使用方法详解
- 深入Android MediaPlayer的使用方法详解
- 深入Android MediaPlayer的使用方法详解
- 深入Android MediaPlayer的使用方法详解
- 系统崩溃信息查看
- APACHE ACTIVEMQ安装(Linux)
- 关于Linux下载破解myeclipse 2014
- LeetCode:Binary Tree Postorder Traversal
- 给网站添加X-UA-Compatible标签
- mediaPlayer的详解
- UVA457
- linux下安装nginx,支持rewrite、ssl
- Deployment failure on Tomcat 6.x. Could not copy all resources to D:\Program Files\apache-tomcat
- android 导出签名apk时,alias是空的
- android Module架构与Stub构架对比
- Java内存溢出分析
- Linux中/usr与/var目录详解
- 编写Android.mk中的LOCAL_SRC_FILES的终极技巧