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

הפעלת יחידת הפלאש במכשיר במהלך סשן AR יכולה לשפר את הניראות.

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

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

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 צריך להגדיר את הסשן ב-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 })