Skrócenie czasu oczekiwania dzięki funkcji Zero-Shutter Lag
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
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()
.
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2025-07-27 UTC."],[],[],null,["# Reduce latency with Zero-Shutter Lag\n\n| **Note:** Zero-Shutter Lag is an experimental feature. To leave feedback on Zero-Shutter Lag, join the [Android CameraX Discussion Group](https://groups.google.com/a/android.com/g/camerax-developers).\n\nStarting in [CameraX 1.2](/jetpack/androidx/releases/camera), Zero-Shutter Lag is available as a capture mode.\nEnable Zero-Shutter Lag to significantly reduce latency compared to the\n[default capture mode](/reference/androidx/camera/core/ImageCapture#CAPTURE_MODE_MINIMIZE_LATENCY()), so you never miss the shot.\n\nEnable Zero-Shutter Lag\n-----------------------\n\nTo enable Zero-Shutter Lag, pass [`CAPTURE_MODE_ZERO_SHOT_LAG`](/reference/androidx/camera/core/ImageCapture#CAPTURE_MODE_ZERO_SHUTTER_LAG()) to\n[`ImageCapture.Builder.setCaptureMode()`](/reference/androidx/camera/core/ImageCapture.Builder#setCaptureMode(int)). If unsuccessful,\n`setCaptureMode()` falls back to `CAPTURE_MODE_MINIMIZE_LATENCY`.\n\nFor more on capture modes, see the [Image capture guide](/media/camera/camerax/take-photo#set-capture-mode).\n\nHow it works\n------------\n\nZero-Shutter Lag uses a ring buffer that stores the three most recent capture\nframes. When a user presses the capture button, CameraX invokes\n[`takePicture()`](/reference/android/hardware/Camera#takePicture(android.hardware.Camera.ShutterCallback,%20android.hardware.Camera.PictureCallback,%20android.hardware.Camera.PictureCallback,%20android.hardware.Camera.PictureCallback)), and the ring buffer retrieves the captured frame with the\ntimestamp that is closest to that of the button press. CameraX then\n[reprocesses](/reference/android/hardware/camera2/CameraDevice#reprocessing) the capture session to generate an image from that frame, which\nsaves to disk in JPEG format.\n\nPrerequisites\n-------------\n\nBefore you enable Zero-Shutter Lag, use [`isZslSupported()`](/reference/androidx/camera/core/CameraInfo#isZslSupported()) to determine if\nyour device meets the following requirements:\n\n- Targets Android 6.0+ (API level 23 and higher).\n- Supports [`PRIVATE` reprocessing](/reference/android/hardware/camera2/CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_PRIVATE_REPROCESSING).\n\nFor devices that don't meet the minimum requirements, CameraX falls back to\n`CAPTURE_MODE_MINIMIZE_LATENCY`.\n\nZero-Shutter Lag is only available for [Image capture](/training/camerax/take-photo). You cannot enable it\nfor [Video capture](/training/camerax/video-capture) or with [Camera extensions](/training/camera/camera-extensions).\n\nFinally, because using flash results in greater latency, Zero-Shutter Lag does\nnot work when flash is ON or in AUTO mode. For more information about setting\nthe flash mode, see [`setFlashMode()`](/media/camera/camerax/take-photo#set-flash-mode)."]]