Android 15에서는 Camera 2와 야간 모드 카메라 확장 프로그램 모두에서 사용할 수 있는 새로운 자동 노출 모드인 어두운 조명 자동 노출(AE) 모드를 도입합니다. 어두운 조명 AE 모드는 어두운 조명 조건에서 미리보기 스트림의 밝기를 자동으로 조정합니다. 이는 야간 모드 카메라 확장 프로그램이 정지 이미지를 만드는 방식과 다릅니다. 야간 모드는 여러 장의 사진을 결합하여 하나의 향상된 이미지를 만들기 때문입니다. 야간 모드는 정지 이미지를 만드는 데 매우 효과적이지만 연속적인 프레임 스트림을 만들 수는 없습니다. 하지만 어두운 조명 부스트 AE 모드는 가능합니다. 따라서 저조도 부스트 AE 모드는 다음과 같은 새로운 카메라 기능을 지원합니다.
- 사용자가 어두운 조명 사진의 구도를 더 잘 잡을 수 있도록 향상된 이미지 미리보기를 제공합니다.
- 어두운 곳에서 QR 코드 스캔
저조도 부스트 AE 모드를 사용 설정하면 조명 수준이 낮을 때 자동으로 사용 설정되고 조명 수준이 높아지면 사용 중지됩니다.
저조도 환경에서 미리보기 스트림을 녹화하여 밝기가 향상된 동영상을 저장하는 것도 가능합니다.
Camera2 또는 카메라 확장 프로그램을 통해 저조도 부스트 AE 모드를 사용할 수 있습니다. 이 문서에서는 Camera2에서 저조도 부스트 AE 모드를 사용하는 방법을 설명합니다. 기기에서 지원하는 경우 야간 모드 카메라 확장 프로그램과 함께 어두운 조명 부스트 AE 모드를 사용할 수도 있습니다.
사용 가능 여부 확인
저조도 부스트 AE 모드를 사용하기 전에 기기에서 지원되는지 확인하세요.
사용 가능한 경우 저조도 부스트 AE 모드는 camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES에 나열된 노출 모드 중 하나입니다. 어두운 조명 부스트는 자체 자동 노출 설정입니다. 다른 자동 노출 설정은 어두운 조명 부스트 AE 모드에서 실행하는 미리보기 밝기 조정과 호환되지 않기 때문입니다.
따라서 저조도 부스트 AE 모드를 사용할 수 있는지 확인하려면 CameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES)를 호출하고 반환된 모드에 ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY가 포함되어 있는지 확인합니다.
val characteristics = cameraManager.getCameraCharacteristics(cameraId) val autoExposureModes = characteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES)!! val lowLightBoostSupported = autoExposureModes.contains( CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY ) if (lowLightBoostSupported) { // Enable Low Light Boost AE Mode (next section). } else { // Proceed without Low Light Boost AE Mode. }
어두운 조명 AE 모드 사용 설정
Camera2 세션에서 저조도 부스트 AE 모드를 사용 설정하려면 CaptureRequest.CONTROL_AE_MODE를 ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY로 설정합니다. 그런 다음 어두운 조명 부스트 AE 모드가 사용 설정되었는지 확인해야 합니다. CaptureResult.CONTROL_AE_MODE 필드를 확인하면 됩니다. 어두운 조명 부스트는 일부 카메라 구성과 호환되지 않으므로 확인이 필요합니다. 예를 들어 고속 녹화는 FPS 고려사항으로 인해 저조도 부스트 AE 모드를 지원하지 않습니다. 어두운 조명 부스트 AE 모드가 사용 설정되지 않은 경우 카메라 구성을 변경하고 다시 시도해야 할 수 있습니다.
val captureRequestBuilder = camera.createCaptureRequest( CameraDevice.TEMPLATE_PREVIEW ) if (isLowLightBoostAvailable(cameraId)) { captureRequestBuilder.set( CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY ) } // other capture request params. session.setRepeatingRequest( captureRequestBuilder.build(), object : CaptureCallback() { override fun onCaptureCompleted( session: CameraCaptureSession, request: CaptureRequest, result: TotalCaptureResult ) { // verify Low Light Boost AE Mode AE mode set successfully. result.get(CaptureResult.CONTROL_AE_MODE) == CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY } }, cameraHandler )
어두운 조명 부스트 AE 모드 모니터링
어두운 조명 AE 모드는 저조도 환경에서 미리보기 스트림을 밝게 하며, 환경이 이미 일반 캡처에 충분히 밝은 경우에는 아무런 영향을 미치지 않습니다. CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE 필드를 확인하여 저조도 부스트 AE 모드가 현재 활성 상태인지 확인할 수 있습니다.
어두운 조명 부스트 AE 모드를 사용 설정하고 현재 활성 상태인 경우 이 필드는 CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE로 설정됩니다.
그런 다음 달 아이콘이나 미리보기가 밝아지고 있음을 나타내는 다른 표시를 표시할 수 있습니다.
session.setRepeatingRequest( captureRequestBuilder.build(), object : CaptureCallback() { override fun onCaptureCompleted( session: CameraCaptureSession, request: CaptureRequest, result: TotalCaptureResult ) { // check if Low Light Boost AE Mode is active or inactive. if (result.get(CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE) == CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE ) { // Low Light Boost AE Mode state is active. // Show Moon Icon. } else { // Low Light Boost AE Mode state is inactive or AE mode is not set // to Low Light Boost AE Mode. // Hide Moon Icon. } } }, cameraHandler )