저조도 증폭

Android 15에서는 Android 기기에 사용할 수 있는 새로운 자동 노출 모드인 어두운 조명 부스트가 도입되었습니다. 카메라 2야간 모드 카메라 확장 프로그램 모두 어두운 조명 모드 조명이 어두운 곳에서 미리보기 스트림의 밝기를 자동으로 조정합니다. 조건일 수 있습니다 이는 야간 모드 카메라 확장 프로그램에서 야간 모드는 여러 장의 사진을 결합하여 향상된 이미지입니다. 야간 모드는 정지 이미지를 만들 때 매우 효과적이지만 연속적인 프레임 스트림을 만들 수 없지만 어두운 조명 부스트는 만들 수 있습니다. 따라서 저조도 부스트를 사용하면 다음과 같은 새로운 카메라 기능을 사용할 수 있습니다.

  • 향상된 이미지 미리보기를 제공하여 사용자가 있습니다.
  • 조명이 어두운 곳에서 QR 코드를 스캔합니다.

어두운 조명 부스트를 사용 설정하면 어두운 곳에서 조명이 자동으로 켜집니다. 밝게 하고 주변 조명이 더 밝으면 꺼집니다.

앱은 어두운 환경에서 미리보기 스트림을 녹화하여 더욱 밝아진 동영상을 조정할 수 있습니다

Camera2에서 또는 다음을 통해 어두운 조명 부스트를 사용할 수 있습니다. 카메라 확장 프로그램. 이 문서에서는 Camera2에서 어두운 조명 부스트를 사용하는 방법을 설명합니다. 또한 야간 모드 카메라 확장 프로그램으로 어두운 조명 부스트를 지원하는 경우 있습니다.

사용 가능 여부 확인

어두운 조명 부스트를 사용하기 전에 기기에서 지원되는지 확인하세요. 만약 어두운 조명 부스트는 아래의 노출 모드 중 하나입니다. camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES (어두운 조명 부스트는 자체 자동 노출 설정입니다(다른 자동 노출 설정). 어두운 조명 부스트에서 실행하는 미리보기 밝기와 호환되지 않음).

따라서 어두운 조명 부스트를 사용할 수 있는지 확인하려면 CameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES) 드림 반환된 모드에 ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY가 포함되어 있는지 확인합니다.

Kotlin

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 (next section)
} else {
  // Proceed without Low Light Boost
}

자바

CameraCharacteristics characteristics =
    mCameraManager.getCameraCharacteristics(cameraId);
int[] autoExposureModes =
    characteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES);
boolean lowLightBoostSupported = autoExposureModes.contains(
        CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY);

if (lowLightBoostSupported) {
  // Enable Low Light Boost (next section)
} else {
  // Proceed without Low Light Boost
}

어두운 조명 부스트 사용 설정

Camera2 세션에서 저조도 부스트를 사용 설정하려면 다음을 설정하세요. CaptureRequest.CONTROL_AE_MODE(으)로 ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY 그 후에는 다음 작업을 수행해야 합니다. 어두운 조명 부스트가 사용 설정되어 있는지 확인합니다. Ad Exchange 계정의 CaptureResult.CONTROL_AE_MODE 필드 조명이 어둡기 때문에 확인해야 합니다. 부스트는 일부 카메라 구성과 호환되지 않습니다. 예를 들어 고속 녹화 시 FPS 고려사항으로 인해 어두운 조명 부스트가 지원되지 않습니다. 만약 어두운 조명 부스트가 사용 설정되어 있지 않습니다. 카메라를 변경해야 할 수 있습니다. 다시 시도해 보세요

Kotlin

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 set successfully
      result.get(CaptureResult.CONTROL_AE_MODE) ==
          CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
    }
  },
  cameraHandler
)

자바

CaptureRequest.Builder captureRequestBuilder =
  mCamera.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

mSession.setRepeatingRequest(
  captureRequestBuilder.build(),
  new CaptureCallback() {
    @Override
    public void onCaptureCompleted(CameraCaptureSession session,
        CaptureRequest request, TotalCaptureResult result) {
      // verify Low Light Boost AE mode set successfully
      result.get(CaptureResult.CONTROL_AE_MODE) ==
          CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY;
    }
  },
  mCameraHandler
);

어두운 조명 부스트 모니터링

어두운 조명 부스트는 조명이 어두운 환경에서 미리보기 스트림을 밝게 합니다. 주변이 정상을 위해 이미 충분히 밝은 경우에는 아무런 영향을 미치지 않습니다. 있습니다 다음을 확인하여 어두운 조명 부스트가 현재 활성화되어 있는지 확인할 수 있습니다. CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE 필드 만약 어두운 조명 부스트가 사용 설정되어 있고 현재 활성 상태인 경우 필드가 다음과 같이 설정됩니다. CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE 그런 다음 달 아이콘 또는 미리보기가 밝아지는 것을 나타내는 다른 표시가 있습니다.

Kotlin

session.setRepeatingRequest(
  captureRequestBuilder.build(),
  object : CaptureCallback() {
    @Override
    fun onCaptureCompleted(session: CameraCaptureSession,
        request: CaptureRequest, result: TotalCaptureResult) {
      // check if Low Light Boost is active or inactive
      if (result.get(CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE) ==
        CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE) {
        // Low Light Boost state is active
        // Show Moon Icon
      } else {
        // Low Light Boost state is inactive or AE mode is not set
        // to Low Light Boost
        // Hide Moon Icon
      }
    }
  },
  cameraHandler
)

Java

mSession.setRepeatingRequest(
  captureRequestBuilder.build(),
  new CaptureCallback() {
    @Override
    public void onCaptureCompleted(CameraCaptureSession session,
        CaptureRequest request, TotalCaptureResult result) {
      // check if Low Light Boost is active or inactive
      if (result.get(CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE) ==
        CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE) {
        // Low Light Boost state is active
        // Show Moon Icon
      } else {
        // Low Light Boost state is inactive or AE mode is not set
        // to Low Light Boost
        // Hide Moon Icon
      }
    }
  },
  mCameraHandler
);