Automatischer Belichtungsmodus mit Modus für wenig Licht

Android 15 führt den Auto-Belichtungsmodus (AE) mit Low Light Boost ein. Dieser neue Modus für die automatische Belichtung ist sowohl für Camera 2 als auch für die Kameraerweiterung für den Nachtmodus verfügbar. Im AE-Modus „Low Light Boost“ wird die Helligkeit des Vorschaustreams bei schlechten Lichtverhältnissen automatisch angepasst. Das unterscheidet sich von der Funktionsweise der Kameraerweiterung für den Nachtmodus, bei der Standbilder erstellt werden. Im Nachtmodus werden mehrere Fotos zu einem einzigen verbesserten Bild kombiniert. Der Nachtmodus eignet sich zwar sehr gut zum Erstellen eines Standbilds, kann aber keinen kontinuierlichen Frames-Stream erstellen. Das ist jedoch mit dem AE-Modus „Low Light Boost“ möglich. Der AE-Modus „Low Light Boost“ ermöglicht daher neue Kamerafunktionen, z. B.:

  • Eine verbesserte Bildvorschau, damit Nutzer ihre Fotos bei schlechten Lichtverhältnissen besser ausrichten können.
  • QR-Codes bei wenig Licht scannen

Wenn Sie den AE-Modus für den Boost bei wenig Licht aktivieren, wird er automatisch aktiviert, wenn die Lichtverhältnisse schlecht sind, und deaktiviert, wenn mehr Licht vorhanden ist.

Apps können sogar die Vorschau eines Streams bei schlechten Lichtverhältnissen aufnehmen und dann ein aufgehelltes Video speichern.

Sie können den AE-Modus „Low Light Boost“ entweder in Camera2 oder über Kameraerweiterungen verwenden. In diesem Dokument wird beschrieben, wie Sie den AE-Modus „Low Light Boost“ mit Camera2 verwenden. Sie können den AE-Modus „Low Light Boost“ auch mit der Kameraerweiterung „Nachtmodus“ verwenden, sofern diese vom Gerät unterstützt wird.

Verfügbarkeit prüfen

Prüfen Sie vor der Verwendung des AE-Modus „Boost bei wenig Licht“, ob er auf dem Gerät unterstützt wird. Wenn er verfügbar ist, ist der AE-Modus „Low Light Boost“ einer der Belichtungsmodi, die unter camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES aufgeführt sind. „Low Light Boost“ ist eine eigene Einstellung für die automatische Belichtung, da andere Einstellungen für die automatische Belichtung nicht mit der Vorschauhelligkeit kompatibel sind, die durch den AE-Modus „Low Light Boost“ erfolgt.

Wenn Sie prüfen möchten, ob der AE-Modus „Low Light Boost“ verfügbar ist, rufen Sie CameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES) auf und prüfen Sie, ob ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY zu den zurückgegebenen Modi gehört:

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

Java

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

AE-Modus für wenig Licht aktivieren

Wenn Sie den AE-Modus „Low Light Boost“ in einer Camera2-Sitzung aktivieren möchten, setzen Sie CaptureRequest.CONTROL_AE_MODE auf ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY. Anschließend müssen Sie prüfen, ob der AE-Modus „Boost bei wenig Licht“ aktiviert ist. Klicken Sie dazu auf das Feld CaptureResult.CONTROL_AE_MODE. Sie müssen das prüfen, da Low Light Boost nicht mit allen Kamerakonfigurationen kompatibel ist. So wird beispielsweise bei der Hochgeschwindigkeitsaufzeichnung der AE-Modus „Low Light Boost“ aufgrund von FPS-Überlegungen nicht unterstützt. Wenn der AE-Modus „Boost bei wenig Licht“ nicht aktiviert ist, müssen Sie möglicherweise die Kamerakonfiguration ändern und es noch einmal versuchen.

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

Java

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

Modus für die automatische Belichtung mit Boost für wenig Licht

Der AE-Modus „Boost bei wenig Licht“ hellt den Vorschaustream bei schlechten Lichtverhältnissen auf. Er hat keine Auswirkungen, wenn die Umgebung bereits hell genug für eine normale Aufnahme ist. Im Feld CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE sehen Sie, ob der AE-Modus „Boost bei wenig Licht“ derzeit aktiv ist. Wenn Sie den AE-Modus „Boost bei wenig Licht“ aktiviert haben und er derzeit aktiv ist, ist das Feld auf CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE gesetzt. Sie können dann ein Mondsymbol oder eine andere Angabe anzeigen, dass die Vorschau heller wird.

Kotlin

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
)

Java

mSession.setRepeatingRequest(
  captureRequestBuilder.build(),
  new CaptureCallback() {
    @Override
    public void onCaptureCompleted(CameraCaptureSession session,
        CaptureRequest request, TotalCaptureResult result) {
      // 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
      }
    }
  },
  mCameraHandler
);