Kamera konfigurieren

CameraConfig beschreibt die Attribute der Kamerasensor, einschließlich:

  • Kamera-ID
  • Gibt an, ob ein Tiefensensor verwendet wird (falls verfügbar)
  • Richtung, in die die Kamera zeigt: <ph type="x-smartling-placeholder">
      </ph>
    • nach vorne (Selfie)
    • nach hinten gerichtet (weltweit)
  • fps (Bilder pro Sekunde)
  • CPU-Bildabmessungen
  • GPU-Texturdimension
  • Gibt an, ob die Stereo-Multikamera des Geräts verwendet wird (falls vorhanden)

Beim Erstellen einer neuen ARCore-Sitzung verwendet ARCore setCameraConfig, um die Kamerakonfiguration festzulegen der am besten zur Liste der verfügbaren Konfigurationen passt, die von getSupportedCameraConfigs(CameraConfigFilter) Deine App kann CameraConfigFilter verwenden die verfügbaren Kamerakonfigurationen für ein bestimmtes Gerät zur Laufzeit eingrenzen, an die Anforderungen Ihrer App anpassen.

Häufige Anwendungsfälle für Filter:

  • Die Framerate für die Kameraaufnahme wird auf 30 fps begrenzt. Auf Geräten, die den 60 fps verwendet ARCore Kamerakonfigurationen, die diese Frame-Rate. Zum Herausfiltern aller Kamerakonfigurationen, die 60 fps unterstützen, Filter mit setTargetFps anwenden mit TargetFps.TARGET_FPS_30.

    Java

    // Return only camera configs that target 30 FPS camera capture frame rate.
    filter.setTargetFps(EnumSet.of(CameraConfig.TargetFps.TARGET_FPS_30));

    Kotlin

    // Return only camera configs that target 30 FPS camera capture frame rate.
    filter.targetFps = EnumSet.of(CameraConfig.TargetFps.TARGET_FPS_30)

  • Verhindern, dass ARCore den Tiefensensor verwendet Auf Geräten mit einer unterstützten Tiefensensors unterstützen, priorisiert ARCore Kamerakonfigurationen, bei denen die Tiefenmessung Sensor. Um alle Kamerakonfigurationen herauszufiltern, die den Tiefensensor verwenden, wenden Sie die setDepthSensorUsage mit DepthSensorUsage.DO_NOT_USE filtern.

    Java

    // Return only camera configs that will not use the depth sensor.
    filter.setDepthSensorUsage(EnumSet.of(CameraConfig.DepthSensorUsage.DO_NOT_USE));

    Kotlin

    // Return only camera configs that will not use the depth sensor.
    filter.depthSensorUsage = EnumSet.of(CameraConfig.DepthSensorUsage.DO_NOT_USE)

  • Alternative GPU-Texturauflösung auswählen. An unterstützten Geräten bietet, bietet ARCore möglicherweise zusätzliche GPU-Texturauflösungen. GPU-Textur mit geringerer Auflösung auswählen kann zur Verbesserung der App-Leistung beitragen, indem die GPU-Auslastung und der Arbeitsspeicher reduziert werden Bandbreitenanforderungen. Allerdings ist nicht garantiert, dass eine verbesserte Leistung in alle Fälle.

Kamerakonfigurationsfilter verwenden

Führen Sie die folgenden Schritte aus, um Ihre App zum Filtern von Kamerakonfigurationen zu aktivieren.

Java

// Create a camera config filter for the session.
CameraConfigFilter filter = new CameraConfigFilter(session);

// Return only camera configs that target 30 fps camera capture frame rate.
filter.setTargetFps(EnumSet.of(CameraConfig.TargetFps.TARGET_FPS_30));

// Return only camera configs that will not use the depth sensor.
filter.setDepthSensorUsage(EnumSet.of(CameraConfig.DepthSensorUsage.DO_NOT_USE));

// Get list of configs that match filter settings.
// In this case, this list is guaranteed to contain at least one element,
// because both TargetFps.TARGET_FPS_30 and DepthSensorUsage.DO_NOT_USE
// are supported on all ARCore supported devices.
List<CameraConfig> cameraConfigList = session.getSupportedCameraConfigs(filter);

// Use element 0 from the list of returned camera configs. This is because
// it contains the camera config that best matches the specified filter
// settings.
session.setCameraConfig(cameraConfigList.get(0));

Kotlin

// Create a camera config filter for the session.
val filter = CameraConfigFilter(session)

// Return only camera configs that target 30 fps camera capture frame rate.
filter.targetFps = EnumSet.of(CameraConfig.TargetFps.TARGET_FPS_30)

// Return only camera configs that will not use the depth sensor.
filter.depthSensorUsage = EnumSet.of(CameraConfig.DepthSensorUsage.DO_NOT_USE)

// Get list of configs that match filter settings.
// In this case, this list is guaranteed to contain at least one element,
// because both TargetFps.TARGET_FPS_30 and DepthSensorUsage.DO_NOT_USE
// are supported on all ARCore supported devices.
val cameraConfigList = session.getSupportedCameraConfigs(filter)

// Use element 0 from the list of returned camera configs. This is because
// it contains the camera config that best matches the specified filter
// settings.
session.cameraConfig = cameraConfigList[0]

Konzentrations­modus

Sie können den Fokusmodus auch in der Sitzungskonfiguration festlegen. Der Fixfokus ist im Allgemeinen besser für das Tracking geeignet und wird auf den meisten Geräten als ARCore-Standard verwendet. Der Autofokus ist für Aufnahmen, Fotos und Videoaufnahmen sowie für Objekte in der Nähe erforderlich.

Weitere Informationen finden Sie unter Config.FocusMode. .