Habilitar la unidad de flash del dispositivo durante una sesión de RA puede ayudar a mejorar la visibilidad.
Verifica que la configuración actual de la cámara admita el flash
No todas las configuraciones de la cámara admiten la habilitación de una unidad de flash. Antes de habilitar el flash o ofrecer a los usuarios la opción de habilitarlo, asegúrate de que la unidad de flash esté disponible para la configuración de la cámara activa:
// 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);
Habilita la unidad de flash
Para habilitar la unidad de flash, configura la sesión de RA con 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);
Inhabilita la unidad de flash
Para inhabilitar la unidad de flash, configura la sesión de RA con 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);