Jetpack XR के लिए ARCore

परसेप्शन की सुविधाओं की मदद से, डिजिटल कॉन्टेंट को असल दुनिया में लाएं.
नया अपडेट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
24 सितंबर, 2025 - - - 1.0.0-alpha06

डिपेंडेंसी का एलान करना

Jetpack XR के लिए ARCore पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.

अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:

ग्रूवी

dependencies {
    implementation "androidx.xr.arcore:arcore:1.0.0-alpha06"

    // Optional dependencies for asynchronous conversions
    implementation "androidx.xr.arcore:arcore-guava:1.0.0-alpha06"
    implementation "androidx.xr.arcore:arcore-rxjava3:1.0.0-alpha06"
}

Kotlin

dependencies {
    implementation("androidx.xr.arcore:arcore:1.0.0-alpha06")

    // Optional dependencies for asynchronous conversions
    implementation("androidx.xr.arcore:arcore-guava:1.0.0-alpha06")
    implementation("androidx.xr.arcore:arcore-rxjava3:1.0.0-alpha06")
}

डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.

सुझाव/राय दें या शिकायत करें

आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.

नई समस्या दर्ज करने का तरीका

ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.

वर्शन 1.0

वर्शन 1.0.0-alpha06

24 सितंबर, 2025

androidx.xr.arcore:arcore-*:1.0.0-alpha06 रिलीज़ हो गया है. वर्शन 1.0.0-alpha06 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • ARCore के लिए टेस्टिंग की सुविधा, xr:arcore:arcore-testing मॉड्यूल पर माइग्रेट हो गई है. (I25469)
  • ऐप्लिकेशन को डिवाइस की पोज़िशन और डिसप्ले कॉन्फ़िगरेशन को रेंडर करने के लिए, ArDevice और RenderViewpoint को जोड़ा गया है. (Ib7e3f)
  • HandJointType प्रीफ़िक्स के साथ HAND_JOINT_TYPE_ enum का नाम बदलें. (I3f7cd)
  • HandJointType को xr:runtime:runtime से xr:arcore:arcore में ले जाया गया है. (Iadb9c, b/409058039)
  • Hand.State अब java.nio.FloatBuffer को ऐसे फ़ॉर्मैट में दिखाता है जिसमें जॉइंट पोज़ होते हैं. इससे परफ़ॉर्मेंस पर फ़ोकस करने वाले ऐप्लिकेशन को आसानी से ऐक्सेस किया जा सकता है. (I55e27)

वर्शन 1.0.0-alpha05

30 जुलाई, 2025

androidx.xr.arcore:arcore:1.0.0-alpha05, androidx.xr.arcore:arcore-guava:1.0.0-alpha05, और androidx.xr.arcore:arcore-rxjava3:1.0.0-alpha05 रिलीज़ किए जाते हैं. वर्शन 1.0.0-alpha05 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • getPrimaryHandSide जोड़ें, ताकि डेवलपर को दाईं ओर की जानकारी (I270bd) मिल सके
  • जियोस्पेशल चेक वीपीएस की उपलब्धता एपीआई (I58573) जोड़ें
  • checkVpsAvailability (Idbded) के लिए ARCore API जोड़ें
  • Java डेवलपर के इस्तेमाल के लिए, :xr:arcore:arcore-rxjava3 में stateFlowable एक्सटेंशन फ़ंक्शन जोड़े गए. (I083aa, b/427247794)

एपीआई में हुए बदलाव

  • कॉन्फ़िगरेशन *Mode वैल्यू के नाम बदल दिए गए हैं, ताकि उनके काम करने के तरीके के बारे में पता चल सके. (I6d247, b/414648065)
  • मुख्य ARCore आर्टफ़ैक्ट (xr:arcore:arcore) में सिर्फ़ Kotlin-स्टाइल वाले एसिंक एपीआई शामिल होंगे. Java डेवलपर, xr:arcore:arcore-rxjava3 लाइब्रेरी पर भरोसा कर सकते हैं, ताकि वे काम करने वाले एपीआई को ऐक्सेस कर सकें. (Ia525e, b/422794329)
  • मुख्य ARCore आर्टफ़ैक्ट (xr:scenecore:scenecore) में सिर्फ़ Kotlin-स्टाइल वाले एसिंक्रोनस एपीआई शामिल होंगे. Java डेवलपर, xr:arcore:arcore-guava लाइब्रेरी पर भरोसा कर सकते हैं, ताकि वे काम करने वाले एपीआई को ऐक्सेस कर सकें. (Iffcb4, b/422773524)
  • Java डेवलपर के इस्तेमाल के लिए, AnchorGuava को AnchorGuava में जोड़ा गया.Anchor.persistAsync() (I4af1c, b/425984631)
  • Java डेवलपर के इस्तेमाल के लिए, EarthGuava को EarthGuava में जोड़ा गया.Earth.createAnchorOnSurfaceAsync(Session, Double, Double, Double, Quaternion, Surface) (I66357, b/425992992)
  • Java डेवलपर, GltfModel.kt में GltfModel.kt के लिए एक्सटेंशन फ़ंक्शन का इस्तेमाल करेंगे.GltfModel.createAsync GltfModel में मौजूद एसिंक फ़ंक्शन मिटा दिए जाएंगे. (I0af60)
  • यह लाइब्रेरी अब JSpecify nullness annotations का इस्तेमाल करती है. ये टाइप-यूज़ होते हैं. Kotlin डेवलपर को सही इस्तेमाल लागू करने के लिए, कंपाइलर के इस आर्ग्युमेंट का इस्तेमाल करना चाहिए: -Xjspecify-annotations=strict (यह Kotlin कंपाइलर के 2.1.0 वर्शन से डिफ़ॉल्ट रूप से उपलब्ध है) (Ia8420, b/326456246)
  • Java डेवलपर के इस्तेमाल के लिए, :xr:arcore:arcore-rxjava3 में subscribeAsFlowable एक्सटेंशन फ़ंक्शन जोड़े गए. (Id3e49, b/427277298)

वर्शन 1.0.0-alpha04

7 मई, 2025

androidx.xr.arcore:arcore:1.0.0-alpha04 रिलीज़ हो गया है. वर्शन 1.0.0-alpha04 में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • Kotlin 2.0 के साथ रिलीज़ किए गए प्रोजेक्ट का इस्तेमाल करने के लिए, KGP 2.0.0 या इसके बाद के वर्शन की ज़रूरत होती है. (Idb6b5)
  • TrackingState और HandJointType को ARCore से Runtime में ले जाया गया है.
  • Hand.State.isActive (boolean) को बदलकर Hand.State.trackingState (androidx.xr.runtime.TrackingState) कर दिया गया है.
  • अगर यूयूआईडी अमान्य है, तो Anchor.load, Anchor.AnchorLoadInvalidUuid दिखाता है.

वर्शन 1.0.0-alpha03

26 फ़रवरी, 2025

androidx.xr.arcore:arcore:1.0.0-alpha03 को पिछले ऐल्फ़ा वर्शन के बाद से बिना किसी खास बदलाव के रिलीज़ किया गया है. वर्शन 1.0.0-alpha03 में ये बदलाव शामिल हैं.

वर्शन 1.0.0-alpha02

12 फ़रवरी, 2025

androidx.xr.arcore:arcore:1.0.0-alpha02 रिलीज़ हो गया है. वर्शन 1.0.0-alpha02 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • हाथों को ट्रैक करने की सुविधा जोड़ी गई. ट्रैकिंग की जानकारी ऐक्सेस करने के लिए, Hand.left और Hand.right का इस्तेमाल करें.
  • एंकर जनरेट करने वाले एपीआई (Anchor.create, Anchor.load, Plane.createAnchor) अब सभी AnchorCreateResult दिखाते हैं और AnchorCreateResourcesExhausted को सही तरीके से लागू करते हैं.

गड़बड़ियां ठीक की गईं

  • Anchor.detach अब सेशन अपडेट थ्रेड के साथ रेस कंडीशन की वजह से क्रैश नहीं होता.
  • Anchor.create एम्युलेटर पर ज़्यादा बेहतर तरीके से काम करता है

वर्शन 1.0.0-alpha01

12 दिसंबर, 2024

androidx.xr.arcore:arcore-* 1.0.0-alpha01 रिलीज़ हो गया है.

शुरुआती रिलीज़ की सुविधाएं

ARCore for Jetpack XR लाइब्रेरी, मौजूदा ARCore लाइब्रेरी से मिलती-जुलती है. यह लाइब्रेरी, डिजिटल कॉन्टेंट को असल दुनिया के साथ ब्लेंड करने की सुविधाएं देती है. इस लाइब्रेरी में मोशन ट्रैकिंग, परसिस्टेंट ऐंकर, हिट टेस्टिंग, और सिमैंटिक लेबलिंग के साथ प्लेन की पहचान करने की सुविधा शामिल है. जैसे, फ़र्श, दीवारें, और टेबलटॉप. Jetpack XR के लिए ARCore का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, डेवलपर गाइड देखें.

  • Session: ARCore for Jetpack XR, Jetpack XR Runtime का इस्तेमाल करता है, ताकि इसकी सुविधाओं को चालू किया जा सके. आपको Jetpack XR के ज़्यादातर ARCore API के साथ इंटरैक्ट करने के लिए, सेशन का इस्तेमाल करना होगा. इसलिए, कृपया इसके दस्तावेज़ देखें.

  • Plane: अपने आस-पास की दुनिया को समझने के लिए, प्लेन का इस्तेमाल करें. हर प्लैन में एक Label होता है, जो उसके बारे में बताता है. subscribe का इस्तेमाल करके, हाल ही में पता लगाए गए विमानों के बारे में सूचनाएं पाई जा सकती हैं. इसके अलावा, state का इस्तेमाल करके, किसी विमान में हुए बदलावों के बारे में सूचनाएं पाई जा सकती हैं.

  • Anchor: यह वर्चुअल ऑब्जेक्ट और असल दुनिया की किसी जगह के बीच का लिंक होता है. ऐंकर को स्पेस में किसी खास जगह (create का इस्तेमाल करके) या किसी Trackable (createAnchor का इस्तेमाल करके) से जोड़ा जा सकता है.

    • एंकर का इस्तेमाल, सभी सेशन में फिर से किया जा सकता है. इन्हें सेव करने के लिए persist, इनकी गिनती करने के लिए getPersistedAnchorUuids, और इन्हें वापस पाने के लिए load का इस्तेमाल किया जा सकता है. जब इनका इस्तेमाल न हो रहा हो, तब इन्हें unpersist करना न भूलें.

    • एंकर, ARCore for Jetpack XR और Jetpack SceneCore के बीच इंटरऑपरेबल होते हैं. ऐंकर का इस्तेमाल करके AnchorEntity बनाया जा सकता है. इसके अलावा, अगर आपके पास कोई मौजूदा AnchorEntity है, तो getAnchor का इस्तेमाल करके, उसके साथ जुड़ा ऐंकर वापस पाया जा सकता है.

    • hitTest का इस्तेमाल करके, लोगों को स्वाभाविक तरीके से इंटरैक्ट करने का विकल्प दें. हिटटेस्ट, Ray का इस्तेमाल करके यह पता लगाता है कि वह किस कॉन्टेंट से इंटरसेक्ट करता है. साथ ही, उस जगह से Anchor बनाता है. किसी InputEvent से हिटटेस्ट करें.

ऐसी समस्याएं जिनके बारे में जानकारी पहले से है

  • unpersist को कॉल करने और getPersistedAnchorUuids से मिले नतीजों से इसके यूयूआईडी को हटाने में कुछ समय लग सकता है.

  • create यह पुष्टि नहीं करेगा कि सिस्टम के पास नए ऐंकर वापस लाने के लिए ज़रूरी संसाधन हैं या नहीं. बहुत ज़्यादा ऐंकर बनाने से, ऐप्लिकेशन क्रैश हो सकता है.

  • फ़िलहाल, ऐसे ऐंकर को सेव करने की सुविधा उपलब्ध नहीं है जिसे पहले सेव किया गया था और फिर सेव नहीं किया गया था.

  • एम्युलेटर में इसका इस्तेमाल किया जा सकता है. हालांकि, हो सकता है कि यह किसी असली डिवाइस पर इस्तेमाल करने जितना स्थिर न हो. खास तौर पर, create को किए गए कॉल, नेटिव कोड की गड़बड़ी की वजह से पूरे नहीं हो सकते. साथ ही, गतिविधि तुरंत बंद हो सकती है.

  • कुछ मामलों में, persist को कॉल करते समय, “ऐंकर सेव नहीं किया गया” मैसेज के साथ RuntimeException गड़बड़ी दिख सकती है. हालांकि, ऐसे मामलों में फ़ंक्शन अब भी काम करेगा और ऐंकर सेव हो जाएगा. हमारा सुझाव है कि इस समस्या को हल करने के लिए, persist को try ब्लॉक में रैप करें.