3

我们有一个增强现实应用程序,当指向特定标记时,它会显示视频或 3D 模型。这很好用,但是一旦我们通过后退按钮退出 MediaPlayer 活动,OpenGL 上下文似乎就被破坏了。然后应用程序重新启动并需要重新加载包括 3D 模型在内的所有资产,这会导致大约 10-15 秒的延迟,这是我们想要防止的。我已经阅读了一些关于setPreserveEGLContextOnPause(true)的内容并将其放在我们的 GLSurfaceView 中(我们有一个 3.x 平板电脑),但它似乎没有做任何事情(我是否需要实现其他东西才能使其工作?我几乎没有找到有关它的可用文档)。

我不确定我们的应用程序中的问题可能出在哪里,我想我们的 GLSurface 某处被破坏而我们没有注意到它。

我们从 MediaPlayer 退出的代码是这样的:

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK)) {            
        this.finish();

        Intent intent = new Intent(MediaPlayerActivity.this, OpenGLActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        this.startActivity(intent);
    }
    return super.onKeyDown(keyCode, event);
}

任何提示我们如何保留 OpenGL 上下文,或退出 MediaPlayer 而不破坏我们的主要活动?

4

1 回答 1

1

为了解决这个问题,我们将 MediaPlayer 放在 SurfaceView 层上,它将显示在我们的 OpenGL 内容之上。根据标记,我们只是显示或隐藏图层并防止脱离上下文。

于 2011-11-29T08:40:44.650 回答