अपने Android एनडीके ऐप्लिकेशन (C) के लिए Geospatial API को चालू करें

अपने ऐप्लिकेशन की सेटिंग कॉन्फ़िगर करें, ताकि वह Geospatial API का इस्तेमाल कर सके.

ज़रूरी शर्तें

पक्का करें कि आपको एआर के बुनियादी सिद्धांतों के बारे में पता हो साथ ही, आगे बढ़ने से पहले ARCore सेशन को कॉन्फ़िगर करने का तरीका जानें.

अगर आपको कोई ऐसा सैंपल ऐप्लिकेशन चलाना है जो बताई गई सुविधाएं दिखाता है तो यहां देखें Android के लिए ARCore जियोस्पेशियल क्विकस्टार्ट Java के लिए. क्विकस्टार्ट में ऐप्लिकेशन का नमूना Java में लिखा होता है. कोड सैंपल दस्तावेज़ में वही काम करने के लिए कहा गया है जो C में लिखा गया है.

ज़्यादा जानकारी के लिए, ज़्यादा जानकारी के लिए, Geospatial API के बारे में जानकारी Geospatial API के बारे में जानकारी.

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

पक्का करें कि आपका डेवलपमेंट एनवायरमेंट, ARCore SDK टूल की ज़रूरी शर्तों को पूरा करता हो, Java के लिए क्विकस्टार्ट में बताया गया है.

ARCore API चालू करें

अपने ऐप्लिकेशन में विज़ुअल पोज़िशनिंग सिस्टम (वीपीएस) का इस्तेमाल करने से पहले, आपको ARCore API चालू करें Google Cloud प्रोजेक्ट में लिंक किया जा सकता है. यह सेवा जियोस्पेशल ऐंकर होस्ट करना, सेव करना, और उनका समाधान करना.

डिजिटल बटन की अनुमति को प्राथमिकता दी जाती है. हालांकि, एपीआई पासकोड से पुष्टि करने की सुविधा भी काम करती है.

अपने ऐप्लिकेशन में ज़रूरी लाइब्रेरी जोड़ें

अपने ऐप्लिकेशन को ARCore एपीआई को कॉल करने की अनुमति देने के बाद, आपको इनमें लाइब्रेरी जोड़नी होंगी अपने ऐप्लिकेशन में जियोस्पेशियल सुविधाएं चालू करें.

अपने ऐप्लिकेशन की build.gradle फ़ाइल में, Play को शामिल करने के लिए Google Play services को सेटअप करें सेवाओं की जगह की जानकारी वाली लाइब्रेरी.

dependencies {
  // Apps must declare play-services-location version >= 16.
  // In the following line, substitute `16 (or later)` with the latest version.
  implementation 'com.google.android.gms:play-services-location:16 (or later)'
}

सेशन कॉन्फ़िगरेशन में जियोस्पेशियल सुविधाएं चालू करें

सेशन बनाने से पहले, अपने सेशन में GeospatialMode बदलें ENABLED का कॉन्फ़िगरेशन:

// Create a session config.
ArConfig* ar_config = NULL;
ArConfig_create(ar_session, &ar_config);

// Enable the Geospatial API.
ArConfig_setGeospatialMode(ar_session, ar_config, AR_GEOSPATIAL_MODE_ENABLED);
CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS);

// Release config resources.
ArConfig_destroy(ar_config);

जब भौगोलिक डेटा को ENABLED पर सेट किया जाता है, तब ऐप्लिकेशन को विज़ुअल पोज़िशनिंग सिस्टम (वीपीएस) से मिली भौगोलिक जानकारी.

उपयोगकर्ता को डिवाइस का डेटा इस्तेमाल करने की अनुमति देने का अनुरोध करें

ARCore Geospatial API का इस्तेमाल करने वाले ऐप्लिकेशन में, लोगों को यह प्रॉम्प्ट दिखाना चाहिए कि स्वीकार करें और उनके डिवाइस के डेटा के इस्तेमाल की अनुमति दें. यहां जाएं: उपयोगकर्ता की निजता से जुड़ी ज़रूरी शर्तें जानकारी.

देखें कि डिवाइस काम करता है या नहीं

ARCore का इस्तेमाल करने वाले सभी डिवाइस, Geospatial API के साथ काम नहीं करते हैं, क्योंकि क्विकस्टार्ट में बताया गया है Java के लिए.

उपयोगकर्ता के डिवाइस में यह सुविधा काम करती है या नहीं, यह देखने के लिए कॉल करें ArSession_isGeospatialModeSupported(). अगर यह नतीजा गलत दिखाता है, तो सेशन को कॉन्फ़िगर करने की कोशिश न करें (नीचे), इसलिए, ArStatus AR_ERROR_UNSUPPORTED_CONFIGURATION.

रनटाइम के दौरान, उपयोगकर्ता से जगह की जानकारी की अनुमतियां मांगें

आपके ऐप्लिकेशन को रनटाइम के दौरान जगह की जानकारी की अनुमतियों का अनुरोध करना होगा.

ARCore Geospatial API का इस्तेमाल करने के लिए, आपके ऐप्लिकेशन को ये शर्तें रजिस्टर करनी होंगी अतिरिक्त अनुमतियां:

  • ACCESS_FINE_LOCATION उपयोगकर्ता की जगह की सटीक जानकारी का पता लगाने के लिए.

  • ACCESS_COARSE_LOCATION उपयोगकर्ता के स्थान के गैर-सटीक निर्धारण और अनुपालन के लिए उपयोगकर्ता की निजता से जुड़ी ज़रूरी शर्तें. हालांकि, Geospatial API को कॉन्फ़िगर नहीं किया जा सकता अनुमानित जगह की जानकारी के साथ काम करता है और एपीआई अनुरोध तब फ़ेल हो जाएंगे, जब उपयोगकर्ता यह अनुमति सेट करें. ज़्यादा जानकारी के लिए नीचे देखें.

  • ACCESS_INTERNET कृपया ARCore Geospatial API सेवा से संपर्क करें.

<manifest ... >
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  <uses-permission android:name="android.permission.INTERNET" />
</manifest>

Android 12 या इसके बाद के वर्शन वाले डिवाइसों पर, उपयोगकर्ता अनुरोध कर सकते हैं जिनका ऐक्सेस आपके ऐप्लिकेशन के पास सिर्फ़ है जगह की अनुमानित जानकारी जानकारी. इस अनुरोध को पूरा करने के लिए, आपके ऐप्लिकेशन में ACCESS_COARSE_LOCATION अनुमति कॉन्फ़िगर की गई. साथ ही, ACCESS_FINE_LOCATION, जैसा कि ऊपर दिखाया गया है. आपको ऐसा ज़रूर करना चाहिए जगह की जानकारी की दोनों अनुमतियों को कॉन्फ़िगर करना होगा.

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

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

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

Geospatial API का इस्तेमाल उन इलाकों में भी किया जा सकता है जहां वीपीएस कवरेज नहीं है. बाहर के वातावरण में बहुत कम या कोई रुकावट नहीं होने पर, जीपीएस को बहुत ज़्यादा सटीक पोज़ देने के लिए काफ़ी मदद मिल सकती है.

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