Geospatial API für die NDK-App für Android aktivieren (C)

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

Vorbereitung

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

Wenn Sie eine Beispiel-App ausführen möchten, die die beschriebenen Funktionen demonstriert finden Sie hier: ARCore Geospatial-Kurzanleitung für Android für Java. Die Beispiel-App in der Kurzanleitung ist in Java geschrieben. Codebeispiele in diesem Dokument beziehen sich auf die in C beschriebene Funktionalität.

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.

Achte darauf, dass deine Entwicklungsumgebung die ARCore SDK-Anforderungen erfüllt, z. B. wie in der Kurzanleitung für Java beschrieben.

ARCore API aktivieren

Bevor Sie das Visual Positioning System (VPS) in Ihrer App verwenden können, müssen Sie die ARCore API zu aktivieren in einem neuen oder vorhandenen Google Cloud-Projekt. Dieser Dienst ist für Geospatial-Anker zu hosten, zu speichern und aufzulösen.

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

Erforderliche Bibliotheken zur App hinzufügen

Nachdem du deine App zum Aufrufen der ARCore API autorisiert hast, musst du Bibliotheken hinzufügen zu: Geodaten-Funktionen in Ihrer App 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)'
}

Raumbezogene Funktionen in der Sitzungskonfiguration aktivieren

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

// Create a session config.
ArConfig* ar_config = NULL;
ArConfig_create(ar_session, &ar_config);

// Enable the Geospatial API.
ArConfig_setGeospatialMode(ar_session, ar_config, AR_GEOSPATIAL_MODE_ENABLED);
CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS);

// Release config resources.
ArConfig_destroy(ar_config);

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

Nutzer auffordern, die Nutzung von Gerätedaten zuzulassen

Bei Apps, die die ARCore Geospatial API verwenden, muss der Nutzer aufgefordert werden, die Nutzung von Daten auf ihrem Gerät bestätigen und zulassen. 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 in der Kurzanleitung beschrieben für Java.

Rufe ArSession_isGeospatialModeSupported() auf, um die Kompatibilität des Geräts des Nutzers zu prüfen. Wird „false“ zurückgegeben, versuchen Sie nicht, die Sitzung zu konfigurieren (siehe unten), wie Das führt dazu, dass ArStatus AR_ERROR_UNSUPPORTED_CONFIGURATION

Nutzer zur Laufzeit um Berechtigungen zur Standortermittlung bitten

Ihre App muss Berechtigungen zur Standortermittlung zur Laufzeit 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 Anforderungen an den Datenschutz. Die Geospatial API kann jedoch nicht für die Verwendung mit einem ungefähren Standort konfiguriert werden und 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-Version 12 oder höher: können Nutzer auf die Ihre App nur Zugriff hat, ungefähren Standort Informationen. 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 für die Standortermittlung konfigurieren.

Wenn Nutzer jedoch einen groben Standort angeben, kann die Geospatial API den erforderlichen genauen Standort nicht ermitteln. Der Geospatial-Dienst wird kann sich nicht selbst konfigurieren, wenn Ihre App nur eine ungefähre Position angibt. Ihre App kann die Geospatial API nicht mit einem 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 ArSession_checkVpsAvailabilityAsync() können Sie prüfen, ob ein bestimmter Ort VPS-Abdeckung hat.

Die Geospatial API kann auch in Gebieten verwendet werden, die nicht von VPS abgedeckt sind. In Außenumgebungen mit wenigen oder gar keinen Hindernissen über Kopf reicht das GPS möglicherweise aus, um eine Pose mit hoher Genauigkeit zu generieren.

Nächste Schritte