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

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

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

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

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