Cihazın flaş birimini Android NDK (C) üzerinde kullanın

Bir AR oturumu sırasında cihazın flaş birimini etkinleştirmek, görünürlüğü iyileştirmeye yardımcı olabilir.

Mevcut kamera yapılandırmasının flaşları destekleyip desteklemediğini kontrol etme

Bazı kamera yapılandırmaları flaş birimini etkinleştirmeyi desteklemez. Flaşın etkinleştirilmesinden veya kullanıcılara flaşı etkinleştirme seçeneği sunulmasından önce, flaş birimin etkin kamera yapılandırmasında kullanılabildiğinden emin olun:

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

Flaş birimini etkinleştirme

AR oturumunu AR_FLASH_MODE_TORCH ile yapılandırarak flaş birimini etkinleştirin:

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

Flaş birimini devre dışı bırakma

AR oturumunu AR_FLASH_MODE_OFF ile yapılandırarak flaş birimini devre dışı bırakın:

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