Android NDK (C)에서 기기의 플래시 장치 사용

AR 세션 중에 기기의 플래시 장치를 사용 설정하면 가시성을 제공합니다

현재 카메라 구성에서 플래시를 지원하는지 확인

일부 카메라 구성에서는 플래시 장치 사용 설정이 지원되지 않습니다. 플래시를 사용 설정하거나 사용자에게 플래시 사용 옵션을 제공하기 전에 활성 카메라에 플래시 장치를 사용할 수 있는지 확인 구성:

// Get the camera ID from the current session.
ArCameraConfig* ar_camera_config = NULL;
ArSession_getCameraConfig(ar_session, ar_camera_config);
char* camera_id = NULL;
ArCameraConfig_getCameraId(ar_session, ar_camera_config, &camera_id);
ArCameraConfig_destroy(ar_camera_config);

// Get the camera characteristics.
ACameraManager* camera_manager = ACameraManager_create();
CHECK(camera_manager != NULL);
ACameraMetadata* characteristics = NULL;
camera_status_t status = ACameraManager_getCameraCharacteristics(camera_manager, camera_id, &characteristics);
ArString_release(camera_id);
CHECK(status == ACAMERA_OK);
CHECK(characteristics != NULL);

// Check if flash is supported.
ACameraMetadata_const_entry entry;
status = ACameraMetadata_getConstEntry(characteristics, ACAMERA_FLASH_INFO_AVAILABLE, &entry);
CHECK(status == ACAMERA_OK);
uint32_t is_flash_supported = false;
if (entry.count == 1 && entry.data.u8[0] == ACAMERA_FLASH_INFO_AVAILABLE_TRUE) {
  is_flash_supported = true;
}

ACameraManager_delete(camera_manager);

플래시 장치 사용

다음 명령어로 AR 세션을 구성하여 플래시 장치를 사용 설정합니다. AR_FLASH_MODE_TORCH:

ArConfig* ar_config = NULL;
ArSession_getConfig(ar_session, ar_config);
if (is_flash_supported) {
  ArConfig_setFlashMode(ar_session, ar_config, AR_FLASH_MODE_TORCH);
}
CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS);
ArConfig_destroy(ar_config);

플래시 장치 사용 중지

다음 명령어로 AR 세션을 구성하여 플래시 장치를 사용 중지합니다. AR_FLASH_MODE_OFF:

ArConfig* ar_config = NULL;
ArSession_getConfig(ar_session, ar_config);
if (is_flash_supported) {
  ArConfig_setFlashMode(ar_session, ar_config, AR_FLASH_MODE_OFF);
}
CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS);
ArConfig_destroy(ar_config);