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

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

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

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

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

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

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

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

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

Android Studio सेट अप करना

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

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

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

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

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

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

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

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

  1. app > 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. उपयोगकर्ता की स्थिति तय करें

इस कदम में, आप जियोस्पेशियल एपीआई का इस्तेमाल शुरू करने के लिए, सैंपल प्रोजेक्ट में कोड जोड़ते हैं.

भौगोलिक डेटा का इस्तेमाल करने के लिए, ARCore सेशन को कॉन्फ़िगर करें

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

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

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

जियोस्पेशियल एपीआई से डेटा पाने का अनुरोध करें

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
)

यह भौगोलिक डेटा एपीआई से मिली वैल्यू का इस्तेमाल करके मैप की स्थिति को लगातार अपडेट करता है.

इसे आज़माएं

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

हरा ऐरो, आपकी जगह और शीर्षक के मुताबिक आता है.

4. Earth के निर्देशांक का इस्तेमाल करके ऐंकर लगाना

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

इस कदम में, आप मैप पर टैप करके ऐंकर को लगाने का तरीका जोड़ देते हैं.

मैप टैप किए जाने पर एक कार्रवाई सेट करें

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

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

Earth पर ऐंकर बनाने से पहले, पक्का करें कि Earth का ऑब्जेक्ट TrackingState, TRACKING हो. इसका मतलब है कि Earth की स्थिति जानी-पहचानी है. यह भी पक्का करें कि इसका EarthState ENABLED हो. इसका मतलब है कि भौगोलिक डेटा एपीआई में कोई समस्या नहीं मिली. इन पंक्तियों को 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 को ट्रैकिंग करने में मदद करने के लिए, अपने डिवाइस को पकड़कर रखें और उसके आस-पास घुमाएं. कुछ देर बाद, आपको मैप पर एक हरे रंग का मार्कर दिखाई देगा, जो आपकी मौजूदा स्थिति को दिखाता है.

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

मैप पर टैप करके मार्कर रखें.

5. नतीजा

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

मैप पर टैप करके मार्कर रखें.

हमने क्या-क्या शामिल किया है

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

अन्य संसाधन

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