-
[Android] Camera Preview가 준비됐는지 알아보기Android📱/삽질 기록... 2024. 2. 8. 21:08
Android 개발 시 Camera를 다룰일이 발생한다.
CameraX나 Camera2 등 구글에서 제공하는 카메라 API를 이용해서 기기의 카메라를 접근할 때
카메라 센서에 보이는 화면을 유저에게 앱에서 보여주기 위해서는
Preview라는 View를 이용해서 보여주게 된다.
그리고 Preview가 준비된 후 진행해야 하는 작업이 존재할 수 있는데
Preview는 fragment나 Activity, Composable이 생성되었다고 Preview까지 준비가 되는 것은 아니다.
그래서 내가 해결해야 했던 부분은 Preview가 준비되고, 카메라를 사용할 준비가 되었을 때
플래시를 켜야 하는 작업이었다.
이처럼 Preview가 세팅된 후에 작업을 해야 할 때를 위해 구글에서는 Preview의 스트림 상태를 observe 할 수 있는 방법을 제공한다.
previewView.previewStreamState.observe(viewLifecycleOwner) { if (it == PreviewView.StreamState.STREAMING) { requestAction(ReturnScooterViewModel.UiAction.InitFlash(AccountPreference.lightOn)) } }
바로 PreviewStreamState이다
PreviewStreamState는 Preview의 상태를 LiveData로 제공하여 IDLE, STREAMING으로 상태를 보여준다.
IDLE은 아직 보이지 않는 상태이고,
STREAMING은 Preview가 보이기 시작할 때인데 ImplementationMode가 PreviewView.ImplementationMode.PERFORMANCE일 때는 살짝 지연될 수 있으니 정확한 타이밍이 필요하다면 ImplementationMode를 PreviewView.ImplementationMode.COMPATIBLE로 설정하고 사용하면 된다.
PreviewStreamState는 라이브 데이터로 상태를 전달하기 때문에 lifecycler을 걱정하지 않고 사용할 수 있는 장점이 있다.
참고
https://developer.android.com/reference/androidx/camera/view/PreviewView.StreamState
'Android📱 > 삽질 기록...' 카테고리의 다른 글