CameraX 1.2부터 제로 셔터 랙을 캡처 모드로 사용할 수 있습니다. 제로 셔터 랙을 사용 설정하면 기본 캡처 모드에 비해 지연 시간이 크게 줄어 장면을 놓치지 않을 수 있습니다.
제로 셔터 랙 사용 설정
제로 셔터 랙을 사용 설정하려면 ImageCapture.Builder.setCaptureMode()
에 CAPTURE_MODE_ZERO_SHOT_LAG
를 전달합니다. 실패하면 setCaptureMode()
가 CAPTURE_MODE_MINIMIZE_LATENCY
로 대체됩니다.
캡처 모드에 관한 자세한 내용은 이미지 캡처 가이드를 참고하세요.
작동 방식
제로 셔터 랙은 가장 최근의 캡처 프레임 3개를 저장하는 링 버퍼를 사용합니다. 사용자가 캡처 버튼을 누르면 CameraX는 takePicture()
를 호출하고 링 버퍼는 버튼 누르기의 타임스탬프에 가장 가까운 타임스탬프로 캡처된 프레임을 가져옵니다. 그러면 CameraX는 캡처 세션을 다시 처리하여 해당 프레임에서 이미지를 생성하고 이는 JPEG 형식으로 디스크에 저장됩니다.
기본 요건
제로 셔터 랙을 사용 설정하기 전에 isZslSupported()
를 사용하여 기기가 다음 요구사항을 충족하는지 확인하세요.
- Android 6.0 이상(API 수준 23 이상)을 타겟팅합니다.
PRIVATE
재처리를 지원합니다.
최소 요구사항을 충족하지 않는 기기의 경우 CameraX가 CAPTURE_MODE_MINIMIZE_LATENCY
로 대체됩니다.
제로 셔터 랙은 이미지 캡처에만 사용할 수 있습니다. 동영상 캡처 또는 카메라 확장 프로그램에서는 사용 설정할 수 없습니다.
마지막으로 플래시를 사용하면 지연 시간이 길어지므로 플래시가 켜져 있거나 자동 모드일 때는 제로 셔터 랙이 작동하지 않습니다. 플래시 모드 설정에 관한 자세한 내용은 setFlashMode()
를 참고하세요.