多媒体在娱乐设备的用户体验中占了很大一部分,在硬件设备的存储容量不断上升的同时,需要开发功能完善、高质量的多媒体处理软件。任何一门技术,如果了解了它的基本原理和框架,就有一种一览众山小的感觉。因此,我们先了解一下android音频播放状态。

 

android项目音频放在哪个文件夹 android studio音频播放器_android

播放一首歌,可以分为很多状态。一切准备就绪等待播放时的状态为Prepared状态,就是已经准备好的意思,对应的正在准备的状态时Prearing状态(该方法与PrepareAsync()方法配合使用,当异步准备完成时会自动触发OnPreParedListener.onPrepared()方法进入Prepared状态)。

 

准备状态以前肯定要初始化,取名为Initalized状态。而初始化之前必须有一个状态标识创建MediaPlayer对象(或者复位)的完成,这个状态就是Idle状态。在此必须指出,MediaPlayer对象的各种方法只能在一些特定的状态下使用,否则会引发IllegalStateException异常。比如:通过reset()方法进入的Idle状态,如果调用不是该状态下可以调用的方法,会触发OnErrorListener.onError()方法,之后MediaPlayer对象进入Error状态。

 

好了,上面所讲的都是没有听到声音时MediaPlayer的状态。在Prepared状态调用start()方法后即可听到美妙的声音,此时进入的状态时Started。音乐的播放过程中如果想暂停,调用pause()方法即可进入暂停状态Paused;音乐的播放过程中如果想终止,调用stop()方法即可进入Stopped状态。Paused状态也可以调用stop()方法进入Stopped状态,或者调用start()方法进入Started状态继续播放音乐。而Stopped状态如果想再次播放音乐,必须回到准备状态Prepared(或者Preparing)。

 

还有一种情况是音乐自然播放完毕,此时会自动触发OnCompletionListener的onCompletion()方法进入播放完成状态PlaybackCompleted。

 

播放音乐需要用到系统资源,因此也必须释放资源。正常释放资源的方法是调用release()方法进入End状态,异常释放资源由系统调用。如果由于某些原因MediaPlayer对象出现了错误,会触发OnErrorListener.onError()事件,此时MediaPlayer对象即进入Error状态。

到此为止,MediaoPlayer的10中状态已经全部介绍完毕。

 

下面通过一个例子来说明Android平台音频播放器的实现过程。

 播放器的界面如下所示:

android项目音频放在哪个文件夹 android studio音频播放器_生命状态周期_02

布局文件的代码在后面将和工程文件一起上传。


初始化部分的代码,获取控件id并且创建MediaPlayer()方法,由于是源代码中文件使用create函数比较方便。

android项目音频放在哪个文件夹 android studio音频播放器_android_03


播放部分的代码如下:

android项目音频放在哪个文件夹 android studio音频播放器_android_04


暂停部分的代码如下:

android项目音频放在哪个文件夹 android studio音频播放器_android项目音频放在哪个文件夹_05


停止部分的代码如下:

android项目音频放在哪个文件夹 android studio音频播放器_音乐播放器_06

上面的代码都是根据MediaPlayer的生命状态周期写出的,各位朋友们可以对照着看。

MediaPlayer实现的音乐播放器工程目录