Metadane zdjęcia w aparacie

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()
}