Riduci la latenza con il ritardo dell'otturatore zero

A partire da CameraX 1.2, il ritardo dell'otturatore zero è disponibile come modalità di acquisizione. Attiva la modalità Zero-Shutter Lag per ridurre notevolmente la latenza rispetto alla modalità di acquisizione predefinita, in modo da non perdere mai lo scatto.

Attiva il ritardo dello scatto zero

Per attivare lo zero shutter lag, passa CAPTURE_MODE_ZERO_SHOT_LAG a ImageCapture.Builder.setCaptureMode(). In caso di esito negativo, setCaptureMode() torna a CAPTURE_MODE_MINIMIZE_LATENCY.

Per saperne di più sulle modalità di acquisizione, consulta la guida all'acquisizione di immagini.

Come funziona

La funzionalità Zero-Shutter Lag utilizza un buffer circolare che memorizza i tre frame di acquisizione più recenti. Quando un utente preme il pulsante di acquisizione, CameraX invoca takePicture() e l'anello buffer recupera il frame acquisito con il timestamp più vicino a quello della pressione del pulsante. CameraX quindi rielabora la sessione di acquisizione per generare un'immagine da quel fotogramma, che viene salvata sul disco in formato JPEG.

Prerequisiti

Prima di attivare la funzionalità Zero-Shutter Lag, utilizza isZslSupported() per determinare se il tuo dispositivo soddisfa i seguenti requisiti:

  • Ha come target Android 6.0 e versioni successive (livello API 23 e versioni successive).
  • Supporta il riprocessamento di PRIVATE.

Per i dispositivi che non soddisfano i requisiti minimi, CameraX ricorre a CAPTURE_MODE_MINIMIZE_LATENCY.

Il tempo di esposizione zero è disponibile solo per la acquisizione di immagini. Non puoi attivarla per l'acquisizione video o con le estensioni della fotocamera.

Infine, poiché l'utilizzo del flash comporta una maggiore latenza, la funzionalità Zero-Shutter Lag non funziona quando il flash è attivo o in modalità AUTO. Per ulteriori informazioni sull'impostazione della modalità flash, vedi setFlashMode().