Ab CameraX 1.2 ist der Modus „Null-Verschlussverzögerung“ als Aufnahmemodus verfügbar. Aktivieren Sie die Funktion „Null-Verschlussverzögerung“, um die Latenz im Vergleich zum Standardaufnahmemodus deutlich zu reduzieren. So verpassen Sie nie wieder den perfekten Moment.
Zero-Shutter-Lag aktivieren
Wenn Sie die Funktion „Zero-Shutter-Lag“ aktivieren möchten, übergeben Sie CAPTURE_MODE_ZERO_SHOT_LAG
an ImageCapture.Builder.setCaptureMode()
. Andernfalls wird setCaptureMode()
auf CAPTURE_MODE_MINIMIZE_LATENCY
zurückgesetzt.
Weitere Informationen zu Aufnahmemodi finden Sie im Leitfaden zur Bildaufnahme.
Funktionsweise
Bei der Funktion „Null-Verschlussverzögerung“ wird ein Ringbuffer verwendet, in dem die drei letzten Aufnahmeframes gespeichert werden. Wenn ein Nutzer die Aufnahmetaste drückt, ruft CameraX takePicture()
auf und der Ringbuffer ruft den aufgenommenen Frame mit dem Zeitstempel ab, der dem der Tastenbetätigung am nächsten ist. CameraX verarbeitet die Aufnahmesitzung dann noch einmal, um ein Bild aus diesem Frame zu generieren, das im JPEG-Format auf dem Laufwerk gespeichert wird.
Voraussetzungen
Bevor Sie die Funktion „Null-Verschlussverzögerung“ aktivieren, prüfen Sie unter isZslSupported()
, ob Ihr Gerät die folgenden Anforderungen erfüllt:
- Die App ist auf Android 6.0 und höher (API-Level 23 und höher) ausgerichtet.
- Unterstützt die erneute Verarbeitung von
PRIVATE
.
Bei Geräten, die die Mindestanforderungen nicht erfüllen, greift CameraX auf CAPTURE_MODE_MINIMIZE_LATENCY
zurück.
Der Verschluss ohne Verzögerung ist nur für die Bildaufnahme verfügbar. Sie können sie nicht für die Videoaufzeichnung oder mit Kameraerweiterungen aktivieren.
Da die Verwendung des Blitzes zu einer höheren Latenz führt, funktioniert die Funktion „Null-Verschlussverzögerung“ nicht, wenn der Blitz eingeschaltet ist oder sich im Modus „AUTO“ befindet. Weitere Informationen zum Festlegen des Blitzmodus finden Sie unter setFlashMode()
.