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

フラッシュを有効にする

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

フラッシュ ユニットを無効にする

Config.FlashMode.OFF を使用して AR セッションを構成して、フラッシュ ユニットを無効にします。

Java

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

Kotlin

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