물에 살고싶은 개발자

[CameraView] 카메라 사용 후 홈 화면을 나갔다 오면 카메라가 보일 때 본문

Android

[CameraView] 카메라 사용 후 홈 화면을 나갔다 오면 카메라가 보일 때

돼지사랑 2022. 8. 21. 17:08

이번 글은 카메라뷰 라이브러리를 사용하다 오류가 발견되어 해결책을 기록하기 위한 글이다.

역시나 바로 선결론

 

문제발생 : 같은 Fragment에서 카메라를 사용 후 View의 Visible값만 GONE으로 변경해 사용종료처리를 했을때 홈화면을 나갔다 앱으로 돌아오면 화면에 카메라 프리뷰가 보이는 문제가 발생. 

 

해결책 : 이전 글에서 카메라 객체에 뷰(액티비티 또는 프래그먼트)의 생명주기를 연결시켰었는데, 그걸 풀고 수동으로 처리하면 된다. 

camera.setLifecycleOwner(viewLifecycleOwner)

위 코드처럼 생명주기 연결한 코드를 삭제하거나 주석처리해서 연결을 풀고 아래처럼 생명주기에서 직접 컨트롤하자.

// 라이프싸이클과 연계해서 카메라 컨트롤을 위한 변수
    var isOpenedCamera = false
    override fun onResume() {
        super.onResume()
        binding.apply {
            if (isOpenedCamera) camera.open()
            else camera.close()
        }
    }

    override fun onPause() {
        super.onPause()
        binding.apply {
            isOpenedCamera = camera.isOpened
            camera.close()
        }
    }

    override fun onDestroy() {
        super.onDestroy()
        binding.camera.destroy()
    }

 

이런식으로 처리해주면 된다. 상황에 따라 예외처리가 더 필요할수도있지만, 그것은 상황에따라 너무도 다르므로 이 글에서 거기까지 다루진 않겠다.

 

끝 ! 

Comments