【问题标题】:SurfaceView turns black when the activity resumesActivity 恢复时 SurfaceView 变黑
【发布时间】:2014-07-17 18:13:00
【问题描述】:

我的活动中有一个 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 类。有没有办法解决这个问题?

【问题讨论】:

标签: android surfaceview


【解决方案1】:

通过在 Activity 暂停时暂停 MediaPlayer 解决了这个问题。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多