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 に答える