नए ARCore भौगोलिक एपीआई का इस्तेमाल करके, ऑगमेंटेड रिएलिटी (एआर) वाला ऐप्लिकेशन बनाएं

1. खास जानकारी

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

आप क्या बनाएंगे

इस कोडलैब में, ARCore Geospatial API का इस्तेमाल किया गया है. इससे आपको पता चलेगा कि एआर (ऑगमेंटेड रिएलिटी) के आपके अनुभव को बेहतर बनाने के लिए, Geospatial API से कौनसी जानकारी मिल सकती है. साथ ही, यह भी पता चलेगा कि इस डेटा का इस्तेमाल करके, एआर की मदद से आसानी से रास्ता ढूंढे जा सकते हैं.

आप इन चीज़ों के बारे में जानेंगे

  • Geospatial API का इस्तेमाल करने वाले ARCore प्रोजेक्ट को सेट अप करने का तरीका.
  • Geospatial API से भौगोलिक डेटा का अनुरोध करने और उसे Google Maps का इस्तेमाल करके दिखाने का तरीका.
  • किसी असल जगह से जुड़े ऐंकर को दिखाने का तरीका.

आपको इनकी ज़रूरत होगी

  • ऐसे ARCore Android डिवाइस को यूएसबी डीबग करने की सुविधा की मदद से कॉन्फ़िगर किया गया है जिसे यूएसबी केबल की मदद से आपकी डेवलपमेंट मशीन से कनेक्ट किया गया है.
  • Android Studio को इंस्टॉल और कॉन्फ़िगर किया गया है, ताकि Android ऐप्लिकेशन बनाए जा सकें.
  • Android डेवलपमेंट डिवाइस में इंस्टॉल किया गया Google Play Services for AR 1.31 या इसके बाद का वर्शन.

2. डेवलपमेंट एनवायरमेंट सेट अप करें

Android Studio सेट अप करना

Geospatial API का इस्तेमाल शुरू करने के लिए, हमने एक स्टार्टर प्रोजेक्ट दिया था. इसमें Google Maps SDK के साथ इंटिग्रेट किए गए ARCore प्रोजेक्ट की बुनियादी बातें बताई गई हैं. इससे आपको Geospatial API का इस्तेमाल आसानी से करने में मदद मिलती है.

  1. Android Studio शुरू करें और VCS से कोई प्रोजेक्ट इंपोर्ट करें.
    • अगर आपका कोई प्रोजेक्ट पहले से खुला है, तो फ़ाइल > नया > वर्शन कंट्रोल से प्रोजेक्ट... का इस्तेमाल करें.
    • अगर आपको Android Studio में आपका स्वागत है विंडो दिखती है, तो VCS से पाएं का इस्तेमाल करें. VCS स्थान से पाएं
  2. Git चुनें और प्रोजेक्ट इंपोर्ट करने के लिए, यूआरएल https://github.com/google-ar/codelab-geospatial.git का इस्तेमाल करें.

Google Cloud प्रोजेक्ट सेट अप करें

Geospatial API, Street View की तस्वीरों को डिवाइस के मैग्नेटोमीटर और कैमरा सेंसर की जानकारी के साथ मिलाकर इस्तेमाल करता है, ताकि स्क्रीन की दिशा को बेहतर बनाया जा सके. इस सेवा का इस्तेमाल करने के लिए, आपको Google Cloud प्रोजेक्ट सेट अप करना होगा.

  1. Google Cloud Console में प्रोजेक्ट बनाएं:
  2. आवश्यक API सक्षम करें:
    • साइडबार में जाकर, एपीआई और सेवाएं को चुनें. इसके बाद, लाइब्रेरी चुनें.
    • ARCore API खोजें.
    • चालू करें पर क्लिक करें.
    • लाइब्रेरी पर वापस जाएं.
    • Android के लिए Maps SDK टूल खोजें.
    • चालू करें पर क्लिक करें.
  3. API कुंजी क्रेडेंशियल बनाएं:
    • एपीआई और सेवाएं में जाकर, क्रेडेंशियल चुनें.
    • सबसे ऊपर मौजूद बार में, क्रेडेंशियल बनाएं पर क्लिक करें. इसके बाद, एपीआई पासकोड चुनें.
    • अगले चरण के लिए, आपको जिस कुंजी की ज़रूरत है उसे नोट कर लें. अगर आपको क्रेडेंशियल वापस पाना है, तो क्रेडेंशियल पेज पर वापस जाएं.

यह तरीका अपनाकर, आपने एपीआई पासकोड की मदद से अनुमति देने वाला Google Cloud प्रोजेक्ट बनाया है और आप Geospatial API का इस्तेमाल करने के लिए तैयार हैं.

एपीआई पासकोड को Android Studio प्रोजेक्ट के साथ इंटिग्रेट करें

Google Cloud से एपीआई पासकोड को अपने प्रोजेक्ट से जोड़ने के लिए, वह प्रोजेक्ट खोलें जिसे आपने Android Studio में बनाया है और एपीआई पासकोड में बदलाव करें:

  1. ऐप्लिकेशन > src > AndroidManifest.xml खोलें.
  2. ये meta-data एंट्री ढूंढें:
    <meta-data
        android:name="com.google.android.ar.API_KEY"
        android:value="PLACEHOLDER_API_KEY" />
    
    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="PLACEHOLDER_API_KEY" />
    
  3. PLACEHOLDER_API_KEY को उस एपीआई पासकोड से बदलें जिसे आपने अपने Google Cloud प्रोजेक्ट में बनाया है.

com.google.android.ar.API_KEY में सेव की गई वैल्यू से, इस ऐप्लिकेशन को भौगोलिक एपीआई का इस्तेमाल करने की अनुमति मिलती है. साथ ही, com.google.android.geo.API_KEY में सेव की गई वैल्यू से इस ऐप्लिकेशन को Google Maps SDK टूल का इस्तेमाल करने की अनुमति मिलती है.

अपने प्रोजेक्ट की पुष्टि करें

पक्का करें कि आपका प्रोजेक्ट तैयार है. Android Studio में अपना ऐप्लिकेशन चलाएं. आपको स्क्रीन पर नीचे काम कर रहा मैप के साथ-साथ कैमरा व्यू भी दिखेगा.

बॉयलरप्लेट प्रोजेक्ट

3. उपयोगकर्ता की पोज़िशन तय करना

इस चरण में, भौगोलिक एपीआई का इस्तेमाल शुरू करने के लिए, सैंपल प्रोजेक्ट में कोड जोड़ा जाएगा.

Geospatial API का इस्तेमाल करने के लिए, ARCore सेशन को कॉन्फ़िगर करें

भौगोलिक डेटा पाने के लिए, आपको भौगोलिक डेटा एपीआई चालू करना होगा. HelloGeoActivity.kt के configureSession फ़ंक्शन में बदलाव करके, अपने सेशन कॉन्फ़िगरेशन में GeospatialMode को ENABLED में बदलें:

fun configureSession(session: Session) {
  session.configure(
    session.config.apply {
      // Enable Geospatial Mode.
      geospatialMode = Config.GeospatialMode.ENABLED
    }
  )
}

हालांकि, भौगोलिक मोड ENABLED पर है, लेकिन ऐप्लिकेशन में भौगोलिक जानकारी मिल सकती है.

Geospatial API से डेटा पाने का अनुरोध करना

HelloGeoRenderer.kt में, नीचे दी गई लाइन ढूंढें:

// TODO: Obtain Geospatial information and display it on the map.

इसके नीचे, देखें कि Earth ऑब्जेक्ट इस्तेमाल के लिए उपलब्ध है या नहीं. उसके बाद, उसके पास trackingState TrackingState.ENABLED होते हैं.

val earth = session.earth
if (earth?.trackingState == TrackingState.TRACKING) {
  // TODO: the Earth object may be used here.
}

TODO के नीचे, ARCore से भौगोलिक डेटा की जानकारी मांगें. यह पंक्ति जोड़ें:

val cameraGeospatialPose = earth.cameraGeospatialPose

इससे आपको एक GeospatialPose मिलता है, जिसमें यह जानकारी होती है:

  • जगह की जानकारी, अक्षांश और देशांतर में दी जाती है. साथ ही, जगह की सटीक जानकारी का अनुमान भी दिया जाता है.
  • ऊंचाई, और ऊंचाई की सटीक जानकारी का अनुमान.
  • शीर्षक, डिवाइस की दिशा का अंदाज़ा, और शीर्षक कितना सटीक है.

मैप पर पोज़िशन की जानकारी दिखाएं

आप cameraGeospatialPose में सेव किए गए GeospatialPose का इस्तेमाल करके, मैप पर एक मार्कर की जगह बदल सकते हैं जो उपयोगकर्ता की जगह की जानकारी दिखाता है. जहां आपने छोड़ा था वहीं से जारी रखें और नीचे दी गई चीज़ें जोड़ें:

activity.view.mapView?.updateMapPosition(
  latitude = cameraGeospatialPose.latitude,
  longitude = cameraGeospatialPose.longitude,
  heading = cameraGeospatialPose.heading
)

यह Geospatial API से मिली वैल्यू का इस्तेमाल करके, मैप की पोज़िशन को लगातार अपडेट करता रहता है.

इसे आज़माएं

Android Studio में, चलाएं पर क्लिक करें. ARCore को ट्रैक करने के लिए, अपना डिवाइस उठाएं और उसे चारों ओर घुमाएं. कुछ देर बाद, आपको मैप पर एक हरा मार्कर दिखेगा. आपके आस-पास की जगहें देखते समय, यह मार्कर घूमता है. साथ ही, यह सही दिशा में भी होना चाहिए: उत्तर की ओर होने पर, तीर उत्तर दिशा की ओर भी इशारा करता है.

हरे तीर का निशान, आपकी जगह और शीर्षक के बाद दिखता है.

4. पृथ्वी के निर्देशांक का इस्तेमाल करके ऐंकर टेक्स्ट लगाएं

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

इस चरण में, मैप पर टैप करके ऐंकर जोड़ने का तरीका जोड़ा जा सकता है.

मैप को टैप करने पर कार्रवाई सेट करें

यह प्रोजेक्ट एक onMapClick फ़ंक्शन के साथ आता है, जिसे मैप फ़्रैगमेंट पर क्लिक किए जाने पर अक्षांश और देशांतर के साथ कॉल किया जाता है. HelloGeoRenderer.kt में onMapClick फ़ंक्शन ढूंढें.

पक्का करें कि Earth ऑब्जेक्ट का इस्तेमाल किया जा सकता है

Earth पर ऐंकर बनाने से पहले, पक्का करें कि Earth ऑब्जेक्ट का TrackingState, TRACKING हो. इसका मतलब है कि Earth की स्थिति के बारे में पता है. यह भी पक्का करें कि इसका EarthState ENABLED है, जिसका मतलब है कि Geospatial API में कोई समस्या नहीं हुई. इन पंक्तियों को onMapClick में जोड़ें:

val earth = session?.earth ?: return
if (earth.trackingState != TrackingState.TRACKING) {
  return
}

नए ऐंकर की पोज़िशन तय करना

यह पुष्टि करने के बाद कि Earth ऑब्जेक्ट ट्रैक हो रहा है, अगर पहले से मौजूद earthAnchor कोई पैरामीटर मौजूद हो, तो उसे अलग कर दें. अगले चरणों में earthAnchor को नए ऐंकर से बदला जाएगा:

earthAnchor?.detach()

फिर, नए ऐंकर की ऊंचाई तय करने के लिए, cameraGeospatialPose का इस्तेमाल करें. ऐंकर की पोज़िशन के तौर पर मैप पर टैप करने से मिले निर्देशांक पेयर का इस्तेमाल करें.

// Place the earth anchor at the same altitude as that of the camera to make it easier to view.
val altitude = earth.cameraGeospatialPose.altitude - 1
// The rotation quaternion of the anchor in the East-Up-South (EUS) coordinate system.
val qx = 0f
val qy = 0f
val qz = 0f
val qw = 1f
earthAnchor =
  earth.createAnchor(latLng.latitude, latLng.longitude, altitude, qx, qy, qz, qw)

createAnchor किसी दिए गए घुमाव के साथ जियोडेटिक निर्देशांक के लिए एक Anchor बनाता है. यह ऐंकर स्थिर रहने और तय किए गए निर्देशांक और ऊंचाई पर स्थिर रहने की कोशिश करता है.

मैप पर रखा गया मार्कर दिखाएं

आखिर में, एक नया मार्कर ले जाएं, जो यह बताता हो कि मार्कर कहां रखा गया था:

activity.view.mapView?.earthMarker?.apply {
  position = latLng
  isVisible = true
}

इसे आज़माएं

Android Studio में, चलाएं पर क्लिक करें. ARCore को ट्रैक करने के लिए, अपना डिवाइस उठाएं और उसे चारों ओर घुमाएं. कुछ देर बाद, आपको मैप पर एक हरा मार्कर दिखाई देगा, जो आपकी मौजूदा स्थिति को दिखाता है.

मैप पर टैप करने पर ऐंकर लगाने के लिए, Geospatial API का इस्तेमाल किया जाता है. यह ऐंकर, किसी जगह पर ही मौजूद होता है. ऐंकर को अपनी मौजूदा जगह के पास रखें, ताकि आप उसे एआर व्यू में देख सकें. आस-पास के माहौल में नेविगेट करने के दौरान, तापमान में कोई बदलाव नहीं होना चाहिए.

मैप पर टैप करके मार्कर लगाएं.

5. नतीजा

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

मैप पर टैप करके मार्कर लगाएं.

हमने वीडियो में क्या-क्या शामिल किया है

  • भौगोलिक एपीआई चालू करके, Google Cloud प्रोजेक्ट को सेट अप करने का तरीका.
  • ARCore प्रोजेक्ट में भौगोलिक डेटा की जानकारी पाने और उसे मैप पर दिखाने का तरीका.
  • भौगोलिक स्थिति का इस्तेमाल करके असली दुनिया में लगे ऐंकर को कैसे रखें.

अन्य संसाधन

इस कोडलैब में इस्तेमाल किए गए भौगोलिक कॉन्सेप्ट और SDK टूल के बारे में ज़्यादा जानकारी के लिए, ये अन्य संसाधन देखें: