Android中的音频播放主要借助于MediaPlayer类来实现的,貌似他很神秘,但其实很简单,我们一起来看看他的庐山真面目吧。
一:MediaPalyer的生命周期
下面的这幅图,是在网上找的,这里我们只针对其中的几个特殊的方法,进行说明:
1:当一个MediaPlayer创建或者调用reset()方法之后,他处于空闲IDLE状态,在调用release之后,才会处于结束end状态
2:任何一个MediaPlayer都必须处于准备状态,然后才开始播放。要开始播放必须调用start方法。
3:当MediaPlayer对象正在播放时,可以进行暂停与停止等操作,pause方法暂停,stop方法停止。处于暂停态的MediaPlayer可以通过start方法恢复播放,即从暂停的位置处继续播放;而处于停止态的必须通过prepare使之处于准备状态后,然后调用start方法开始播放
二:常用方法
1:构造方法
(1)static MediaPlayer create(Context context,Uri uri):通过URI指定的音频创建一个多媒体播放器
(2)static MediaPlayer create(Context context,int resId):通过资源ID创建一个多媒体播放器
2:获得属性
(1)int getCurrentPosition():得到当前的播放位置
(2)int getDuration():获得播放文件的总时长
(3)int getVideoheight():获得视频的高度
(4)int getVideoWidth():获得视频的宽度
3:判断状态
(1)boolean isLooping():是否循环播放
(2)boolean isPlaying():是否正在播放
4:设置属性
(1)void seekTo(int mesc):设置指定的播放位置(以毫秒为单位)
(2)void setDateSourece(String path):根据路径设置多媒体数据的来源
(3)void setDateSourece(FileDescriptor file):根据FileDescriptor设置多媒体数据的来源
(4)void setDateSourece(Uri uri):根据URI设置多媒体数据的来源
5:常用事件
(1)void prepare():准备资源
(2)void start():开始播放
(3)void pause():暂停播放
(4)void stop():停止播放
三:音频的播放
根据音频的来源,可以分为三种,分别为本地资源(应用程序内部)、内部的URL指向的资源(SDcard中)和外部的URL指向的资源(网络中)。这里我们只说明其中的第一种方式
◆本地资源
(1)在res文件夹下创建文件名必须为raw的文件,来存放音频等。根据资源创建MediaPlayer
MediaPlayer mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.shijian); |
(2)调用MediaPlayer的start方法播放音乐
mediaPlayer.start(); |
(3)结果:单击start按钮之后,播放音乐。(这里没有做停止操作,所以不要轻易尝试哦)
四:简单的音乐播放器的制作
◆功能:在页面上放置三个按钮,实现单击start开始播放,单击pause后暂停播放,在单击start后从停止的地方开始播放,单击stop后停止播放。
◆具体实现:
(1)根据本地资源,创建MediaPlayer对象
mediaPlayer = MediaPlayer.create(this, R.raw.shijian); |
(2)为三个按钮添加监听事件
@Override public void onClick(View arg0) { switch (arg0.getId()) { case R.id.start: mediaPlayer.start();//播放音乐 break; case R.id.pause: mediaPlayer.pause();//暂停播放 break; case R.id.stop://停止播放的实现 mediaPlayer.pause();//先暂停 mediaPlayer.seekTo(0);//然后设置文件的播放其实位置 break; } } @Override protected void onDestroy() { mediaPlayer.stop();//实现的是当应用程序退出之后,音乐的全部停止播放 super.onDestroy(); } |
◆结果:真正的实现了Mediaplayer的生命周期中比较重要的几个时期。可以自运行试一下。