שימוש ביחידת ה-Flash של המכשיר ב-Android SDK (Kotlin/Java)

הפעלת יחידת ה-Flash של המכשיר במהלך פעילות AR יכולה לשפר את הביצועים החשיפה.

איך בודקים אם ההגדרה הנוכחית של המצלמה תומכת בפלאש

לא כל התצורות של המצלמה תומכות בהפעלה של יחידת הפלאש. לפני הפעלת ה-Flash או מתן אפשרות למשתמשים להפעיל את הפלאש, יש לוודא שיחידת הפלאש זמינה למצלמה הפעילה תצורה:

Java

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;
}

Kotlin

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

הפעלת יחידת ה-Flash

כדי להפעיל את יחידת ה-Flash צריך להגדיר את הסשן ב-AR עם Config.FlashMode.TORCH

Java

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

Kotlin

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

השבתה של יחידת ה-Flash

כדי להשבית את יחידת ה-Flash, מגדירים סשן AR עם Config.FlashMode.OFF

Java

Config config = session.getConfig();
config.setFlashMode(Config.FlashMode.OFF);
session.configure(config);

Kotlin

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