Jetpack Compose للواقع المعزّز

إنشاء تصاميم واجهة مستخدم مكانية بشكل صريح تستفيد من الإمكانات المكانية لنظام Android XR
آخر تعديل الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار التجريبي
12 شباط (فبراير) 2025 - - - 1.0.0-alpha02

الإعلان عن التبعيات

لإضافة تبعية على XR compose، يجب إضافة مستودع Google Maven إلى مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.

أضِف التبعيات للعناصر التي تحتاج إليها في ملف build.gradle ل تطبيقك أو وحدتك:

Groovy

dependencies {
    implementation "androidx.xr.compose:compose:1.0.0-alpha01"

    // Use to write unit tests
    testImplementation "androidx.xr.compose:compose-testing:1.0.0-alpha01"
}

Kotlin

dependencies {
    implementation("androidx.xr.compose:compose:1.0.0-alpha01")

    // Use to write unit tests
    testImplementation("androidx.xr.compose:compose-testing:1.0.0-alpha01")
}

لمزيد من المعلومات عن العناصر الاعتمادية، اطّلِع على مقالة إضافة عناصر الاعتماد الخاصة بالإصدار.

الملاحظات

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

إنشاء مشكلة جديدة

اطّلِع على مستندات أداة تتبُّع المشاكل لمزيد من المعلومات.

الإصدار 1.0

الإصدار 1.0.0-alpha02

12 شباط (فبراير) 2025

تم إصدار androidx.xr.compose:compose:1.0.0-alpha02 وandroidx.xr.compose:compose-testing:1.0.0-alpha02. يحتوي الإصدار 1.0.0-alpha02 على عمليات الربط هذه.

الميزات الجديدة

  • يمكن الآن أن تحجب لوحة النشاط محتواها عند تفعيل ميزة "المحادثة المكانية".
  • يمكن الآن استخدام واجهة برمجة التطبيقات Orbiter في سياقات SubspaceComposable، وسيتم إرفاق "العناصر الدوّارة" بأقرب عنصر رئيسي قابل للتركيب يستند إلى SubspaceLayout.
  • تمّ تقديمها في LayoutCoordinatesAwareModifierNode للسماح بالمُعدِّلات المستندة إلى موضع الإعلان المخصّص.
  • تمت إضافة طرق دورة حياة الربط/الفصل إلى SubspaceModifier.Node.
  • تمت إضافة scaleWithDistance إلى المفتاح المُعدِّل القابل للنقل. عند تفعيل scaleWithDistance، سيزداد حجم عنصر الفضاء الفرعي المنقول أو يتقلّص. وسيحتفظ أيضًا بأي مقياس صريح كان متوفّرًا قبل النقل.

تغييرات واجهة برمجة التطبيقات

  • تمت إزالة SessionCallbackProvider واستبدالها بـ SpatialCapabilities.

التغييرات الأخرى

  • تم خفض minSDK إلى 24. لا تزال جميع واجهات برمجة تطبيقات Jetpack XR تتطلّب استخدام المستوى 34 من واجهة برمجة التطبيقات أثناء التشغيل.
  • لم تعُد وظائف الإنشاء Orbiter EdgeOffset.inner وEdgeOffset.outer وEdgeOffset.overlap طرقًا @Composable، ما يسمح باستخدامها في السياقات غير القابلة للتركيب.
  • عدِّل مستويات الارتفاع المكاني لتتطابق مع أحدث مواصفات تجربة المستخدم.
  • تنفيذ واجهة SubspaceSemanticsInfo في MeasurableLayout
  • تمت إعادة تسمية SubspaceModifierElement إلى SubspaceModifierNodeElement.

إصلاح الأخطاء

  • إصلاحات لتحسين ثبات طلب SubspaceModifier من المفترض أن يعمل SubspaceModifier بشكل أكثر موثوقية. من المفترض أن يكون بإمكانك الآن استخدام المُعدِّل "إزاحة" و"تدوير" و"تصغير/تكبير" و"قابل للنقل" و"قابل لتغيير الحجم" بأي ترتيب.

الإصدار 1.0.0-alpha01

12 كانون الأول (ديسمبر) 2024

تم إصدار androidx.xr.compose:compose-*1.0.0-alpha01.

ميزات الإصدار الأولي

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

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

    • SpatialPanel: اللوحة المكانية هي مساحة فرعية قابلة للتجميع تتيح لك عرض محتوى التطبيق. على سبيل المثال، يمكنك عرض تشغيل الفيديو أو الصور الثابتة أو أي محتوى آخر في لوحة مكانية.

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

    • الحجم: يمكنك وضع عناصر SceneCore، مثل النماذج الثلاثية الأبعاد، بالنسبة إلى واجهة المستخدم.

  • التنسيق المكاني: يمكنك إنشاء عدة لوحات مكانية ووضعها ضمن تنسيق مكاني باستخدام SpatialRow وSpatialColumn وSpatialBox وSpatialLayoutSpacer. استخدِم SubspaceModifier لتخصيص التنسيق.

  • مكوّنات واجهة المستخدم المكانية: يمكن إعادة استخدام هذه العناصر في واجهة المستخدم ثنائية الأبعاد، ولن تكون سماتها المكانية مرئية إلا عند تفعيل الإمكانات المكانية.

    • SpatialDialog: سيتم دفع اللوحة للخلف قليلاً في العمق (z) لعرض مربّع حوار مرتفع.
    • SpatialPopUp: سيتم دفع اللوحة للخلف قليلاً في العمق (z) لعرض نافذة منبثقة مرتفعة.
    • SpatialElevation: يمكن ضبط SpatialElevationLevel لإضافة ارتفاع.
  • ‫SpatialCapabilities: يمكن أن تتغيّر الإمكانات المكانية عندما يتفاعل المستخدمون مع تطبيقك أو النظام، أو يمكن أن يغيّرها تطبيقك نفسه، على سبيل المثال، الانتقال إلى "المساحة الرئيسية" أو "المساحة الكاملة". لتجنُّب حدوث مشاكل، يجب أن يتحقّق تطبيقك من LocalSpatialCapabilities.current لتحديد واجهات برمجة التطبيقات المتوافقة في البيئة الحالية. ‫isSpatialUiEnabled: عناصر واجهة المستخدم المكانية (مثل SpatialPanel) isContent3dEnabled: الأجسام الثلاثية الأبعاد isAppEnvironmentEnabled: البيئة isPassthroughControlEnabled: ما إذا كان بإمكان التطبيق التحكّم في حالة السماح بالمرور isSpatialAudioEnabled: الصوت المكاني

المشاكل المعروفة

  • يجب حاليًا استخدام الإصدار 30 من حزمة تطوير البرامج (SDK) كحد أدنى لاستخدام Jetpack Compose مع تطبيقات الواقع المعزّز. كحل بديل، يمكنك إضافة إدخال البيان التالي <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> لتتمكّن من إنشاء التطبيق وتشغيله باستخدام الإصدار 23 من حزمة تطوير البرامج (SDK) كحد أدنى.
  • تتطلّب تطبيقات Jetpack XR حاليًا طلب إذن android.permission.SCENE_UNDERSTANDING في ملف AndroidManifest.
  • عند تشغيل تطبيق مباشرةً في "المساحة الكاملة" باستخدام السمة PROPERTY_XR_ACTIVITY_START_MODE في البيان، يتم فتح "الأنشطة" أو "التطبيقات" في البداية في "المساحة الرئيسية" قبل الانتقال إلى "المساحة الكاملة".
  • قد يلمع ملف glTF في "العناصر القابلة للتجميع في الحجم" في البداية في مكان غير صحيح.
  • سيؤدي استخدام SpatialDialog في لوحة تم نقلها بشكل كبير إلى دفع المحتوى في الاتجاه الخطأ.