这里有新鲜出炉的精品教程,程序狗速度看过来!
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。
这篇文章主要介绍了Android编程实现播放音频的方法,结合实例形式分析了Android使用MediaPlayer类播放音频的相关操作技巧,需要的朋友可以参考下
本文实例讲述了Android编程实现播放音频的方法。分享给大家供大家参考,具体如下:
在 Android 中播放音频文件一般都是使用 MediaPlayer 类来实现的,它对多种格式的音 频文件提供了非常全面的控制方法,从而使得播放音乐的工作变得十分简单。下表列出了 MediaPlayer 类中一些较为常用的控制方法。
方法名 |
功能描述 |
setDataSource() |
设置要播放的音频文件的位置。 |
prepare() |
在开始播放之前调用这个方法完成准备工作。 |
start() |
开始或继续播放音频。 |
pause() |
暂停播放音频。 |
reset() |
将 MediaPlayer 对象重置到刚刚创建的状态。 |
seekTo() |
从指定的位置开始播放音频。 |
stop() |
停止播放音频。调用这个方法后的 MediaPlayer 对象无法再播放音频。 |
release() |
释放掉与 MediaPlayer 对象相关的资源。 |
isPlaying() |
判断当前 MediaPlayer 是否正在播放音频。 |
getDuration() |
获取载入的音频文件的时长。 |
简单了解了上述方法后,我们再来梳理一下 MediaPlayer 的工作流程。首先需要创建出一个 MediaPlayer 对象,然后调用
方法来设置音频文件的路径,再调用
- setDataSource()
方法使 MediaPlayer 进入到准备状态,接下来调用 start()方法就可以开始播放音频,调用 pause()方法就会暂停播放,调用
- prepare()
方法就会停止播放。 下面就让我们通过一个具体的例子来学习一下吧,新建一个 PlayAudioTest 项目,然后修改 activity_main.xml 中的代码,如下所示:
- reset()
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" >
- <Button android:id="@+id/play" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Play" />
- <Button android:id="@+id/pause" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Pause" />
- <Button android:id="@+id/stop" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Stop" />
- </LinearLayout>
布局文件中横向放置了三个按钮,分别用于对音频文件进行播放、暂停和停止操作。然 后修改 MainActivity 中的代码,如下所示:
- public class MainActivity extends Activity implements OnClickListener {
- private Button play;
- private Button pause;
- private Button stop;
- private MediaPlayer mediaPlayer = new MediaPlayer();@Override protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- play = (Button) findViewById(R.id.play);
- pause = (Button) findViewById(R.id.pause);
- stop = (Button) findViewById(R.id.stop);
- play.setOnClickListener(this);
- pause.setOnClickListener(this);
- stop.setOnClickListener(this);
- initMediaPlayer(); // 初始化MediaPlayer
- }
- private void initMediaPlayer() {
- try {
- File file = new File(Environment.getExternalStorageDirectory(), "music.mp3");
- mediaPlayer.setDataSource(file.getPath()); // 指定音频文件的路径
- mediaPlayer.prepare(); // 让MediaPlayer进入到准备状态
- } catch(Exception e) {
- e.printStackTrace();
- }
- }@Override public void onClick(View v) {
- switch (v.getId()) {
- case R.id.play:
- if (!mediaPlayer.isPlaying()) {
- mediaPlayer.start(); // 开始播放
- }
- break;
- case R.id.pause:
- if (mediaPlayer.isPlaying()) {
- mediaPlayer.pause(); // 暂停播放
- }
- break;
- case R.id.stop:
- if (mediaPlayer.isPlaying()) {
- mediaPlayer.reset(); // 停止播放
- initMediaPlayer();
- }
- break;
- default:
- break;
- }
- }@Override protected void onDestroy() {
- super.onDestroy();
- if (mediaPlayer != null) {
- mediaPlayer.stop();
- mediaPlayer.release();
- }
- }
- }
可以看到,在类初始化的时候我们就创建了一个 MediaPlayer 的实例,然后在 onCreate() 方法中调用了
方法为 MediaPlayer 对象进行初始化操作。在 initMediaPlayer() 方法中,首先是通过创建一个 File 对象来指定音频文件的路径,从这里可以看出,我们需要 事 先 在 SD 卡 的 根 目 录 下 放 置 一 个 名 为 music.mp3 的 音 频 文 件 。 后 面 依 次 调 用 了
- initMediaPlayer()
方法和
- setDataSource()
方法为 MediaPlayer 做好了播放前的准备。
- prepare()
接下来我们看一下各个按钮的点击事件中的代码。当点击 Play 按钮时会进行判断,如 果当前 MediaPlayer 没有正在播放音频,则调用 start()方法开始播放。当点击 Pause 按钮时会 判断,如果当前 MediaPlayer 正在播放音频,则调用 pause()方法暂停播放。当点击 Stop 按钮 时会判断,如果当前 MediaPlayer 正在播放音频,则调用 reset()方法将 MediaPlayer 重置为刚 刚创建的状态,然后重新调用一遍 initMediaPlayer()方法。
最后在
方法中,我们还需要分别调用
- onDestroy()
和
- stop()
方法,将与 MediaPlayer相关的资源释放掉。 这样一个简易版的音乐播放器就完成了,现在将程序运行到手机上,界面如图所示:
- release()
点击一下 Play 按钮就可以听到优美的音乐了,然后点击 Pause 按钮声音会停住,再次点 击 Play 按钮会接着暂停之前的位置继续播放。这时如果点击一下 Stop 按钮声音也会停住, 但是再次点击 Play 按钮时,音乐就会重头开始播放了。
希望本文所述对大家Android程序设计有所帮助。
来源: http://www.phperz.com/article/17/0913/345916.html