डिवाइस की मौजूदा जगह पर VPS की उपलब्धता देखें

Geospatial API, ज़्यादा सटीक भौगोलिक पोज़ जनरेट करने के लिए, VPS और जीपीएस डेटा के कॉम्बिनेशन का इस्तेमाल करता है. इस एपीआई का इस्तेमाल ऐसी किसी भी जगह पर किया जा सकता है जहां डिवाइस की जगह की जानकारी मिल सकती है:

  • जिन जगहों पर जीपीएस की सटीक जानकारी नहीं मिलती है, जैसे कि इनडोर स्पेस और शहर के घने इलाके, वहां एपीआई वीपीएस कवरेज का इस्तेमाल करके, सटीक पोज़ जनरेट करेगा.
  • अगर बाहरी जगहों पर, ऊपर से आने वाली रुकावटें कम या बिलकुल नहीं हैं, तो Geospatial API, जीपीएस की जगह की जानकारी के उपलब्ध डेटा का इस्तेमाल करके, ज़्यादा सटीक भौगोलिक पोज़ जनरेट कर सकता है.

एआर सेशन शुरू होने से पहले, किसी हॉरिज़ॉन्टल पोज़िशन पर वीपीएस की उपलब्धता का पता लगाया जा सकता है. साथ ही, इसका इस्तेमाल करके ज़्यादा बेहतर अनुभव दिए जा सकते हैं. उदाहरण के लिए, सिर्फ़ वीपीएस उपलब्ध होने पर "एआर में जाएं" बटन दिखाना.

ARCore API चालू करना

वीपीएस की उपलब्धता देखने के लिए, आपके ऐप्लिकेशन में ARCore API चालू होना चाहिए.

ARCore API चालू होने के बाद, वीपीएस की उपलब्धता की जांच इनके बिना की जा सकती है:

अपने ऐप्लिकेशन में वीपीएस की उपलब्धता देखना

Geospatial API का इस्तेमाल ऐसी किसी भी जगह पर किया जा सकता है जहां डिवाइस की जगह की जानकारी मिल सकती है. अगर एआर अनुभव, वीपीएस कवरेज पर निर्भर करता है, तो VpsAvailabilityFuture पाने के लिए Session.checkVpsAvailabilityAsync() का इस्तेमाल किया जा सकता है. यह एक असाइनमेंट है, जो किसी दी गई हॉरिज़ॉन्टल पोज़िशन पर वीपीएस की उपलब्धता की जांच करता है. VpsAvailabilityFuture मिलने के बाद, पॉलिंग या कॉलबैक की मदद से इसका नतीजा पाया जा सकता है.

नतीजे के बारे में पोल करना

Future की स्थिति जानने के लिए, Future.getState() का इस्तेमाल करें. तीन अलग-अलग स्थितियां होती हैं:

  • PENDING: कार्रवाई अभी पूरी नहीं हुई है, इसलिए नतीजे की जानकारी नहीं है.
  • CANCELLED: Future.cancel() ने कार्रवाई रद्द कर दी है. रजिस्टर किया गया कोई भी कॉलबैक कभी नहीं किया जाएगा.
  • DONE: कार्रवाई पूरी हो गई है. नतीजा पाने के लिए, VpsAvailabilityFuture.getResult() का इस्तेमाल करें.

टास्क पूरा होने तक, Future.getState() को देखते रहें.

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

कॉलबैक की मदद से नतीजा पाना

कॉलबैक की मदद से भी Future का नतीजा पाया जा सकता है. Session.checkVpsAvailabilityAsync() का इस्तेमाल करें और callback डालें. Future के स्टेटस के DONE होने के तुरंत बाद, इस callback को मुख्य थ्रेड पर कॉल किया जाएगा.

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 को रद्द करने के लिए, Future.cancel() का इस्तेमाल करें. थ्रेड के पैरलल प्रोसेस होने की वजह से, हो सकता है कि आपका रद्द करने का अनुरोध पूरा न हो पाए. अगर यह कोशिश पूरी हो जाती है, तो Future.cancel() true दिखाता है. अगर ऐसा नहीं होता है, तो false दिखाता है.

VPS कवरेज के बिना Geospatial API का इस्तेमाल करना

जियोस्पेशल एपीआई का इस्तेमाल उन इलाकों में भी किया जा सकता है जहां वीपीएस की सुविधा उपलब्ध नहीं है. अगर आप किसी ऐसे आउटडोर लोकेशन पर हैं जहां ऊपर से कोई रुकावट नहीं है या बहुत कम रुकावटें हैं, तो जीपीएस की मदद से, पोज़ को सटीक तरीके से जनरेट किया जा सकता है.

आगे क्या करना है