Контекст OpenGL уничтожен после выхода из MediaPlayer - PullRequest
3 голосов
/ 09 ноября 2011

У нас есть приложение дополненной реальности, которое отображает видео или 3D-модель при наведении на определенный маркер.Это работает нормально, но как только мы завершаем работу MediaPlayer с помощью кнопки Back, контекст 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, не прерывая нашу основную деятельность?

1 Ответ

1 голос
/ 29 ноября 2011

Чтобы обойти это, мы поместили MediaPlayer на слой SurfaceView, который будет отображаться поверх нашего материала OpenGL.В зависимости от маркера мы просто показываем или скрываем слой и предотвращаем переключение из контекста.

...