在 Android NDK (C) 上使用裝置('s) 快閃單位
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
在 AR 工作階段中啟用裝置的閃光燈,有助於改善可見度。
確認目前的相機設定是否支援閃光燈
並非所有相機設定都支援啟用閃光燈。在啟用閃光燈或提供使用者啟用閃光燈的選項之前,請確認閃光燈單元可用於目前的相機設定:
// 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
設定 AR 工作階段,啟用閃光燈單元:
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
設定 AR 工作階段,停用閃光燈單元:
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);
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-07-26 (世界標準時間)。
[null,null,["上次更新時間:2025-07-26 (世界標準時間)。"],[[["\u003cp\u003eUsing the device's flash during an AR session can enhance visibility in low-light environments.\u003c/p\u003e\n"],["\u003cp\u003eBefore enabling the flash, verify if the active camera configuration supports it using provided code snippets to check for flash availability.\u003c/p\u003e\n"],["\u003cp\u003eEnable the flash by configuring the AR session with \u003ccode\u003eAR_FLASH_MODE_TORCH\u003c/code\u003e and disable it using \u003ccode\u003eAR_FLASH_MODE_OFF\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eAlthough attempting to enable flash on unsupported devices won't cause errors, it also won't have any effect on the session.\u003c/p\u003e\n"]]],["To use a flash unit during an AR session, first verify if the current camera configuration supports it. Retrieve the camera's characteristics and check for `ACAMERA_FLASH_INFO_AVAILABLE_TRUE`. If supported, use `ArConfig_setFlashMode` with `AR_FLASH_MODE_TORCH` to enable it and configure the session. To disable, use `AR_FLASH_MODE_OFF` instead. Note that setting the flash mode on an unsupported camera will have no effect.\n"],null,["# Use the device's flash unit on Android NDK (C)\n\n\u003cbr /\u003e\n\nEnabling the device's flash unit during an AR session can help improve\nvisibility.\n\nCheck that the current camera configuration supports flash\n----------------------------------------------------------\n\nNot all camera configurations support enabling a flash unit.\nBefore enabling the flash or offering users the option to enable the flash,\nensure that the flash unit is available for the active camera\nconfiguration: \n\n```c\n// Get the camera ID from the current session.\nArCameraConfig* ar_camera_config = NULL;\nArCameraConfig_create(ar_session, &ar_camera_config);\nArSession_getCameraConfig(ar_session, ar_camera_config);\nchar* camera_id = NULL;\nArCameraConfig_getCameraId(ar_session, ar_camera_config, &camera_id);\nArCameraConfig_destroy(ar_camera_config);\n\n// Get the camera characteristics.\nACameraManager* camera_manager = ACameraManager_create();\nCHECK(camera_manager != NULL);\nACameraMetadata* characteristics = NULL;\ncamera_status_t status = ACameraManager_getCameraCharacteristics(camera_manager, camera_id, &characteristics);\nArString_release(camera_id);\nCHECK(status == ACAMERA_OK);\nCHECK(characteristics != NULL);\n\n// Check if flash is supported.\nACameraMetadata_const_entry entry;\nstatus = ACameraMetadata_getConstEntry(characteristics, ACAMERA_FLASH_INFO_AVAILABLE, &entry);\nCHECK(status == ACAMERA_OK);\nuint32_t is_flash_supported = false;\nif (entry.count == 1 && entry.data.u8[0] == ACAMERA_FLASH_INFO_AVAILABLE_TRUE) {\n is_flash_supported = true;\n}\n\nACameraManager_delete(camera_manager);\n```\n\nEnable the flash unit\n---------------------\n\nEnable the flash unit by configuring the AR session with\n[`AR_FLASH_MODE_TORCH`](/ar/reference/c/group/ar-config#arflashmode): \n\n```c\nArConfig* ar_config = NULL;\nArConfig_create(ar_session, &ar_config);\nArSession_getConfig(ar_session, ar_config);\nif (is_flash_supported) {\n ArConfig_setFlashMode(ar_session, ar_config, AR_FLASH_MODE_TORCH);\n}\nCHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS);\nArConfig_destroy(ar_config);\n```\n| **Note:** Configuring [`AR_FLASH_MODE_TORCH`](/ar/reference/c/group/ar-config#arflashmode) with a camera configuration that does not support a flash unit will have no effect.\n\nDisable the flash unit\n----------------------\n\nDisable the flash unit by configuring the AR session with\n[`AR_FLASH_MODE_OFF`](/ar/reference/c/group/ar-config#arflashmode): \n\n```c\nArConfig* ar_config = NULL;\nArConfig_create(ar_session, &ar_config);\nArSession_getConfig(ar_session, ar_config);\nif (is_flash_supported) {\n ArConfig_setFlashMode(ar_session, ar_config, AR_FLASH_MODE_OFF);\n}\nCHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS);\nArConfig_destroy(ar_config);\n```"]]