Reduzir a latência com o recurso "Sem atraso do obturador"
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
A partir da CameraX 1.2, o recurso "Sem atraso do obturador" está disponível como modo de captura.
Ative o recurso Sem atraso do obturador para reduzir significativamente a latência em comparação com o
modo de captura padrão, para que você nunca perca um clique.
Ativar o recurso "Sem atraso do obturador"
Para ativar o recurso Sem atraso do obturador, transmita CAPTURE_MODE_ZERO_SHOT_LAG
para
ImageCapture.Builder.setCaptureMode()
. Se falhar,
setCaptureMode()
vai voltar para CAPTURE_MODE_MINIMIZE_LATENCY
.
Para saber mais sobre os modos de captura, consulte o guia de captura de imagens.
Como funciona
O "Sem atraso do obturador" usa um buffer de anel que armazena os três frames de captura
mais recentes. Quando um usuário pressiona o botão de captura, o CameraX invoca
takePicture()
, e o buffer de anel extrai o frame capturado com o
carimbo de data/hora mais próximo do pressionamento do botão. Em seguida, o CameraX
reprocessa a sessão de captura para gerar uma imagem desse frame, que
é salva em disco no formato JPEG.
Pré-requisitos
Antes de ativar o recurso "Sem atraso do obturador", use isZslSupported()
para determinar se
o dispositivo atende aos seguintes requisitos:
- É direcionado ao Android 6.0 ou mais recente (nível 23 da API e versões mais recentes).
- Oferece suporte a reprocessamento do
PRIVATE
.
Para dispositivos que não atendem aos requisitos mínimos, o CameraX volta para
CAPTURE_MODE_MINIMIZE_LATENCY
.
Esse modo não está disponível para a captura de imagens. Não é possível ativá-lo
para captura de vídeo ou com extensões da câmera.
Por fim, como o uso do flash resulta em maior latência, o recurso "Sem atraso do obturador"
não funciona quando o flash está ativado ou no modo AUTOMÁTICO. Para saber mais sobre como definir
o modo do flash, consulte setFlashMode()
.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 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)."]]