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

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

  • Kapalı alanlar ve yoğun kentsel ortamlar gibi GPS doğruluğunun düşük olduğu yerlerde API, yüksek doğrulukta pozlar oluşturmak için VPS kapsamını kullanır.
  • Baş üzerinde çok az veya hiç engel bulunmayan dış mekan ortamlarında Geospatial API, yüksek doğrulukta coğrafi konumlar 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 kullanabilirsiniz (ör. yalnızca VPS kullanılabilirken "AR'ye gir" düğmesi göstermek için).

ARCore API'yi etkinleştirme

Uygulamanız, VPS kullanılabilirliğini kontrol etmek için ARCore API'yi etkinleştirmelidir.

ARCore API etkinleştirildikten sonra VPS'nin kullanılabilirliğini aşağıdakileri yapmadan kontrol edebilirsiniz:

Uygulamanızda VPS'nin kullanılabilirliğini kontrol etme

Coğrafi API, cihazın konumunu belirleyebildiği her yerde kullanılabilir. AR deneyiminiz VPS kapsamına bağlıysa Session.checkVpsAvailabilityAsync() kullanarak VpsAvailabilityFuture elde edebilirsiniz. Bu, belirli bir yatay konumdaki VPS kullanılabilirliğini kontrol eden, eşzamansız bir görevdir. VpsAvailabilityFuture'i aldıktan sonra, anket yaparak veya geri arama yoluyla sonucunu alabilirsiniz.

Anket sonucu

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

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

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

Sonuçları geri arama yoluyla alma

Future sonucunu geri çağırma işlevi aracılığıyla da alabilirsiniz. Session.checkVpsAvailabilityAsync() kullanın ve bir callback sağlayın. Bu callback, Future DONE durumuna geldikten kısa bir süre sonra ana mesaj dizisinde çağrılır.

JavaKotlin
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.
      }
    });
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

Future'ı iptal etmek için Future.cancel() simgesini kullanın. İptal denemeniz, iş parçacığı paralelliği nedeniyle aslında başarılı olmayabilir. Future.cancel(), bu deneme başarılıysa true, aksi takdirde false değerini döndürür.

Coğrafi API'yi VPS kapsama alanı olmadan kullanma

Coğrafi API, VPS kapsamı olmayan alanlarda da kullanılabilir. Başınızın üzerinde çok az engel bulunan veya hiç engel bulunmayan dış mekan ortamlarında, yüksek doğrulukta bir poz oluşturmak için GPS yeterli olabilir.

Sırada ne var?