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

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

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

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

ARCore API चालू करना

आपके ऐप्लिकेशन में ARCore API चालू करना ज़रूरी है, ताकि यह देखा जा सके कि VPS की सुविधा उपलब्ध है या नहीं.

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

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

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

नतीजे पर पोल करें

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

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

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

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

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

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

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 रद्द करें

Future को रद्द करने के लिए, Future.cancel() का इस्तेमाल करें. थ्रेड पैरललिज़्म की वजह से, हो सकता है कि रद्द करने की आपकी कोशिश कामयाब न हुई हो. अगर ऐसा नहीं किया जाता है, तो Future.cancel() true दिखाता है. अगर ऐसा नहीं होता है, तो false दिखाता है.

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

भौगोलिक एपीआई का इस्तेमाल उन इलाकों में भी किया जा सकता है जहां वीपीएस कवरेज नहीं है. अगर खुली जगह में हवाई जहाज़ में कोई रुकावट नहीं आती है या आस-पास कोई रुकावट नहीं होती है, तो बेहतर पोज़ बनाने के लिए जीपीएस काफ़ी मददगार हो सकता है.

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