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