ARCore позволяет использовать ImageMetadata
для доступа к значениям ключей метаданных из результата захвата изображения с камеры. Некоторые распространенные типы метаданных изображения камеры, к которым вам может понадобиться доступ, — это фокусное расстояние, данные временной метки изображения или информация об освещении.
Модуль Camera
Android может записывать 160 или более параметров изображения для каждого снятого кадра, в зависимости от возможностей устройства. Список всех возможных ключей метаданных см. в ImageMetadata
.
Получить значение отдельного ключа метаданных
Используйте getImageMetadata()
, чтобы получить определенное значение ключа метаданных, и перехватите MetadataNotFoundException
, если оно недоступно. В следующем примере показано получение значения ключа метаданных SENSOR_EXPOSURE_TIME
.
Ява
// Obtain the SENSOR_EXPOSURE_TIME metadata value from the frame. Long getSensorExposureTime(Frame frame) { try { // Can throw NotYetAvailableException when sensors data is not yet available. ImageMetadata metadata = frame.getImageMetadata(); // Get the exposure time metadata. Throws MetadataNotFoundException if it's not available. return metadata.getLong(ImageMetadata.SENSOR_EXPOSURE_TIME); } catch (MetadataNotFoundException | NotYetAvailableException exception) { return null; } }
Котлин
// Obtain the SENSOR_EXPOSURE_TIME metadata value from the frame. fun getSensorExposureTime(frame: Frame): Long? { return runCatching { // Can throw NotYetAvailableException when sensors data is not yet available. val metadata = frame.imageMetadata // Get the exposure time metadata. Throws MetadataNotFoundException if it's not available. return metadata.getLong(ImageMetadata.SENSOR_EXPOSURE_TIME) } .getOrNull() }