우리는 1 주일 이상 동안 SurfaceViews와 관련된 몇 가지 문제를 해결하기 위해 노력해 왔으며 적절한 해결책을 찾지 못했습니다. 비슷한 문제 (및 Mixare 소스 코드)와 관련하여 포럼의 다른 질문을 읽었지만 답변을 찾지 못해서 어떻게 든 도와 줄 수 있기를 바랍니다.SurfaceView, Camera 및 OpenGL로 싸우기
시나리오 : 는 우리는 카메라
- 서피스 뷰 SurfaceView 있어요.
- 화면에 표시되는 정보를 보여주는 다른보기입니다. 이것은 두 SurfaceViews의 상단에 있습니다.
문제 :
이상관없이 우리가하려고 얼마나 열심히, 모두 SurfaceViews 분명히 서로 잘에 도착하지 않습니다. 우리가 시도 할 경우 :
setContentView(mCameraPreview);
addContentView(mGLSurfaceView, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
addContentView(mInfoView, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
(논리적으로 보입니다.) 우리가 전화를 잠 그거나 잠금을 해제 할 때까지 예상대로 진행됩니다. 그 후, GLSurfaceView가 사라집니다 (InfoView가 아니라, 여전히 표시됨).
대신, 우리가하려고하는 경우 :
setContentView(mGLSurfaceView);
addContentView(mCameraPreview, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
addContentView(mInfoView, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
그런 문제가 GLSurfaceView는 잠금/잠금 해제 후 나타나고, 그 전에 화면이 카메라와 InfoView의을 보여주고 있다는 점이다.
우리는 뷰를 보여주는 액티비티에서 onStart()를 실행 한 후 4.6 초 (또는 그 이상) 메인 스레드를 잠자면 동작이 예상대로 (카메라, glsurface 및 info 뷰 모두 표시됩니다. 잠금/잠금 해제 후).
우리는 더 우아한 해결책을 찾고 있습니다.
Camera.open()
에서 카메라가 예상보다 많은 시간이 걸리므로 카메라보기가 추가되고 GLSurfaceView가 추가되며 실제로 카메라가 열리면 GLSurfaceView 위에 열립니다. 이와 관련하여 GLSurfaceView에서 bringToFront()
을 사용하여 정보보기 상단에 가져 왔지만 잠금/잠금 해제 후에도 카메라가 그 위에 계속 열려있어 카메라 미리보기가있는 화면 만 남겨 둡니다.
아이디어가 있으십니까? SurfaceViews와 정보보기를 모두 위에 어떻게 표시 할 수 있습니까?
귀하의 질문은 제 지식을 뛰어 넘지 만, 컨테이너 활동에서 GLSurfaceView.onPause() 및 GLSurfaceView.onResume()을 호출하고 있는지 확인하십시오. 이것이이 주제에 대해 제가 생각할 수있는 전부입니다. – harism
우리는 같은 문제를 해결하려고 노력하고있는 것 같습니다. 나는 [내 자신의] (http://stackoverflow.com/questions/5778647/how-to-properly-use-setzordermediaoverlay-on-android)를 올렸을 때 귀하의 질문을 보지 못했습니다. 'setZOrderMediaOverlay()'를 시도 했습니까?나는 그것을 시도했지만이 시나리오를 작동시키지 못했습니다. 어쩌면 당신은 그것을 사용하고이 문제를 해결하는 방법을 알아낼 수 있습니다. – alokoko