我在切换GLSurfaceView时遇到了问题。我有一个GLSurfaceView (与摄像头连接),我想将它移动到另一个视图,但当我移动它时,它丢失了它的帧,并在切换后显示blackScreen。当我将它重新连接到相机时,它开始显示我的相机,但有延迟。
谁能告诉我解决方案,把它移到另一个父母而不丢失它的帧(因为当我重新连接它时,它的显示帧有2-3秒的延迟)。
请看下面的代码:(这里的VideoPanel (扩展GLSurfaceView)是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发布于 2016-11-15 18:14:21
当您的活动将要结束时,相机不能正常释放。
如果您使用的是曲面视图,则在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;
}
}https://stackoverflow.com/questions/40605063
复制相似问题