Проблема переключения GLSurfaceView
У меня проблема с переключением GLSurfaceView. У меня есть GLSurfaceView (связанный с камерой), и я хочу переместить его в другой вид, но когда я его перемещаю, он теряет свои кадры и показывает черный экран после переключения. и когда я снова подключаю его к камере, он начинает показывать мою камеру, но с задержкой.
Может ли кто-нибудь сказать мне решение, чтобы переместить его к другому родителю, не теряя его кадров (потому что, когда я повторно подключаю его, он показывает кадры с задержкой 2-3 секунды).
Пожалуйста, найдите код, написанный ниже: (Здесь VideoPanel (расширяет GLSurfaceView) - это Frame, предоставленный oovooSDK для показа видео)
final VideoPanel movingVideoView = parent1.getChildAt(0);
movingView.onPause();
parent1.removeView(movingView);
parent2.addView(movingView);
movingView.onResume();
movingView.requestRender();
для переподключения:
application.unbindVideoPanel(videoView.userId, videoView.videoRender);
application.unbindVideoPanel(videoView.userId, videoView.videoRender);
// this methods shows delay of 2-3 seconds for binding view again
Я попробовал следующие методы также
((VideoPanel) videoView.videoRender).setPreserveEGLContextOnPause(true);
// to save context when paused
((VideoPanel)videoView.videoRender).setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); // to render frame again when requestRender is called
1 ответ
Камера не правильно отпустит, когда твоя деятельность закончится.
Если вы используете вид поверхности, тогда отпустите камеру в onSurfaceDestroy
public void surfaceDestroyed(SurfaceHolder holder) {
if(camera!=null){
camera.stopPreview();
camera.setPreviewCallback(null);
camera.release();
camera = null;
}
}
Также рекомендуем выпустить вашу камеру, если она никогда не будет использоваться.
protected void onDestroy(){
if(camera!=null){
camera.stopPreview();
camera.setPreviewCallback(null);
camera.release();
camera = null;
}
}