استخدام وحدة الفلاش للجهاز على 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);