Page Summary
-
Enabling the device's flash unit during an AR session can improve visibility.
-
Not all camera configurations support enabling a flash unit, so check for flash support first.
-
Enable the flash unit by configuring the AR session with
AR_FLASH_MODE_TORCH. -
Disable the flash unit by configuring the AR session with
AR_FLASH_MODE_OFF.
Enabling the device's flash unit during an AR session can help improve visibility.
Check that the current camera configuration supports flash
Not all camera configurations support enabling a flash unit. Before enabling the flash or offering users the option to enable the flash, ensure that the flash unit is available for the active camera configuration:
// Get the camera ID from the current session. ArCameraConfig * ar_camera_config = NULL ; ArCameraConfig_create ( ar_session , & ar_camera_config ); 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 );
Enable the flash unit
Enable the flash unit by configuring the AR session with AR_FLASH_MODE_TORCH
:
ArConfig * ar_config = NULL ; ArConfig_create ( ar_session , & ar_config ); 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 );
Disable the flash unit
Disable the flash unit by configuring the AR session with AR_FLASH_MODE_OFF
:
ArConfig * ar_config = NULL ; ArConfig_create ( ar_session , & ar_config ); 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 );

