1.创建MySurfaceView
public class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback {
private MediaPlayer mediaPlayer=new MediaPlayer();
public MySurfaceView(Context context, AttributeSet attrs) {
super(context, attrs);
getHolder().addCallback(this);
}
@Override
public void surfaceCreated(@NonNull SurfaceHolder surfaceHolder) {
mediaPlayer.setDisplay(getHolder());
}
@Override
public void surfaceChanged(@NonNull SurfaceHolder surfaceHolder, int i, int i1, int i2) {
}
@Override
public void surfaceDestroyed(@NonNull SurfaceHolder surfaceHolder) {
mediaPlayer.release();
}
public void start(String url){
mediaPlayer.reset();
try {
mediaPlayer.setDataSource(url);
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.start();
}
});
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public void pause(){
mediaPlayer.pause();
}
public void goOn(){
mediaPlayer.start();
}
}
2.视频列表跳转播放页(实例类记得序列化)
myVideoAdapter.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(@NonNull BaseQuickAdapter adapter, @NonNull View view, int position) {
Intent intent = new Intent(getContext(), VideoPlayActivity.class);
intent.putExtra("video",list.get(position));
startActivity(intent);
}
});
3.调用MySurfaceView
VideoEntity.DataBean video = (VideoEntity.DataBean) getIntent().getSerializableExtra("video");
activityVideoPlayBinding.surface.start(video.getVideopath());
activityVideoPlayBinding.pause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
activityVideoPlayBinding.surface.pause();
}
});
activityVideoPlayBinding.Continue.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
activityVideoPlayBinding.surface.goOn();
}
});