Cihazın mevcut konumunda VPS kullanılabilirliğini kontrol edin

Geospatial API, yüksek doğruluklu Coğrafi pozlar oluşturmak için VPS ve GPS verilerinin bir kombinasyonunu kullanır. API, cihazın konumunu belirleyebildiği her yerde kullanılabilir:

  • API, kapalı alanlar ve yoğun kentsel ortamlar gibi GPS doğruluğunun düşük olduğu alanlarda yüksek isabetli pozlar oluşturmak için VPS'nin kapsamını kullanır.
  • Geospatial API, yukarıdan engellerin çok az olduğu veya hiç olmadığı dış ortamlarda, yüksek doğrulukla Coğrafi pozisyonlar oluşturmak için mevcut GPS konum verilerini kullanabilir.

AR oturumu başlamadan önce belirli bir yatay konumda VPS'nin kullanılabilirliğini belirleyebilir ve daha spesifik deneyimler oluşturmak için (örneğin, yalnızca VPS kullanılabilir olduğunda "AR'ye Gir" düğmesi sunmak için) kullanabilirsiniz.

ARCore API'yi etkinleştir

VPS'nin kullanılabilirliğini kontrol etmek için uygulamanız ARCore API'sini etkinleştirmelidir.

ARCore API etkinleştirildikten sonra, VPS kullanılabilirliğini aşağıdakileri olmadan kontrol edebilirsiniz:

Uygulamanızda VPS kullanılabilirliğini kontrol edin

Geospatial API, cihazın konumunu belirleyebildiği her yerde kullanılabilir. Artırılmış gerçeklik deneyiminiz VPS kapsamına dayanıyorsa Session.checkVpsAvailabilityAsync() aracını kullanarak bir VpsAvailabilityFuture elde edebilirsiniz. Bu, belirli bir yatay konumdaki VPS kullanılabilirliğini kontrol eden eşzamansız bir görevdir. VpsAvailabilityFuture oluşturduktan sonra anketin sonucunu yoklama veya geri çağırma yoluyla elde edebilirsiniz.

Sonucu anketle

Future durumunu almak için Future.getState() kodunu kullanın. Üç farklı durum vardır:

Görev tamamlanana kadar Future.getState() simgesini kontrol etmeye devam edebilirsiniz.

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, ...")
    }
  }
}

Geri arama yoluyla sonucu elde etme

Future işleminin sonucunu geri çağırma yoluyla da alabilirsiniz. Session.checkVpsAvailabilityAsync() kullanın ve bir callback sağlayın. Future öğesinin DONE durumundan kısa bir süre sonra bu callback, ana iş parçacığında çağrılacak.

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 aboneliğini iptal et

Future aboneliğini iptal etmeyi denemek için Future.cancel() numarasını kullanın. İleti dizisi benzerliği nedeniyle, iptal girişiminizin gerçekten başarılı olmaması mümkündür. Future.cancel(), bu deneme başarılıysa true değerini, aksi takdirde false değerini döndürür.

Geospatial API'yi VPS kapsamı olmadan kullanma

Geospatial API, VPS kapsamında olmayan bölgelerde de kullanılabilir. Yukarıdan engellerin çok az olduğu veya hiç olmadığı açık ortamlarda GPS, yüksek doğrulukta poz oluşturmak için yeterli olabilir.

Sırada ne var?