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

Für die Geospatial API wird eine Kombination aus VPS- und GPS-Daten verwendet, um präzise Geospatial-Posen zu erstellen. Die API kann an jedem Ort verwendet werden, an dem das Gerät seinen Standort ermitteln kann:

  • In Gebieten mit geringer GPS-Genauigkeit, z. B. in Innenräumen und dichten städtischen Umgebungen, wird die API auf die VPS-Abdeckung angewiesen, um hochpräzise Posen zu generieren.
  • In Umgebungen im Freien mit wenig oder gar keinen Hindernissen kann die Geospatial API die verfügbaren GPS-Standortdaten verwenden, um raumbezogene Posen mit hoher Genauigkeit zu erstellen.

Sie können die VPS-Verfügbarkeit an einer bestimmten horizontalen Position vor Beginn der AR-Sitzung ermitteln und damit spezifischere Erlebnisse schaffen, z. B. um eine „Enter AR“ zu präsentieren. wenn VPS verfügbar ist.

ARCore API aktivieren

In Ihrer App muss die ARCore API aktiviert sein, um die VPS-Verfügbarkeit zu prüfen.

Sobald die ARCore API aktiviert ist, können Sie die VPS-Verfügbarkeit ohne Folgendes prüfen:

VPS-Verfügbarkeit in deiner App prüfen

Die Geospatial API kann überall dort verwendet werden, wo der Standort des Geräts ermittelt werden kann. Wenn die AR-Abdeckung von der VPS-Abdeckung abhängt, können Sie mit Session.checkVpsAvailabilityAsync() eine VpsAvailabilityFuture abrufen. Das ist eine asynchrone Aufgabe, die die VPS-Verfügbarkeit an einer bestimmten horizontalen Position prüft. Sobald Sie das VpsAvailabilityFuture haben, können Sie das Ergebnis durch Abfragen oder über einen Callback abrufen.

Ergebnis abfragen

Verwenden Sie Future.getState(), um den Status von Future abzurufen. Es gibt drei verschiedene Status:

Sie können weiterhin in Future.getState() nachsehen, bis die Aufgabe abgeschlossen ist.

Java

// Obtain a VpsAvailabilityFuture and store it somewhere.
VpsAvailabilityFuture future = session.checkVpsAvailabilityAsync(latitude, longitude, null);

// Poll VpsAvailabilityFuture later, for example, in a render loop.
if (future.getState() == FutureState.DONE) {
  switch (future.getResult()) {
    case AVAILABLE:
      // VPS is available at this location.
      break;
    case UNAVAILABLE:
      // VPS is unavailable at this location.
      break;
    case ERROR_NETWORK_CONNECTION:
      // The external service could not be reached due to a network connection error.
      break;

      // Handle other error states, e.g. ERROR_RESOURCE_EXHAUSTED, ERROR_INTERNAL, ...
  }
}

Kotlin

// Obtain a VpsAvailabilityFuture and store it somewhere.
val future = session.checkVpsAvailabilityAsync(latitude, longitude, null)

// Poll VpsAvailabilityFuture later, for example, in a render loop.
if (future.state == FutureState.DONE) {
  when (future.result) {
    VpsAvailability.AVAILABLE -> {
      // VPS is available at this location.
    }
    VpsAvailability.UNAVAILABLE -> {
      // VPS is unavailable at this location.
    }
    VpsAvailability.ERROR_NETWORK_CONNECTION -> {
      // The external service could not be reached due to a network connection error.
    }
    else -> {
      TODO("Handle other error states, e.g. ERROR_RESOURCE_EXHAUSTED, ERROR_INTERNAL, ...")
    }
  }
}

Ergebnis über einen Rückruf erhalten

Sie können das Ergebnis eines Future auch über einen Callback erhalten. Verwenden Sie Session.checkVpsAvailabilityAsync() und geben Sie eine callback an. callback wird im Hauptthread aufgerufen, kurz nachdem Future den Status DONE hat.

Java

session.checkVpsAvailabilityAsync(
    latitude,
    longitude,
    result -> {
      // Callback is called on the Main thread.
      switch (result) {
          // Handle the VpsAvailability result as shown above.
          // For example, show UI that enables your AR view.
      }
    });

Kotlin

session.checkVpsAvailabilityAsync(latitude, longitude) { result ->
  // Callback is called on the Main thread.

  // Handle the VpsAvailability result as shown above.
  // For example, show UI that enables your AR view.
  TODO("Handle VpsAvailability " + result)
}

Future kündigen

Versuchen Sie mit Future.cancel(), Future zu stornieren. Aufgrund der Thread-Parallelität ist es möglich, dass Ihr Abbruchversuch nicht erfolgreich ist. Future.cancel() gibt true zurück, wenn dieser Versuch erfolgreich war, andernfalls false.

Geospatial API ohne VPS-Abdeckung verwenden

Die Geospatial API kann auch in Gebieten eingesetzt werden, die keine VPS-Abdeckung haben. In Umgebungen mit wenig oder gar keinen Hindernissen im Freien kann GPS ausreichen, um eine Pose mit hoher Genauigkeit zu generieren.

Nächste Schritte