播放音频用到MediaPlayer类,具体用法如下:
MediaPlayer mp = new MediaPlayer();//新建一个的实例
mp.setDataSource();//设置要播放文件的路径
mp.prepare();//播放 准备完成,开始播放前要调用
mp.start();//播放
mp.pause();//暂停
mp.reset();//将mp对象重置到刚创建的状态
mp.stop();//停止播放,使用后当前mp对象无法再播放
mp.release();//释放播放相关资源,一般在活动的onDestroy()方法里调用
mp.isPlaying();//判断mp对象是否正在播放
mp.seekTo();//调转到指定位置播放
mp.getDuration();//获得载入的音频的播放时长
我们写一个简单的例子,播放手机存储的根目录下motto.mp3文件。定义三个按钮play、pause、stop来控制播放。
public class MainActivity extens AppCompatActivity implements View.OnClickListener{
private Button playButton;
private Button pausebutton;
private Button stopButton;
private MediaPlayer mp = new MediaPlayer();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
playButton = (Button)findViewById(R.id.button_play);
pauseButton = (Button)findViewById(R.id.button_pause);
stopButton = (Button)findViewById(R.id.button_stop);
initMP();//初始化mp对象
//三个按钮设置监听器
playButton.setOnClickListener(this);
pauseButton.setOnClickListener(this);
stopButton.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.button_play:
if (!mp.isPlaying()) {
mp.start();//播放音频
}
break;
case R.id.button_pause:
if (mp.isPlaying()) {
mp.pause();//暂停播放
}
break;
case R.id.button_stop:
mp.reset();//将mp重置为创建状态
initMP();//初始化mp,这样保证按下stop按钮后再按play按钮可以播放
break;
default:
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mp != null) {
//释放mp
mp.stop();
mp.release();
}
}
//初始化mp
private void initMP() {
File file = new File(Envirometn.gerExternalStorageDirectory(), "motto.mp3");
try {
mp.setDataSource(file.getPath());//设置播放音频文件的路径
mp.prepare();//mp就绪
} catch(Exceprion e) {
e.printStackTrace();
}
}
}
另外,本范例涉及到SD卡的读取,还要在在Manifest.xml注册写SD卡的权限。
网友评论