Od wersji CameraX 1.2 tryb bez opóźnienia migawki jest dostępny jako tryb fotografowania. Włącz opóźnienie migawki na poziomie 0 ms, aby znacznie zmniejszyć opóźnienie w porównaniu z domyślnym trybem fotografowania. Dzięki temu nie przegapisz żadnego ujęcia.
Włączanie bez opóźnienia migawki
Aby włączyć zerową latencję migawki, prześlij wartość CAPTURE_MODE_ZERO_SHOT_LAG
do ImageCapture.Builder.setCaptureMode()
. Jeśli się nie powiedzie, setCaptureMode()
przyjmie wartość CAPTURE_MODE_MINIMIZE_LATENCY
.
Więcej informacji o trybach fotografowania znajdziesz w przewodniku po trybach fotografowania.
Jak to działa
Funkcja zerowej zwłoki migawki korzysta z pierścieniowego bufora, który przechowuje 3 najnowsze klatki. Gdy użytkownik naciśnie przycisk przechwytywania, CameraX wywoła funkcję takePicture()
, a pierścieniowy bufor odbierze przechwycony obraz z sygnaturą czasową najbliższą sygnaturze czasu naciśnięcia przycisku. Następnie CameraX ponownie przetwarza sesję rejestrowania, aby wygenerować obraz z danej klatki, który zapisuje na dysku w formacie JPEG.
Wymagania wstępne
Zanim włączysz zerową latencję migawki, sprawdź w isZslSupported()
, czy Twoje urządzenie spełnia te wymagania:
- Kieruje na Androida 6.0 lub nowszego (poziom interfejsu API 23 lub wyższy).
- Obsługuje przetwarzanie
PRIVATE
.
W przypadku urządzeń, które nie spełniają wymagań minimalnych, CameraX używa CAPTURE_MODE_MINIMIZE_LATENCY
.
Zerowy opóźnienie migawki jest dostępne tylko w przypadku przechwytywania obrazu. Nie można go włączyć w przypadku nagrywania wideo ani rozszerzeń aparatu.
Ponieważ korzystanie z lampy błyskowej powoduje dłuższe opóźnienie, funkcja Zero-Shutter Lag nie działa, gdy lampa błyskowa jest włączona lub w trybie AUTO. Więcej informacji o ustawianiu trybu lampy błyskowej znajdziesz w artykule setFlashMode()
.