Reduzir a latência com o recurso "Sem atraso do obturador"

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