使用MediaPlayer播放音频

     前面在一些示例中已经涉及到如何使用MediaPlayer播放音频,使用MediaPlayer的静态方法creat()加载音频前面已经介绍过,但使用creat方法每次都会返回新创建的MediaPlayer,这个就不太适合循环播放多个音频文件,这时可以使用setDataSource方法装载音频文件,它提供如下几个方法:

1.void setDataSource(String path):指定装载path路径所代表的文件。

2.void setDataSource(FileDescriptor fd,long offset,long length):指定装载fd所代表的文件中从offset开始、长度为length的文件内容。

3.void setDataSource(FileDescriptor fd):指定装载fd所代表的文件。

4.void setDataSource(Context context,Uri uri):指定装载uri所代表的文件。此方法可以播放网络的音频文件。

     其实setDataSource后,程序并未真正装载音频文件,而是在执行prepare()方法时,才真正装载音频文件。

另外MediaPlayer还提供了一些绑定事件监听器的方法,如下:

使用MediaPlayer播放音频_第1张图片

    至于使用静态方法creat播放raw资源文件中的音频文件和播放原始资源文件的音频,在前面原始资源的使用一文已介绍,这里只介绍播放外部存储器上的音频文件,代码如下:

package com.home.activity;

import com.home.mediaplayertest.R;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener {
	private Button startBtn;
	private Button pauseBtn;
	private Button stopBtn;
	private MediaPlayer player;
	private boolean isPause = true;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		startBtn = (Button) findViewById(R.id.main_btn_play);
		pauseBtn = (Button) findViewById(R.id.main_btn_pause);
		stopBtn = (Button) findViewById(R.id.main_btn_stop);

		startBtn.setOnClickListener(this);
		pauseBtn.setOnClickListener(this);
		stopBtn.setOnClickListener(this);
		// 实例化MediaPlayer对象
		player = new MediaPlayer();
	}

	@Override
	public void onClick(View v) {
		if (v == startBtn) {

			if (isPause) {
				// 重置MediaPlayer对象
				player.reset();
				try {
					// 装载指定音频
					player.setDataSource(Environment
							.getExternalStorageDirectory() + "/girl.mp3");
					// 真正装载指定音频文件
					player.prepare();
					// 播放音乐
					player.start();
					// 设置是否循环播放
					player.setLooping(true);
					isPause = false;
				} catch (Exception e) {
					e.printStackTrace();
				}
			} else {
				player.start();
			}

		}
		if (v == pauseBtn) {
			// 暂停播放
			player.pause();

		}
		if (v == stopBtn) {
			// 停止播放
			player.stop();
			isPause = true;
		}
	}

}


 

你可能感兴趣的:(android,mediaplayer,播放音频)