Usa la unidad de flash del dispositivo en el SDK de Android (Kotlin/Java)

Habilitar la unidad de flash del dispositivo durante una sesión de RA puede ayudar a mejorar la visibilidad.

Verifica que la configuración actual de la cámara admita el flash

No todas las configuraciones de la cámara admiten la habilitación de una unidad de flash. Antes de habilitar el flash o ofrecer a los usuarios la opción de habilitarlo, asegúrate de que la unidad de flash esté disponible para la configuración de la cámara activa:

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

Habilita la unidad de flash

Para habilitar la unidad de flash, configura la sesión de RA con 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 })
}

Inhabilita la unidad de flash

Para inhabilitar la unidad de flash, configura la sesión de RA con Config.FlashMode.OFF:

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