SurfaceView
까지 확장되는 사용자 정의 카메라 미리보기 CameraView
을 만들었으며 SurfaceHolder.Callback
인터페이스도 구현합니다. 뷰는 카메라와 함께 작동합니다. 보기를 열면 카메라 미리보기가 표시됩니다. 동일한 화면에는 '사진 찍기', '갤러리에서 선택'등 두 개의 버튼이있는 오버레이가 있습니다. CameraView
이있는 활동은 onPause()
및 onResume()
방법으로 카메라를 해제하고 다시 엽니 다. 의도 선택기가 취소 된 후 카메라 다시 열기
나는 '선택 갤러리에서'버튼을 클릭하면
는 다음과 같은 의도가 생성됩니다 : 괜 찮 아 요 다음이 의도에 응답 할 수있는 단 하나의 활동이Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, LOAD_PICTURE);
합니다. 활동이 자동으로 열리고 카메라가 해제됩니다. 갤러리에서 다시 돌아와서 CameraView
활동으로 돌아가고 카메라 미리보기가 복원됩니다.
이 의도를 처리 할 수있는 여러 활동이 있고 인 텐트 선택 대화 상자가 튀어 나오면 흥미로운 부분이 시작됩니다. 의도 선택기 대화 상자가 열리면 부모 작업에서 onPause()
이 호출되고 카메라가 해제되면 화면이 검은 색이됩니다. 대화 상자에서 인 텐트를 선택하지 않고 대신 전화기의 뒤로 버튼을 클릭하면 onResume()
이 호출되지만 카메라 미리보기는 다시 나타나지 않습니다. 카메라 미리보기를 다시 표시하려면 이전 활동으로 돌아가서 미리보기 활동으로 돌아 가야합니다.
대화 상자가 발생했을 때 onPause()
만 호출되었지만 실제로 다른 활동으로 전환하면 surfaceDestroyed()
도 호출되므로 다음 문제가 발생합니다. onResume()
에 대해서도 마찬가지입니다. 대화 상자가 뒤로 가기 버튼으로 취소되고 surfaceChanged()
및 surfaceCreated()
이 호출되지 않습니다.
제 질문은 의도 선택기 대화 상자가 취소 된 경우 카메라 미리보기를 다시 표시하는 방법입니다. SurfaceHolder.Callback
메서드를 명시 적으로 트리거하는 방법이 있습니까? hideSurface()
과 showSurface()
이 SurfaceView
에 숨겨져 있음을 알고 있지만이 경로를 원하지 않습니다.
가 대신()을 중지시에 카메라를 출시 할 방법을 시도 했습니까? 마찬가지로 onStart()에서 카메라 미리보기를 열거 나 다시 열 수 있습니다. – Houf