黑马程序员安卓教程:音乐播放器之常见API
Android自带多媒体播放器,下面我们通过一个具体的DEMO来实现播放音乐的一系列功能即播放,暂停,继续,重播,停止。具体实现如下:
1.新建工程
【File】→【new】→【Android Application Project】命名为:14_音乐播放器常见API
2.编写布局
根据需求编写布局文件,效果如图1-1所示:
图1-1所示
图1-1对应的xml文件如例1-1:
例1-1
例1-1在布局页面上定义了一系列功能按钮,当点击按钮时便执行相对应的点击事件,各个按钮对应的点击事件是MediaPlayer生命周期的函数,对于MediaPlayer生命周期的回调函数,我们在后边的文档有详细的介绍。在播放音乐时,进度条SeekBar动态显示播放的进度。
3.编写点击事件
当用户点击播放时,其点击事件play代码如例1-2所示:
例1-2在onCreate方法中创建了一个MediaPlayer对象,然后在play方法中调用音乐播放的API来实现音乐的播放。
当用户点暂停时,其点击事件pause代码如例1-3所示:
例1-4
SeekTo方法将播放时间设置为最开始,从而实现重新播放。
当点击停止时,其点击事件stop代码如例1-6所示:
例1-6
4.编写播放进度
进度条seekbar的进度随着播放的进度而改变,在之前的文件已多次阐述过seekbar的用法。我们知道,若要更新seekbar的进度,我们需要调用seekbar的setProgress(int progress)方法和setMax(int max)方法。
音乐在播放时,程序肯定在执行play方法,在这个方法中我们需要动态的更新播放进度,代码如例1-7:
取当前已经播放的进度以及播放的总进度。在获取当前播放进度时,调用mediaPlayer的getCurrentPosition 方法;在获取播放音乐的总进度时,调用mediaPlayer的getDuration方法。对于这两个方法,参考文档如图1-2所示:
图1-2所示
由图1-2可知:getCurrentPosition 方法返回了一个int 类型的值,这个值代表了当前播放时间的位置。getDuration 方法返回了一个int 类型的值,这个值表示播放整首音乐的时间。
定时器定时会更新seekbar 的UI ,当Activity 生命周期结束时,我们要销毁该定时器,代码如例1-8所示:
例1-8
运行程序,此时有如图1-3,图1-4所示效果:
图1-3所示
播放一段时间
暂停
图
1-4所示
一段时间后,重新播
放
由暂停到继续播放