Android SDK でデバイスのフラッシュ ユニットを使用する(Kotlin/Java)

AR セッション中にデバイスのフラッシュ ユニットを有効にすると、視認性が向上します。

現在のカメラの設定がフラッシュに対応していることを確認する

カメラの構成によっては、フラッシュ ユニットの有効化がサポートされていない場合があります。フラッシュを有効にするか、フラッシュを有効にするオプションをユーザーに提供する前に、アクティブなカメラ構成でフラッシュ ユニットを使用できることを確認します。

JavaKotlin
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

フラッシュを有効にする

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

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

フラッシュを無効にする

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

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