Android NDK (C) पर डिवाइस की फ़्लैश यूनिट का इस्तेमाल करें

एआर सेशन के दौरान डिवाइस की फ़्लैश यूनिट चालू करने से, ऑब्जेक्ट को बेहतर तरीके से देखा जा सकता है.

देखें कि कैमरे के मौजूदा कॉन्फ़िगरेशन में फ़्लैश की सुविधा काम करती है या नहीं

सभी कैमरा कॉन्फ़िगरेशन में, फ़्लैश यूनिट चालू करने की सुविधा काम नहीं करती. फ़्लैश चालू करने या उपयोगकर्ताओं को फ़्लैश चालू करने का विकल्प देने से पहले, यह पक्का करें कि चालू कैमरा कॉन्फ़िगरेशन के लिए फ़्लैश यूनिट उपलब्ध हो:

// 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);

फ़्लैश यूनिट चालू करना

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);

फ़्लैश यूनिट बंद करना

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);