Réduire la latence avec le déclenchement instantané

À partir de la version CameraX 1.2, le mode de déclenchement instantané est disponible comme mode de capture. Activez le déclenchement instantané pour réduire considérablement la latence par rapport au mode de capture par défaut, afin de ne jamais rater la photo.

Activer le déclenchement instantané

Pour activer le déclenchement instantané, transmettez CAPTURE_MODE_ZERO_SHOT_LAG à ImageCapture.Builder.setCaptureMode(). Si l'opération échoue, setCaptureMode() utilise CAPTURE_MODE_MINIMIZE_LATENCY.

Pour en savoir plus sur les modes de capture, consultez le guide de capture d'images.

Fonctionnement

Ce mode utilise un tampon circulaire qui stocke les trois frames de capture les plus récents. Lorsqu'un utilisateur appuie sur le bouton de capture, CameraX appelle takePicture() et le tampon circulaire récupère le frame capturé avec le code temporel le plus proche de celui où le bouton a été enfoncé. CameraX traite à nouveau la session de capture pour générer une image à partir de ce frame, qui est enregistrée au format JPEG.

Prérequis

Avant d'activer le déclenchement instantané, utilisez isZslSupported() pour déterminer si votre appareil répond aux exigences suivantes:

  • Ciblage d'Android 6.0 et versions ultérieures (niveau d'API 23 ou plus)
  • Prise en charge du retraitement PRIVATE

Pour les appareils qui ne remplissent pas les conditions minimales requises, CameraX utilise CAPTURE_MODE_MINIMIZE_LATENCY.

Le déclenchement instantané n'est disponible que pour la capture d'image. Vous ne pouvez pas l'activer pour la capture vidéo ni avec les extensions pour l'appareil photo.

Enfin, comme l'utilisation du flash entraîne une latence accrue, le déclenchement instantané ne fonctionne pas lorsque le flash est activé ou en mode AUTO. Pour savoir comment définir le mode flash, consultez setFlashMode().