Skrócenie czasu oczekiwania dzięki funkcji Zero-Shutter Lag

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().