Geospatial API für Android-Apps aktivieren (Kotlin/Java)

Konfigurieren Sie die Einstellungen Ihrer App so, dass sie die Geospatial API verwenden kann.

Voraussetzungen

Machen Sie sich mit den grundlegenden AR-Konzepten und der Konfiguration einer ARCore-Sitzung vertraut, bevor Sie fortfahren.

Beispielanwendung und Codelab

In diesem Video wird Schritt für Schritt gezeigt, wie Sie eine App erstellen, die raumbezogene Daten anzeigt und Inhalte mithilfe der Geospatial API an realen Orten platziert.

Dieselben Schritte finden Sie auch in der Dokumentation zum Geospatial Codelab. Informationen zum Ausführen der im Video erstellten Beispiel-App finden Sie in der ARCore Geospatial-Kurzanleitung.

Weitere Informationen zur Geospatial API finden Sie unter Einführung in die Geospatial API.

Wenn Sie noch keine Erfahrung mit der Entwicklung mit ARCore haben, finden Sie unter Erste Schritte Informationen zu Software- und Hardwareanforderungen, Voraussetzungen und anderen Informationen, die speziell auf die von Ihnen verwendeten Plattformen bezogen sind.

Ihre Entwicklungsumgebung muss die im Schnellstart beschriebenen ARCore SDK-Anforderungen erfüllen.

ARCore API aktivieren

Bevor Sie das visuelle Positionssystem (VPS) in Ihrer App verwenden können, müssen Sie zuerst die ARCore API in einem neuen oder vorhandenen Google Cloud-Projekt aktivieren. Dieser Dienst ist für das Hosten, Speichern und Auflösen geografischer Anker verantwortlich.

Die schlüssellose Autorisierung wird bevorzugt, aber auch die Autorisierung per API-Schlüssel wird unterstützt.

Erforderliche Bibliotheken zur App hinzufügen

Nachdem Sie Ihre App zum Aufrufen der ARCore API autorisiert haben, müssen Sie Bibliotheken hinzufügen, um geografische Funktionen in Ihrer App zu aktivieren.

Richten Sie in der build.gradle-Datei Ihrer App Google Play-Dienste so ein, dass die Standortbibliothek der Play-Dienste enthalten ist.

dependencies {
  // Apps must declare play-services-location version >= 16.
  // In the following line, substitute `16 (or later)` with the latest version.
  implementation 'com.google.android.gms:play-services-location:16 (or later)'
}

Geospatial-Funktionen in der Sitzungskonfiguration aktivieren

Ändern Sie vor dem Erstellen der Sitzung den GeospatialMode in Ihrer Sitzungskonfiguration in ENABLED:

Java

Config config = session.getConfig();
config.setGeospatialMode(Config.GeospatialMode.ENABLED);
session.configure(config);

Kotlin

// Enable the Geospatial API.
session.configure(session.config.apply { geospatialMode = Config.GeospatialMode.ENABLED })

Wenn der raumbezogene Modus auf ENABLED festgelegt ist, darf die Anwendung geografische Informationen vom Visual Positioning System (VPS) abrufen.

Nutzer auffordern, die Nutzung von Gerätedaten zuzulassen

In Apps, die die ARCore Geospatial API verwenden, muss der Nutzer aufgefordert werden, die Verwendung von Daten von seinem Gerät zu bestätigen und zuzulassen. Weitere Informationen finden Sie unter Anforderungen an den Datenschutz für Nutzer.

Gerätekompatibilität prüfen

Nicht alle Geräte, die ARCore unterstützen, unterstützen auch die Geospatial API, wie im Schnellstart beschrieben.

Rufen Sie Session.checkGeospatialModeSupported() auf, um zu prüfen, ob das Gerät des Nutzers auf Kompatibilität geprüft wird. Wenn dies „falsch“ zurückgibt, versuchen Sie nicht, die Sitzung unten zu konfigurieren, da sonst ein Fehler UnsupportedConfigurationException auftritt.

Nutzer bei Laufzeit um Berechtigungen zur Standortermittlung bitten

Ihre App muss zur Laufzeit Berechtigungen zur Standortermittlung anfordern.

Wenn Sie die ARCore Geospatial API verwenden möchten, müssen Sie für Ihre App die folgenden zusätzlichen Berechtigungen registrieren:

  • ACCESS_FINE_LOCATION um den Standort des Nutzers genau zu bestimmen.

  • ACCESS_COARSE_LOCATION zur ungenauen Bestimmung des Standorts des Nutzers und zur Einhaltung der Datenschutzanforderungen des Nutzers. Die Geospatial API kann jedoch nicht für den ungefähren Standort konfiguriert werden. API-Anfragen schlagen fehl, wenn der Nutzer diese Berechtigung festgelegt hat. Weitere Informationen hierzu finden Sie unten.

  • ACCESS_INTERNET, um den ARCore Geospatial API-Dienst zu kontaktieren.

<manifest ... >
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  <uses-permission android:name="android.permission.INTERNET" />
</manifest>

Auf Geräten mit Android 12 oder höher können Nutzer anfordern, dass Ihre App nur Zugriff auf ungefähre Standortinformationen hat. Damit diese Anfrage verarbeitet werden kann, muss Ihre App die Berechtigung ACCESS_COARSE_LOCATION sowie ACCESS_FINE_LOCATION haben, wie oben gezeigt. Sie müssen beide Berechtigungen zur Standortermittlung konfigurieren.

Wenn Nutzer jedoch einen groben Standort angeben, kann die Geospatial API den erforderlichen genauen Standort nicht ermitteln. Der geografische Dienst kann nicht konfiguriert werden, wenn Ihre App nur einen ungefähren Standort angibt. Deine App kann die Geospatial API nicht mit dem ungefähren Standort verwenden.

Verfügbarkeit von raumbezogenen Daten am aktuellen Standort des Geräts prüfen

Da die Geospatial API eine Kombination aus VPS und GPS zur Bestimmung einer geospatialen Pose verwendet, kann die API verwendet werden, solange das Gerät seinen Standort bestimmen kann. In Gebieten mit geringer GPS-Genauigkeit, z. B. in Innenräumen und in dicht bebauten städtischen Gebieten, nutzt die API die VPS-Abdeckung, um möglichst genaue Posen zu generieren. Unter normalen Bedingungen kann mit VPS eine Positionsgenauigkeit von etwa 5 Metern und eine Drehungsgenauigkeit von 5 Grad erwartet werden. Mit Session.checkVpsAvailabilityAsync() können Sie ermitteln, ob ein bestimmter Standort eine VPS-Abdeckung hat.

Die Geospatial API kann auch in Gebieten verwendet werden, die nicht von VPS abgedeckt sind. In Umgebungen im Freien mit wenig oder gar keinen Hindernissen kann GPS ausreichen, um eine Pose mit hoher Genauigkeit zu generieren.

Nächste Schritte