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

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

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

आपको क्या बनाना होगा

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

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

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

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

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

Android Studio सेट अप करना

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

  1. Android Studio शुरू करें और वीसीएस से कोई प्रोजेक्ट इंपोर्ट करें.
    • अगर आपका कोई प्रोजेक्ट पहले से खुला हुआ है, तो फ़ाइल > नया > वर्शन कंट्रोल से प्रोजेक्ट....
    • अगर आपको Android Studio में आपका स्वागत है विंडो दिखती है, तो वीसीएस से पाएं विकल्प का इस्तेमाल करें. 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. ऐप्लिकेशन खोलें > सोर्स > 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 में सेव की गई वैल्यू से ऐप्लिकेशन को Geospatial API का इस्तेमाल करने की अनुमति मिली और com.google.android.geo.API_KEY में सेव की गई वैल्यू से, ऐप्लिकेशन को Google Maps SDK टूल का इस्तेमाल करने की अनुमति मिली.

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

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

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

3. उपयोगकर्ता की स्थिति तय करना

इस चरण में, Geospatial API का इस्तेमाल शुरू करने के लिए, सैंपल प्रोजेक्ट में कोड जोड़ा जाता है.

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

भौगोलिक डेटा पाने के लिए, आपको Geospatial API को चालू करना होगा. 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. पृथ्वी के निर्देशांकों का इस्तेमाल करके लंगर डालना

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

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

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

इस प्रोजेक्ट में एक 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 को ट्रैक करने में मदद मिल सके. थोड़ी देर के बाद, आपको मैप पर एक हरा मार्कर दिखाई देगा जो आपकी मौजूदा स्थिति को दिखाता है.

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

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

5. नतीजा

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

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

हमने इन विषयों के बारे में बताया

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

अन्य संसाधन

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