ใช้ชุดแฟลชของอุปกรณ์ใน Android NDK (C)

การเปิดใช้แฟลชของอุปกรณ์ระหว่างเซสชัน AR จะช่วยปรับปรุงการมองเห็นได้

ตรวจสอบว่าการกำหนดค่ากล้องปัจจุบันรองรับแฟลช

การกำหนดค่ากล้องบางรายการไม่รองรับการเปิดใช้แฟลช ก่อนเปิดใช้แฟลชหรือเสนอตัวเลือกให้ผู้ใช้เปิดใช้แฟลช ให้ตรวจสอบว่าหน่วยแฟลชพร้อมใช้งานสำหรับการกำหนดค่ากล้องที่ใช้งานอยู่ โดยทำดังนี้

// 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 ด้วย 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 ด้วย 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);