多媒体播放的状态图:
音乐播放状态:Idle--setDataSource()-->Initialized--prepare()-->Prepared--start()-->Started[-->stop()-->Stoped]--pause()-->Paused--start()-->Started...
public class MainActivity extends Activity implements OnClickListener {
private Button start, pause, stop, restart;
private MediaPlayer player;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start = (Button) findViewById(R.id.bt_start);
pause = (Button) findViewById(R.id.bt_pause);
stop = (Button) findViewById(R.id.bt_stop);
restart = (Button) findViewById(R.id.bt_restart);
start.setOnClickListener(this);
pause.setOnClickListener(this);
stop.setOnClickListener(this);
restart.setOnClickListener(this);
initMediaPlayer();
}
private void initMediaPlayer() {
// TODO Auto-generated method stub
//初始化多媒体播放
player = new MediaPlayer();
try {
//设置播放的音乐文件(这里指定为sdcard的根目录下的smile.mp3音乐文件)
player.setDataSource(Environment.getExternalStorageDirectory().getAbsolutePath() + "/smile.mp3");
//准备就绪
player.prepare();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//音乐播放完毕执行的方法
player.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "播放完毕!", 0).show();
}
});
//音乐播放出错所执行的方法
player.setOnErrorListener(new OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "播放出错!", 0).show();
return false;
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.bt_start:
//播放音乐
player.start();
break;
case R.id.bt_pause:
//暂停播放
player.pause();
break;
case R.id.bt_stop:
//停止播放
player.stop();
break;
case R.id.bt_restart:
try {
//重新开始播放,先设置到准备就绪状态
player.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
player.seekTo(0);//设置从头开始播放
player.start();//开始播放音乐
break;
default:
break;
}
}
}
<span style="white-space:pre"> </span>//音频播放常用方法:
player.reset();//重置player
player.release();//释放player
player.setLooping(true);//设置是否循环播放
player.getDuration();//获取音乐播放时长
player.getCurrentPosition();//获取当前播放的位置的时间
player.seekTo(10);//跳到指定的时间播放
player.isLooping();//获取当前播放音乐是否循环播放
player.isPlaying();//获取当前播放器是否正在播放
setOnCompletionListener() onCompletion(MediaPlayer mp)mp;//音乐播放完毕执行的方法
setOnErrorListener() onError() //音乐播放出错所执行的方法