问题描述: 在使用Android MediaPlayer和SurfaceView进行视频播放时,调用MediaPlayer的prepare()方法失败。
解决方法:
SurfaceView surfaceView = findViewById(R.id.surfaceView);
SurfaceHolder surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
// Surface创建时调用
mediaPlayer.setDisplay(holder); // 将SurfaceHolder与MediaPlayer关联
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// Surface尺寸发生变化时调用
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// Surface销毁时调用
}
});
mediaPlayer.setDataSource(videoUri);
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start(); // 准备完成后开始播放
}
});
以上是解决Android MediaPlayer和SurfaceView在prepare()方法上失败的一些常见方法,希望对你有帮助。