我的活动中有一个SurfaceView,它连接到MediaPlayer。首次创建活动时视频运行正常,但是当我按下主页按钮然后返回应用程序时,SurfaceView会变黑,甚至电影中的音频也无法播放。
@Override
public void onCreate(Bundle savedInstanceState) {
mSurfaceView = (SurfaceView) findViewById(R.id.surface);
mSurfaceView.getHolder().addCallback(this);
mSurfaceView.getHolder().setFixedSize(1080, 1920);
mSurfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
if (mp == null)
mp = new MediaPlayer();
Uri video = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.video);
try {
mp.setDataSource(this, video);
mp.prepare();
} catch (IOException e) {
return;
}
mp.setLooping(true);
//Get the SurfaceView layout parameters
android.view.ViewGroup.LayoutParams lp = mSurfaceView.getLayoutParams();
lp.width = 1080;
lp.height = 1920;
//Commit the layout parameters
mSurfaceView.setLayoutParams(lp);
mp.setDisplay(mSurfaceView.getHolder());
//Start video
mp.start();
}
我查看了其他解决方案,但他们使用的是扩展SurfaceView并实现Runnable的自定义类。我希望使用默认的SurfaceView类。有什么方法可以解决这个问题吗?
答案 0 :(得分:0)
通过在活动暂停时暂停MediaPlayer来解决此问题。
@Override
public void onPause() {
super.onPause();
mp.pause();
}