活动恢复后,SurfaceView会变黑

时间:2014-07-17 18:13:01

标签: android surfaceview

我的活动中有一个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类。有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

通过在活动暂停时暂停MediaPlayer来解决此问题。

@Override
public void onPause() {
    super.onPause();
    mp.pause();
}