Utiliser le bloc flash de l'appareil avec le SDK Android (Kotlin/Java)

Activer le flash de l'appareil pendant une session de RA peut améliorer la visibilité.

Vérifier que la configuration actuelle de l'appareil photo est compatible avec le flash

Toutes les configurations d'appareil photo ne permettent pas d'activer un flash. Avant d'activer le flash ou d'offrir aux utilisateurs la possibilité de l'activer, assurez-vous que le flash est disponible pour la configuration de l'appareil photo active:

boolean flashAvailable;
try {
  CameraManager cameraManager =
      (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);

  CameraCharacteristics characteristics =
      cameraManager.getCameraCharacteristics(session.getCameraConfig().getCameraId());
  flashAvailable = characteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);
} catch (Exception e) {
  flashAvailable = false;
}
val flashAvailable =
  runCatching {
      val cameraManager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
      val characteristics = cameraManager.getCameraCharacteristics(session.cameraConfig.cameraId)
      characteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE)
    }
    .getOrNull() ?: false

Activer le flash

Activez le flash en configurant la session RA avec Config.FlashMode.TORCH:

if (flashAvailable) {
  Config config = session.getConfig();
  config.setFlashMode(Config.FlashMode.TORCH);
  session.configure(config);
}
if (flashAvailable) {
  session.configure(session.config.apply { flashMode = Config.FlashMode.TORCH })
}

Désactiver le flash

Désactivez le flash en configurant la session RA avec Config.FlashMode.OFF:

Config config = session.getConfig();
config.setFlashMode(Config.FlashMode.OFF);
session.configure(config);
session.configure(session.config.apply { flashMode = Config.FlashMode.OFF })