أخبار المنتجات

تعديلات على حزمة تطوير البرامج (SDK) لمنصة Android XR: تقديم "معاينة المطوّر 4"

قراءة لمدة 5 دقائق

يسرّنا اليوم إطلاق "معاينة المطوّر 4" من حزمة تطوير البرامج (SDK) لمنصة Android XR، مع مواصلة التركيز على توحيد عملية التطوير على الأجهزة المختلفة، بما في ذلك سمّاعات الرأس ونظارات الواقع الممتد السلكية والنظارات الذكية. للحفاظ على بساطة منصتنا، سنستخدم أسماء أكثر وصفًا لأشكال الأجهزة، حيث ستُعرف النظارات بالذكاء الاصطناعي من الآن فصاعدًا باسم النظارات الصوتية، والنظارات الذكية التي تعرض المحتوى باسم النظارات التي تعرض المحتوى، وستظهر هذه التغييرات في مستنداتنا بدءًا من اليوم. 

يتضمّن هذا الإصدار مجموعة من التعديلات التي تساعدك في إنشاء تجارب رائعة لأجهزة الواقع الممتد، وتوفير تجارب غامرة أكثر على سمّاعات الرأس التي تعمل بنظام الواقع الممتد، وتبسيط عملية إنشاء تجارب معزّزة على النظارات الصوتية والنظارات التي تعرض المحتوى. بالإضافة إلى ذلك، سيتم قريبًا نقل مكتباتنا الأساسية، بما في ذلك XR Runtime وJetpack SceneCore وARCore for Jetpack XR، إلى الإصدار التجريبي رسميًا.

لمنحك إمكانية الوصول المبكر إلى الأجهزة والموارد اللازمة لإنشاء تجارب غامرة ومعزّزة على الأجهزة القادمة، مثل النظارات التي تعرض المحتوى والنظارات الصوتية وProject Aura من XREAL، نعلن عن برنامج Android XR Developer Catalyst Program. يمكنك الاطّلاع على مزيد من المعلومات و بدء طلبك اليوم. 

إنشاء تجارب معزّزة للنظارات الصوتية والنظارات التي تعرض المحتوى

بدءًا من مكتباتنا للتجارب المعزّزة، تقدّم "معاينة المطوّر 4" واجهات برمجة تطبيقات جديدة تساعدك في إنشاء تطبيقاتك واختبارها.

‫Jetpack Projected: توفُّر الأجهزة وواجهات برمجة التطبيقات ProjectedTestRule

تساعد مكتبة Jetpack Projected في نقل تجارب التطبيقات من الهاتف إلى مجال رؤية المستخدم. لقد أضفنا واجهة برمجة التطبيقات Device Availability API، التي تجمع بين إشارات حالة الارتداء والاتصال في قيم Android Lifecycle.State العادية. يتيح لك ذلك تعديل سلوك تطبيقاتك استنادًا إلى ما إذا كان الجهاز قيد الارتداء.

val xrDevice = XrDevice.getCurrentDevice(projectedContext)

// Observe the device lifecycle flow
xrDevice.getLifecycle().currentStateFlow
    .collect { state ->
        when (state) {
            Lifecycle.State.STARTED -> { /* Device is available (worn) */ }
            Lifecycle.State.CREATED -> { /* Device is unavailable (not worn) */ }
            Lifecycle.State.DESTROYED -> { /* Device is DISCONNECTED */ }
        }
    }

لتبسيط الاختبار، تعمل واجهة برمجة التطبيقات ProjectedTestRule الجديدة في عنصر projected-testing على أتمتة عملية إعداد بيئات الاختبار المعروضة. يساعدك ذلك في كتابة اختبارات وحدة نظيفة وموثوقة بدون رمز النص النموذجي.

// from the 'androidx.xr.projected:projected-testing:1.0.0-alpha07' artifact
@get:Rule
val projectedTestRule = ProjectedTestRule()

@Test
fun testProjectedContextInitialization() {
    // by default, ProjectedTestRule automatically creates and connects
    // a projected device before each test
    val projectedContext = ProjectedContext.createProjectedDeviceContext(context)

    // assert the projected context is successfully initialized
    assertThat(projectedContext).isNotNull()
}

‫Jetpack Compose Glimmer: Google Sans Flex والمكوّنات الجديدة

تتضمّن مكتبة واجهة المستخدم الخاصة بالنظارات الذكية التي تعرض المحتوى، Jetpack Compose Glimmer، الآن Google Sans Flex لتحسين سهولة القراءة على الشاشات البصرية التي تتيح رؤية العالم الحقيقي مباشرة عبر العدسات. أضفنا أيضًا عدة مكوّنات تفاعلية:

  • المجموعات: مصمّمة للمجموعات المحسّنة لوحة اللمس، وتعرض عنصرًا واحدًا في كل مرة.
  • _الشرائح بعنوان_: توفّر تصنيفًا وسياقًا لبطاقات المحتوى.
glimmer (1).gif

إنشاء تجارب غامرة لسمّاعات الرأس التي تعمل بنظام الواقع الممتد والنظارات السلكية التي تعمل بنظام الواقع الممتد

إذا كنت تريد إنشاء تجارب غامرة بالكامل لسمّاعات الرأس التي تعمل بنظام الواقع الممتد والنظارات السلكية التي تعمل بنظام الواقع الممتد، لدينا عدة تعديلات كبيرة.

الانتقال إلى الإصدار التجريبي والبنية الحديثة

سيتم قريبًا نقل XR Runtime وJetpack SceneCore وميزات الإدراك في ARCore for Jetpack XR (خرائط العمق و تتبُّع العين/اليد واختبارات النتائج و المرتكزات المكانية) إلى الإصدار التجريبي، لذا بسّطنا واجهات برمجة التطبيقات Jetpack XR. أزلنا حِزم Guava وRxJava3 القديمة لصالح بنية حديثة تستخدم Kotlin أولاً.

‫Jetpack SceneCore: ملفات glTF والشبكات المخصّصة

نحن بصدد توسيع إمكانات النماذج ثلاثية الأبعاد من خلال إضافة إمكانية ضبط النماذج ثلاثية الأبعاد بدقة والوصول إلى عُقد معيّنة باستخدام نموذج ثلاثي الأبعاد. باستخدام GltfModelNode، يمكنك تعديل خصائص مثل الوضعية والمواد والنسيج، وحتى تشغيل الرسوم المتحركة لعُقد معيّنة.

// Create a new PBR material
pbrMaterial = KhronosPbrMaterial.create(
    session = xrSession,
    alphaMode = AlphaMode.OPAQUE
)

// Load a texture.
val texture = Texture.create(
    session = xrSession,
    path = Path("textures/texture_name.png")
)

// Apply the texture and configure occlusion to define how the material handles ambient lighting.
pbrMaterial.setOcclusionTexture(
    texture = texture,
    strength = 0.5f
)

// Access the hierarchy of nodes within the model entity.
val entityNodes = entity.nodes

// Find the specific node to apply the material override.
val myEntityNode = entityNodes.find { it.name == "node_name" }

// Apply the PBR material to the node.
myEntityNode?.setMaterialOverride(
   material = newMaterial
)

سننقل أيضًا الشبكات المخصّصة إلى SceneCore. تتيح لك الشبكات المخصّصة إنشاء هندسة في الوقت الفعلي بطريقة برمجية، ما يجعلها مثالية لإنشاء نماذج ثلاثية الأبعاد مخصّصة. سيتم إطلاق هذه الميزة كتجربة، لذا ندعوك إلى تجربتها وإخبارنا برأيك.

// Create the mesh
val roadMesh =
    CustomMesh.BuilderFromMeshData(session, roadVertexLayout)
        .addVertexData(ByteBufferRegion(roadDataBuffer, 0, vertexDataSize))
        .setIndexData(ByteBufferRegion(roadDataBuffer, vertexDataSize, indexDataSize))
        .setTopology(MeshSubsetTopology.TRIANGLES)
        .build()

// Define the material
val roadMaterial = KhronosPbrMaterial.create(session, AlphaMode.OPAQUE)

// Instantiate the entity using the custom mesh and material
val roadEntity =
    MeshEntity.create(
        session,
        roadMesh,
        listOf(roadMaterial),
        pose = roadPose,
    )

‫Compose for XR: إتاحة استخدام ملفات glTF بشكل أساسي

يتوفّر الآن دعم أساسي لملفات glTF مباشرةً في Compose for XR باستخدام  SpatialGltfModel. يمكنك استخدام هذه الميزة مع SpatiallGltfModelState للوصول إلى العُقد و الرسوم المتحركة في نموذج glTF، أو استخدامها لإضافة نسيج ومواد إلى نماذجك ثلاثية الأبعاد.

val myGltfModelState = rememberSpatialGltfModelState(
        source = SpatialGltfModelSource.fromPath(
            Paths.get("models/my_animated_model.glb")
        )
    )

    val myGltfAnimation =
        myGltfModelState.animations.find { it.name == "animation_name" }

    DisposableEffect(myGltfAnimation) {
        myGltfAnimation?.loop()

        onDispose {
            myGltfAnimation?.stop()
        }
    }

    SpatialGltfModel(state = myGltfModelState, modifier = modifier)

‫ARCore for Jetpack XR: معاينة واجهة برمجة التطبيقات Geospatial API للنظارات السلكية التي تعمل بنظام الواقع الممتد

نقدّم أيضًا معاينة مبكرة لواجهة برمجة التطبيقات Geospatial API للنظارات السلكية التي تعمل بنظام الواقع الممتد في ARCore for Jetpack XR. يتيح هذا التعديل تثبيت المحتوى الرقمي بدقة عالية في المواقع الجغرافية الفعلية في أكثر من 87 بلدًا.

من خلال الجمع بين نظام تحديد المواقع المرئية (VPS) من ARCore وإمكانات الاستدلال والصوت في Gemini Live API، يمكنك إنشاء تجارب تراعي السياق وتفهم موقع المستخدم وموضعه. تخيَّل إنشاء جولة مشي غامرة مستنِدة إلى الذكاء الاصطناعي تقدّم أوصافًا صوتية في الوقت الفعلي للأماكن القريبة، وتدمج بسلاسة المعلومات الرقمية مع البيئة المادية.

ابدأ في بناء المستقبل اليوم

هذا هو الوقت المناسب للتطوير على Android XR. مع اقتراب نقل حزمة Jetpack XR SDK إلى الإصدار التجريبي وتوفُّر مجموعة قوية من الأدوات الجديدة، يمكنك استكشاف كل من المجالات التالية لإعداد تجارب تطبيقك للواقع الممتد.  

قراءة المستندات واستكشاف النماذج وتجربة التجارب في الواقع الممتد

انتقِل إلى موقع Android Developers الرسمي للاطّلاع على الأدلة الفنية الكاملة ومرجع واجهة برمجة التطبيقات وتعليمات إعداد المحاكي الجديد. يمكنك استلهام الأفكار من نماذجنا وتجاربنا. تعرَّف على كيفية استخدامنا لواجهات برمجة التطبيقات هذه لإنشاء تنسيقات مكانية غامرة وتحميل نماذج ثلاثية الأبعاد واستكشاف الصوت المكاني وغير ذلك.

التعرّف على الميزات الجديدة لمحركات الألعاب

أضفنا دعمًا رسميًا لـ Unreal Engine و Godot، وأطلقنا أداتَين جديدتَين لتسريع عملية التطوير على Android XR باستخدام Unity و إطار عمل التفاعل في Android XR. واستنادًا إلى ملاحظاتك، نقدّم Android XR Engine Hub للسماح لك بتشغيل تجاربك مباشرةً من المحرك المفضّل لديك.

التقدّم بطلب للانضمام إلى برنامج Android XR Developer Catalyst Program

لا تفوّت فرصة التطوير لأحدث أجهزة Android XR. يمكنك التقدّم بطلب اليوم للحصول على إمكانية الوصول إلى الأجهزة قبل إطلاقها، بما في ذلك النموذج الأولي للنظارات الصوتية والنظارات التي تعرض المحتوى وProject Aura من XREAL.

مزيد من المعلومات والتقدّم بطلب اليوم

نتطلّع إلى رؤية التجارب الرائعة التي ستنشئها في الواقع الممتد مع اقتراب إطلاق المزيد من أجهزة Android XR في وقت لاحق من هذا العام.

يمكنك استكشاف هذا الإعلان وجميع تعديلات Google I/O 2026 على io.google.

المؤلّفان:

متابعة القراءة