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 );