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

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

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

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

ARCore API चालू करें

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

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

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

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

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

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