一、传统实现的基本步骤
1、MediaPlayer mediaPlayer1 = new MediaPlayer();
2、SurfaceView的getHolder()函数可以获取SurfaceHolder对象,Surface 就在SurfaceHolder对象内。
Surface第一次被创建时回调surfaceCreated()方法
//设置播放时打开屏幕 m surfaceView.getHolder().setKeepScreenOn(true);
surfaceView.getHolder().addCallback(new Callback() {@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
//开始播放
play();
} catch (Exception e) {
// TODO: handle exception
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
});
}
3、
private void play() {
try {
mediaPlayer1.setAudioStreamType(AudioManager.STREAM_MUSIC);
//设置需要播放的视频 ,括号里填绝对路径或者网络urlmediaPlayer.1setDataSource(mFinalUrl);
//把视频画面输出到SurfaceView
mediaPlayer1.setDisplay(surfaceView.getHolder());
mediaPlayer1.setScreenOnWhilePlaying(true);
mediaPlayer1.prepareAsync();
//从指定位置开始播放
if(position>0){
mediaPlayer1.seekTo(position);
position=0; }
//播放
mediaPlayer1.start();
} catch (Exception e) {
// TODO: handle exception
}
}
二、封装解耦
在实际应用中将蓝色部分的代码封装成一个新的BaseMediaPlayer(公司游戏中心新封装的类叫GameVedioPlayer)该类除了封装了MediaPlayer,还实现了
SurfaceHolder.Callback接口