ARCore pozwala używać polecenia ImageMetadata
, aby uzyskiwać dostęp do par klucz-wartość metadanych z wyniku zrobienia zdjęcia aparatem. Do typowych rodzajów metadanych zdjęć z aparatu, do których możesz mieć dostęp, należą obiekty w ogniskowej, dane z sygnaturami czasowymi obrazu i informacje o oświetleniu.
W zależności od możliwości urządzenia moduł Camera
Androida może rejestrować do 160 parametrów obrazu dla każdej zarejestrowanej klatki. Listę wszystkich możliwych kluczy metadanych znajdziesz tutaj: ImageMetadata
.
Pobieranie wartości pojedynczego klucza metadanych
Użyj funkcji getImageMetadata()
, aby uzyskać określoną wartość klucza metadanych i przechwyć MetadataNotFoundException
, jeśli jest niedostępny. Przykład poniżej pokazuje, jak uzyskać wartość klucza metadanych SENSOR_EXPOSURE_TIME
.
Java
// 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; } }
Kotlin
// 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() }