마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Camera 사용중 onPause 질문드립니다.

0 추천
카메라를 오픈하여 프리뷰를 받아오고있는 도중

갑자기 onPause가 올라오는 경우가 발생합니다.

혹시 이런경우에 대해 알고계신분 팁이라도 부탁드립니다.. ㅠ
익명사용자 님이 2017년 11월 27일 질문
2017년 11월 27일 수정

2개의 답변

0 추천
 
채택된 답변

Kotlin으로 작성된 소스이며 lock 후에는 release()를 호출해주셔야 합니다.

 
minor (13,710 포인트) 님이 2017년 11월 27일 답변
구글 레퍼런스 코드를 참고하여 작성한 코드라 카메라를 열어줄때와 닫아줄때 모두 세마포어로 처리를 해주었습니다.
그래도 똑같은 현상들이 발생하네요..ㅠ
두 가지 상황이 있을 것 같습니다.
1. 화면 회전으로 인한 Acitivty의 재호출
2. Dialog와 함께 사용시 LifeCycle의 문제로 onPause()가 간헐적으로 발생하는 현상
이것들을 고려해서 다시 시도해보시는 것도 좋을 것 같습니다.
매니페스트에서 orientation을 고정했기 때문에 1번의 가능성은 없어보입니다.
가능성이 있다면 2번일텐데
Dialog역시 사용하지 않기때문에 이역시도..ㅠ
현재 API21버전으로 사용중입니다.
그런데 구글 레퍼런스 코드를 받아서 그대로 실행시켜도 똑같은 현상이 발생하더군요..
두가지 상황이 모두 해당하지 않는다면 현재 알 수 있는 정보만으로는 추측이 불가능할 것 같습니다.
상황에 대한 더 많은 정보가 있어야 알 수 있을 것 같습니다.
바쁘신데 친절한 답변 감사드립니다ㅎㅎ
많은 도움됬습니다~!
0 추천

onPause() 호출시에는 Camera, CameraDevice, CameraCaptureSession을 close() 해주시면 됩니다.

onResume() 일때만 처리를 해주시면 되구요.

프리뷰를 받아오는 시간을 대기할만큼 느린 어플이라면 처음부터 설계가 잘못된 것 같습니다.

https://github.com/googlesamples/android-Camera2Basic

해당 소스 참고하시고 onPause(), onResume()에 대한 처리를 해주시면 될 것 같습니다.

 
minor (13,710 포인트) 님이 2017년 11월 27일 답변
친절한 답변 감사드립니다!
제 질문은 preview가 진행되고 있는 도중 갑자기 onPause가 올라오는 현상에 대해 질문드린것이였습니다 ㅠ
다른 액티비티를 올리는 등의 액션이 없었는데도 onPause가 올라와서 말이죠..ㅠ 혹시 짐작하는 부분이라던지 있으실까요?
onPause가 올라온다는 말씀의 의미가
onPause()에서의 로직이 계속해서 실행된다는 말씀이신가요?
해당 현상은 Camera가 BackgroundThread에서 실행되면서 Mutual Exclusion이 되지 않아서 발생하는 현상 같습니다.
Semaphore()로 처리를 해주시면 될 것 같습니다.
네 프리뷰가 진행되고있는 상황에서 일정시간 후 갑자기 Activity내에서 override된 OnPause가 호출된다는 말이였습니다!
...