@Override
public void surfaceCreated(SurfaceHolder holder) {
initMediaPlayer();
player.setDisplay(holder);//设置让surfaceView来播放视频
player.prepareAsync();//异步准备
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
if(player.isPlaying()){
Log.e("surfaceDestroyed###","播放结束");
player.stop();//停止
player.release();//释放资源
}
}
添加暂停、开始监听事件:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.start:
if (isPause) {
mediaPlayer.start(); //重新播放
isPause = false;
}
break;
case R.id.pause:
//如果正在播放
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();//暂停
isPause = true;
}
break;
default:
break;
}
}
进度条:
//进度条改变的进度
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
//开始拖动
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
//停止拖动
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
mediaPlayer.seekTo(seekBar.getProgress());//调整mediaplayer的播放进度
handler.removeCallbacksAndMessages(null);//删除所有handler的信息.
Message message = new Message();
time = (seekBar.getProgress() / 1000);
handler.sendMessage(message);
}
@Override
protected void onDestroy() {
super.onDestroy();
handler.removeCallbacksAndMessages(null);//防止内存泄漏
}
}
Handler操作进度条的改变:
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
seekBar.setProgress(time * 1000);
Message message = new Message();
time++;
handler.sendMessageDelayed(message, 1000);
}
};