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

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

  • İç mekanlar ve yoğun kentsel ortamlar gibi GPS doğruluğu düşük olan alanlarda API, yüksek doğruluklu pozlar oluşturmak için VPS kapsama alanını kullanır.
  • Baş üstü engellerin az olduğu veya hiç olmadığı dış mekan ortamlarında, Geospatial API yüksek doğrulukla Coğrafi duruşlar oluşturmak için mevcut GPS konum verilerini kullanabilir.

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

ARCore API'yi etkinleştirme

VPS'nin kullanılabilirliğini kontrol etmek için uygulamanızda ARCore API'nin etkinleştirilmesi gerekir.

ARCore API etkinleştirildikten sonra VPS'lerin kullanılabilirliğini aşağıdakiler olmadan kontrol edebilirsiniz:

Uygulamanızdaki VPS'lerin kullanılabilirliğini kontrol edin

Geospatial API, cihazın konumunu belirleyebildiği her yerde kullanılabilir. Artırılmış gerçeklik (AR) deneyiminiz VPS kapsamına bağlıysa VPS'nin belirli bir yatay konumdaki kullanılabilirliğini kontrol eden eşzamansız bir görev olan VpsAvailabilityFuture için Session.checkVpsAvailabilityAsync()'ı kullanabilirsiniz. VpsAvailabilityFuture edinildikten sonra anket veya geri arama yoluyla sonucu alabilirsiniz.

Sonuç anketi

Future durumunu almak için Future.getState() işlevini kullanın. Üç farklı eyalet vardır:

Görev tamamlanana kadar Future.getState() aracını 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 çağırma ile sonucu alma

Future sonucunu öğrenmek için geri arama özelliğini de kullanabilirsiniz. Session.checkVpsAvailabilityAsync() kullanın ve bir callback sağlayın. Bu callback, Future DONE durumuna sahip olduktan kısa bir süre sonra Ana iş parçacığında çağrılır.

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() öğesini kullanın. İş parçacığındaki paralellik nedeniyle, iptal denemeniz gerçekten başarılı olmayabilir. Future.cancel(), bu deneme başarılı olduysa true, aksi takdirde false değerini döndürür.

Geospatial API'yi VPS kapsamı olmadan kullanma

Geospatial API, VPS kapsama alanı olmayan bölgelerde de kullanılabilir. Baş üstü engellerin az olduğu veya hiç olmadığı açık hava ortamlarında GPS, yüksek doğrulukta bir poz oluşturmak için yeterli olabilir.

Sırada ne var?