Activer le flash de l'appareil pendant une session de RA peut améliorer la visibilité.
Vérifier que la configuration actuelle de l'appareil photo est compatible avec le flash
Toutes les configurations d'appareil photo ne permettent pas d'activer un flash. Avant d'activer le flash ou d'offrir aux utilisateurs la possibilité de l'activer, assurez-vous que le flash est disponible pour la configuration de l'appareil photo active:
// 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);
Activer le flash
Activez le flash en configurant la session RA avec 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);
Désactiver le flash
Désactivez le flash en configurant la session RA avec 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);