جت‌پک برای XR آهنگسازی می‌کند

به صورت اعلانی طرح‌بندی‌های رابط کاربری فضایی بسازید که از قابلیت‌های فضایی اندروید XR بهره ببرند.
آخرین به‌روزرسانی انتشار پایدار کاندیدای انتشار انتشار بتا انتشار آلفا
۲۲ اکتبر ۲۰۲۵ - - - ۱.۰.۰-آلفا۰۸

اعلام وابستگی‌ها

برای افزودن یک وابستگی به XR compose، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، مخزن Maven گوگل را مطالعه کنید.

وابستگی‌های مربوط به مصنوعات مورد نیاز خود را در فایل build.gradle برای برنامه یا ماژول خود اضافه کنید:

شیار

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

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

کاتلین

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

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

برای اطلاعات بیشتر در مورد وابستگی‌ها، به «افزودن وابستگی‌های ساخت» مراجعه کنید.

بازخورد

بازخورد شما به بهبود Jetpack کمک می‌کند. اگر مشکلات جدیدی کشف کردید یا ایده‌هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد یک کتابخانه جدید، نگاهی به مشکلات موجود در این کتابخانه بیندازید. می‌توانید با کلیک بر روی دکمه ستاره، رأی خود را به یک مشکل موجود اضافه کنید.

ایجاد یک مسئله جدید

برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.

نسخه ۱.۰

نسخه ۱.۰.۰-آلفا۰۸

۲۲ اکتبر ۲۰۲۵

androidx.xr.compose:compose:1.0.0-alpha08 و androidx.xr.compose:compose-testing:1.0.0-alpha08 منتشر شدند. نسخه 1.0.0-alpha08 شامل این کامیت‌ها است.

تغییرات API

  • ResizePolicy تغییر دادیم تا onResizeStart ، onResizeUpdate و onResizeEnd بپذیرد. ( I7e21f )

رفع اشکالات

  • جلوگیری از خرابی هنگام از بین بردن یک فعالیت با استفاده از Subspace. ( I595a1 )

نسخه ۱.۰.۰-آلفا۰۷

۲۴ سپتامبر ۲۰۲۵

androidx.xr.compose:compose:1.0.0-alpha07 و androidx.xr.compose:compose-testing:1.0.0-alpha07 منتشر شدند. نسخه 1.0.0-alpha07 شامل این کامیت‌ها است.

تغییرات API

  • KDocs بهبود یافته برای SpatialMainPanel . ( I27b70 ، b/444467891 )
  • SpatialArrangement برای مرتب‌سازی عناصر فرزند در امتداد محور اصلی در طرح‌بندی‌های سه‌بعدی مانند SpatialRow و SpatialColumn معرفی شد. این API جدید گزینه‌های چیدمان آشنا از Compose دوبعدی، از جمله Start ، End ، Center ، SpaceBetween ، SpaceAround و SpaceEvenly را با پشتیبانی کامل از هر دو جهت طرح‌بندی LTR و RTL ارائه می‌دهد. ( I7db38 ، b/436289959 )
  • یک رابط پایه برای SubspaceModifier.Node اضافه شد تا ایمنی نوع و قابلیت استفاده از رابط‌های افزونه بهبود یابد؛ مانند
    • CompositionLocalConsumerSubspaceModifierNode
    • LayoutCoordinatesAwareModifierNode
    • SubspaceLayoutModifierNode
    • CoreEntityNode (داخلی) ( Iede00 ، b/440599394 ، b/440599394 )
  • SpatialExternalSurface بدون محدودیت ( I33315 ، b/439646773 )
  • SubspaceModifier به Subspace composables معرفی کنید و پارامتر constraints را با SubspaceModifier با SubspaceModifiers مرتبط با اندازه جایگزین کنید. اگر allowUnboundedSubspace برابر با true باشد، Subspaceها همچنان می‌توانند محدودیت‌های نامحدود داشته باشند. ( Ib06e6 , b/433331675 )
  • منسوخ کردن SubspaceModifiers متحرک و تغییر اندازه پذیر، اکنون که DragPolicy() و ResizePolicy() بخشی از API های SpatialPanel و SpatialExternalSurface هستند ( I397bf ، b/437924639 )
  • پشتیبانی از LayoutDirection در طرح‌بندی‌های فضایی اضافه شد. Composable با استفاده از SpatialAlignment اکنون عناصر را به درستی در هر دو زمینه چپ به راست و راست به چپ قرار می‌دهد. ( I964bb , b/436300273 )
  • پارامترهای Resizable و Movable را به APIهای Panel اضافه کنید تا مطمئن شوید که این رفتارها فقط می‌توانند روی کانتینرهای پشتیبانی‌شده اعمال شوند. ( Id491c )
  • SubspaceModifiers sizeIn ، widthIn ، heightIn ، depthIn اضافه شدند که به شما امکان می‌دهند محدودیت‌های حداقل و حداکثر دقیقی را برای عرض، ارتفاع و عمق تعیین کنید. ( I1af09 ، b/433330761 )

نسخه ۱.۰.۰-alpha06

۱۳ آگوست ۲۰۲۵

androidx.xr.compose:compose:1.0.0-alpha06 و androidx.xr.compose:compose-testing:1.0.0-alpha06 منتشر شدند. نسخه 1.0.0-alpha06 شامل این کامیت‌ها است.

رفع اشکالات

  • وقتی مالک چرخه حیات از بین می‌رود، ComposeXrOwnerLocals دوباره ایجاد کن. ( 9123ce1 )

نسخه ۱.۰.۰-آلفا۰۵

۳۰ ژوئیه ۲۰۲۵

androidx.xr.compose:compose:1.0.0-alpha05 و androidx.xr.compose:compose-testing:1.0.0-alpha05 منتشر شدند. نسخه 1.0.0-alpha05 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • کلاس حاشیه‌نویسی SubspaceComposable را عمومی کرد. ( Ic2a34 ، b/399432430 )
  • دو ترکیب‌پذیر جدید SpatialExternalSurface که نمایانگر کره‌های ۱۸۰ و ۳۶۰ درجه هستند. ( I40ef2 ، b/391705799 )
  • SubspaceModifier.aspectRatio اضافه شد ( Ide5ab ، b/399729509 ، b/414762147 )
  • رابط برنامه‌نویسی کاربردی SceneCoreEntity برای بهبود قابلیت همکاری بین SceneCore و Compose برای XR اضافه شد. ( I50bb3 ، b/423020989 )
  • API GravityAlignedsubspace برای پشتیبانی از ویژگی مقیاس‌بندی نشده و GravityAligned ( I07359 ) ارائه داد.

تغییرات API

  • SpatialDialog() از پیکربندی مطبوعات SpatialDialogProperties.dismissOnBack پیروی خواهد کرد. ( Ib453b ، b/416797132 )
  • minimumPanelDimension به اندازه ابعاد پیش‌فرض جدید Dimensions(0.1f, 0.1f, 0.1f) به‌روزرسانی کنید، زیرا واحد آن متر است. ( Ib852a )
  • Subspaceها و Orbiters اکنون وضعیت داخلی خود را در فضای خانه و زمانی که برنامه در پس‌زمینه است، حفظ می‌کنند. در حالت فضای خانه، Subspace همچنان صحنه خود را برای آماده‌سازی برای تغییر به حالت فضای کامل تنظیم می‌کند. ( I40317 ، b/416037751 )
  • SpatialDialogs اکنون وضعیت خود را وقتی برنامه در پس‌زمینه است حفظ می‌کند. ( I6aa56 )
  • ApplicationSubspace اکنون مقیاس و موقعیت پیشنهادی خود را از سیستم به ارث می‌برد. ( I4565f , b/418834194 )
  • یک پیام خطای بهتر اضافه شد و وقتی SubspaceComposable در یک زمینه غیر SubspaceComposable استفاده می‌شود، خطا زودتر فعال می‌شود. ( Iee2ae ، b/416484684 )
  • به‌روزرسانی ExperimentalSubspaceVolumeApi از Warning به Error زیرا هشدارها اغلب هنگام استفاده نادرست از APIهای قابل ترکیب نادیده گرفته می‌شوند. ( I427aa , b/424864286 )
  • Subspace و ApplicationSubspace اکنون توسط recommendedContentBoxInFullSpace محدود شده‌اند. قبلاً توسط Field of View مربوط به SpatialUser محدود می‌شد. ( I41015 , b/423074142 )
  • SpatialElevation به‌روزرسانی کنید تا از حداقل اندازه استفاده کند و دیگر از اندازه‌ی کدگذاری‌شده‌ی ثابت ( I2dbe6 ، b/427785338 ) استفاده نکند.
  • به‌روزرسانی نحوه‌ی اسکریم کردن SpatialAcitivityPanel برای به‌روزرسانی هنگام تغییر یک متغیر کلیدی. ( I0f64d , b/427999029 )
  • VolumeConstraints.Unbounded حذف کنید و مقادیر پیش‌فرض محدودیت را معادل آن قرار دهید. ( Ie24ec ، b/407938414 )
  • SpatialFeatheringSize دیگر عمومی نیست ( I1c15b , b/399432430 )
  • نام XR Placeable به SubspacePlaceable تغییر داد تا آن را از Placeable مربوط به Compose متمایز کند. ( I74874 )
  • حذف تنظیمات Orbiter و اضافه کردن shouldRenderInNonSpatial به عنوان یک پارامتر جدید. علاوه بر این، حذف کلاس EdgeOffset و اضافه کردن orbiterOffsetType به عنوان یک پارامتر جدید برای ادغام توابع Orbiter() . و همچنین تغییر نام OrbiterEdge به ContentEdge . ( Iebf3d )
  • برای تمایز این نوع از نوع Measurable در Compose، نام Measurable به SubspaceMeasurable تغییر یافت. ( I9726c )
  • تغییر نام MeasureResult به SubspaceMeasureResult ( I9f34d )
  • API setSubspaceContent حذف شد و به جای آن از setContent مربوط به Compose با یک Subspace composable استفاده شد. ( Ifff4c , b/421427391 , b/421427391 )
  • MeasurePolicy به SubspaceMeasurePolicy تغییر نام داده شده است. ( I37a9b , b/422553904 )
  • SubspaceSemanticsInfo به یک رابط مهر و موم شده تبدیل کنید زیرا بدون پیش‌فرض‌ها قادر به اضافه کردن اعضا نخواهیم بود. ( I372f9 , b/423704068 )
  • مستندات SpatialExternalSurface به‌روزرسانی شد، و ContentSecurityLevel به SurfaceProtection تغییر نام داد ( I3c460 ، b/420982808 )
  • سازنده‌ی overload شده‌ای برای اصلاح‌کننده‌ی متحرک ارائه شده است که امکان لنگر انداختن را فراهم می‌کند. ( Ic0c70 )
  • ارائه‌دهنده موقعیت بیشتری برای راهنماهای ابزار اضافه کنید تا توسعه‌دهندگان بتوانند کنترل کنند که آیا راهنما در بالا، پایین، چپ یا راست لنگر قرار می‌گیرد یا خیر. یک API اضافه کنید که برای caretها یک شکل می‌گیرد، تا شکل‌های سفارشی بیشتری ارائه شود. ( Ie513c ، b/374766087 ، b/418854637 )
  • CoreEntity به عنوان یک PublishedApi حذف شد ( Ifee05 )

رفع اشکالات

  • مشکل چشمک زدن SpatialDialog هنگام رندر شدن برطرف شد. ( Ife73c ، b/401619909 )
  • مشکلی که باعث می‌شد SpatialDialog نتواند پنل فعالیت را اسکریم کند، برطرف شد. ( I8ca6c ، b/367442109 )
  • رفع مشکل عدم نمایش برخی از محتوا در کادر محاوره‌ای XR ( I17cd5 ، b/418062437 )
  • مشکلی که باعث می‌شد SpatialPopup هنگام کلیک درون محتوا بسته شود، برطرف شد. ( If262c ، b/417245722 )
  • مشکلی که باعث می‌شد هنگام زنجیره‌سازی resizable().movable() SpatialPanel نتواند به درستی به اندازه جدید تغییر اندازه دهد، برطرف شد. ( I02ee3 , b/422264230 )
  • مشکل همپوشانی topBar با منو در SpatialComposeVideoPlayer ( Id33bc ، b/427168167 ) برطرف شد.
  • رفع مشکل رندر نشدن شعاع گوشه ( I975fe ، b/428261830 )

نسخه ۱.۰.۰-آلفا۰۴

۷ مه ۲۰۲۵

androidx.xr.compose:compose:1.0.0-alpha04 و androidx.xr.compose:compose-testing:1.0.0-alpha04 منتشر شدند. نسخه 1.0.0-alpha04 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • رابط CompositionLocalConsumerSubspaceModifierNode اضافه شد تا به انواع سفارشی SubspaceModifier اجازه دسترسی به مقادیر محلی ترکیب داده شود.
  • یک API جدید SpatialPanel اضافه شده است که از سبک پیاده‌سازی Compose AndroidView پیروی می‌کند و ViewBased SpatialPanel قبلی را منسوخ می‌کند.
  • شیء همراه VolumeConstraints.Unbounded که نشان‌دهنده‌ی محدودیت‌های نامحدود است، اضافه شد.
  • SubspaceModifier.onPointSourceParams اضافه شد تا امکان استفاده از منبع صوتی فضایی فراهم شود.
  • یک ApplicationSubspace عمومی اضافه شده است که VolumeConstraints اختیاری را برای تعریف یک ناحیه سه‌بعدی که برنامه می‌تواند محتوای مکانی را در آن رندر کند، ارائه می‌دهد. به طور پیش‌فرض، اگر هیچ محدودیتی مشخص نشده باشد، Subspace توسط میدان دید فعلی SpatialUser در عرض و ارتفاع محدود می‌شود. کاربران می‌توانند محدودیت‌هایی را برای استفاده در صورتی که میدان دید قابل تعیین نباشد، ارائه دهند. در غیر این صورت، از مقادیر پیش‌فرض عرض و ارتفاع میدان دید استفاده می‌شود.
  • SpatialExternalSurface اضافه شد که می‌تواند برای رندر محتوای استریوسکوپیک استفاده شود. SpatialExternalSurface با اصلاح‌کننده‌ها (به جز آلفا) و یک جلوه پر کردن لبه قابل تنظیم است.
  • یک اصلاح‌کننده‌ی زیرفضای جدید برای pointerHoverIcon اضافه شده است که به کاربران اجازه می‌دهد آیکون را برای اشاره‌گر فضایی تنظیم کنند.

تغییرات API

  • محدودیت RequiresApi(34) از روی تمام بسته‌های Jetpack XR حذف شد. این محدودیت اضافی بود زیرا Jetpack XR در حال حاضر فقط روی دستگاه‌هایی با سطح API 34+ در دسترس است. ( Iae0f8 )
  • پروژه‌هایی که با کاتلین ۲.۰ منتشر شده‌اند، برای استفاده به KGP ۲.۰.۰ یا جدیدتر نیاز دارند. ( IDb6b5 )
  • اکنون مدیریت بازگشتی روی پنل‌های مکانی بدون فعالیت‌های تعبیه‌شده کار خواهد کرد. برای اینکه مدیریت بازگشتی کار کند، باید android:enableOnBackInvokedCallback="true" در مانیفست اندروید مشخص کنید.
  • اکنون Backhandling روی دیالوگ‌های مکانی کار خواهد کرد. برای اینکه backhandling کار کند، باید android:enableOnBackInvokedCallback="true" در مانیفست اندروید مشخص کنید.
  • SpatialPanel های مبتنی بر Compose و View اکنون می‌توانند بر اساس محتویاتشان اندازه خود را تغییر دهند.
  • توسعه‌دهندگان اکنون می‌توانند مقادیر SpatialElevationLevel سفارشی خود را تنظیم کنند و محدود به سطوح از پیش تعریف‌شده نیستند.
  • اکنون می‌توان سطح ارتفاع مدارگرد را از طریق پارامتر elevation سفارشی‌سازی کرد.
  • اکنون می‌توان به طور پیش‌فرض، زیرفضا را با میدان دید SpatialUser در عرض و ارتفاع محدود کرد. اگر میدان دید قابل تعیین نباشد، از مقادیر پیش‌فرض عرض و ارتفاع میدان دید استفاده می‌شود.
  • فراخوانی‌های جدید onMoveStart و onMoveEnd به اصلاحگر Movable اضافه شد. فراخوانی‌های onMoveStart و onMoveEnd زمانی فراخوانی می‌شوند که کاربر حرکت یک زیرفضای قابل ترکیب با اصلاحگر movable را شروع و پایان می‌دهد.
  • پارامتر name از APIهای مکانی مانند SpatialRow و SpatialPanel حذف شده است. برای اشکال‌زدایی درخت‌های ترکیب مکانی، به جای آن SubspaceModifier.testTag استفاده کنید.
  • یک سربار پشتیبانی نشده از SpatialPopup که فقط spatialElevationLevel و content دارد، حذف شد. لطفاً از رابطی استفاده کنید که onDimissRequest پشتیبانی می‌کند.
  • تابع فراخوانی onPoseChange از اصلاحگر Movable حذف شده است. به جای آن onMove استفاده کنید.
  • اگر SubspaceModifiers جدا شده باشند یا در حال جدا شدن باشند، دیگر اثرات خود را اعمال نخواهند کرد.
  • رابط برنامه‌نویسی کاربردی (API) موجود SpatialRow به SpatialRow و SpatialCurvedRow تقسیم شده است. اگر قبلاً از پارامتر curveRadius مربوط به SpatialRow استفاده می‌کردید، اکنون از SpatialCurvedRow استفاده کنید که همان رفتار را ارائه می‌دهد.
  • MainPanel و ActivityPanel دیگر هنگام اجرا روی یک تصویر سیستم مشابه اخیر، نوارهای عنوان ندارند.
  • اصلاح‌کننده‌های آلفا و مقیاس اکنون قابل انباشت هستند و مقادیر خود را برای مقدار آلفا یا مقیاس نهایی اعمال شده در هم ضرب می‌کنند.
  • تابع فراخوانی onPoseChange از اصلاح‌کننده‌ی Movable بهینه‌سازی شده است تا حرکت پوز (position) را روان‌تر انجام دهد.
  • اصلاح‌کننده‌های قابل جابجایی و قابل تغییر اندازه اکنون فراخوانی‌های خود را در نخ اصلی انجام می‌دهند تا اطمینان حاصل شود که تغییرات حالت، ترکیب مجدد را آغاز می‌کنند.
  • مشاهده وضعیت به مراحل طرح‌بندی و اندازه‌گیری اضافه شد تا اطمینان حاصل شود که تغییرات وضعیت در SubspaceLayout باعث فعال شدن رله می‌شود.
  • به‌روزرسانی‌های زنجیره اصلاح‌کننده بهینه‌شده برای استفاده مجدد بهتر از اصلاح‌کننده‌های موجود.

رفع اشکالات

  • وقتی SpatialDialog نمایش داده می‌شود، اسکریمینگ متوقف می‌شود. ( Ic4594 )
  • درخواست‌های رله‌ای که در حین جدا شدن گره‌های اصلاح‌کننده انجام می‌شوند، اکنون نادیده گرفته می‌شوند.
  • فازهای رله‌ای که توسط اصلاح‌کننده‌های Movable و Resizable فعال می‌شدند، حذف شدند.
  • مشکل از کار افتادن در MainPanel() که هنگام صفر کردن هر یک از ابعاد، چه مستقیماً و چه در حین محاسبه طرح‌بندی، مثلاً محاسبه SpatialRow/SpatialColumn رخ می‌داد، برطرف شد. اکنون پنل به جای آن پنهان خواهد شد. توجه داشته باشید که این اصلاحیه به طور خاص به رفع مشکلات از کار افتادن در طول مرحله طرح‌بندی می‌پردازد؛ تغییر اندازه پنل به صفر از طریق تعامل با کاربر به طور جداگانه انجام خواهد شد. پنل پنهان فاقد رابط کاربری کارآمد است.
  • مشکل مربوط به maintainAspectRatio از اصلاحگر resizable برطرف شد. نسبت ابعاد اکنون باید حفظ شود.
  • مشکلی که در آن زیرفضاهای تو در تو، در یک فریم واحد به اشتباه در جای خود قرار می‌گرفتند، برطرف شد.
  • مشکلی که باعث می‌شد گوشه‌های گرد گاهی اوقات در زمان مناسب اعمال نشوند، برطرف شد.
  • دیگر برای یک فریم در مکان اشتباه، NestedSubspaces ظاهر نمی‌شوند.

نسخه ۱.۰.۰-آلفا۰۳

۲۶ فوریه ۲۰۲۵

androidx.xr.compose:compose:1.0.0-alpha03 و androidx.xr.compose:compose-testing:1.0.0-alpha03 بدون هیچ تغییر قابل توجهی از آخرین نسخه آلفا منتشر شده‌اند. نسخه 1.0.0-alpha03 شامل این کامیت‌ها است.

نسخه ۱.۰.۰-آلفا۰۲

۱۲ فوریه ۲۰۲۵

androidx.xr.compose:compose:1.0.0-alpha02 و androidx.xr.compose:compose-testing:1.0.0-alpha02 منتشر شدند. نسخه 1.0.0-alpha02 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • پنل فعالیت اکنون می‌تواند محتوای خود را هنگام فعال شدن یک گفتگوی مکانی، scrim کند.
  • API Orbiter اکنون در زمینه‌های SubspaceComposable قابل استفاده است و Orbiterها را به نزدیکترین والد قابل ترکیب مبتنی بر SubspaceLayout خود متصل می‌کند.
  • LayoutCoordinatesAwareModifierNode برای امکان استفاده از اصلاح‌کننده‌های سفارشی مبتنی بر موقعیت‌یابی معرفی شد.
  • متدهای چرخه عمر attach/detach به SubspaceModifier.Node اضافه شد.
  • scaleWithDistance به اصلاح‌کننده‌ی متحرک اضافه شد. وقتی scaleWithDistance فعال باشد، عنصر زیرفضای جابجا شده بزرگ یا کوچک می‌شود. همچنین هر مقیاس صریحی را که قبل از جابجایی داشته است، حفظ می‌کند.

تغییرات API

  • SessionCallbackProvider به نفع SpatialCapabilities حذف شد.

تغییرات دیگر

  • کاهش minSDK به ۲۴. تمام APIهای Jetpack XR همچنان در زمان اجرا به API ۳۴ نیاز دارند.
  • سازنده‌های Orbiter EdgeOffset.inner ، EdgeOffset.outer و EdgeOffset.overlap دیگر متدهای @Composable نیستند، که به آنها اجازه می‌دهد در زمینه‌های غیر قابل ترکیب استفاده شوند.
  • به‌روزرسانی سطوح ارتفاعی مکانی برای مطابقت با آخرین مشخصات UX.
  • رابط SubspaceSemanticsInfo را در MeasurableLayout پیاده‌سازی کنید.
  • نام SubspaceModifierElement به SubspaceModifierNodeElement تغییر یافت.

رفع اشکالات

  • اصلاحاتی برای تثبیت ترتیب SubspaceModifier . SubspaceModifier باید با اطمینان بیشتری رفتار کند. اکنون می‌توان از اصلاح‌کننده‌های offset، rotate، scale، movable و resizable در هر ترتیبی استفاده کرد.

نسخه ۱.۰.۰-آلفا۰۱

۱۲ دسامبر ۲۰۲۴

androidx.xr.compose:compose-*1.0.0-alpha01 منتشر شد.

ویژگی‌های انتشار اولیه

  • نسخه اولیه توسعه‌دهندگان Jetpack Compose برای XR. از مفاهیم آشنای Compose مانند ردیف‌ها و ستون‌ها برای ایجاد طرح‌بندی‌های رابط کاربری فضایی در XR استفاده کنید، چه در حال انتقال یک برنامه دوبعدی موجود به XR باشید و چه یک برنامه XR جدید را از ابتدا ایجاد کنید. این کتابخانه زیرفضاها و ترکیب‌های فضایی را ارائه می‌دهد: مانند پنل‌های فضایی و مدارگردها، که به شما امکان می‌دهند ترکیب دوبعدی موجود یا رابط کاربری مبتنی بر نماها را در یک طرح‌بندی فضایی قرار دهید. این کتابخانه زیرفضاهای حجمی را معرفی می‌کند که به شما امکان می‌دهد موجودیت‌های SceneCore، مانند مدل‌های سه‌بعدی، را نسبت به رابط کاربری خود قرار دهید. در این راهنمای توسعه‌دهندگان بیشتر بیاموزید:

    • Subspace : این ترکیب‌پذیر را می‌توان در هر جایی از سلسله مراتب رابط کاربری برنامه شما قرار داد و به شما امکان می‌دهد طرح‌بندی‌های رابط کاربری دوبعدی و فضایی را بدون از دست دادن زمینه بین فایل‌ها حفظ کنید. این امر اشتراک‌گذاری چیزهایی مانند معماری برنامه موجود بین XR و سایر عوامل فرم را بدون نیاز به انتقال وضعیت در کل درخت رابط کاربری یا معماری مجدد برنامه، آسان‌تر می‌کند.

    • SpatialPanel : یک پنل فضایی یک زیرفضای قابل ترکیب است که به شما امکان نمایش محتوای برنامه را می‌دهد - برای مثال، می‌توانید پخش ویدیو، تصاویر ثابت یا هر محتوای دیگری را در یک پنل فضایی نمایش دهید.

    • مدارگرد : یک مدارگرد یک کامپوننت رابط کاربری فضایی است. این کامپوننت طوری طراحی شده است که به یک پنل فضایی مربوطه متصل شود و شامل آیتم‌های ناوبری و اقدامات زمینه‌ای مرتبط با آن پنل فضایی است. برای مثال، اگر یک پنل فضایی برای نمایش محتوای ویدیویی ایجاد کرده‌اید، می‌توانید کنترل‌های پخش ویدیو را درون یک مدارگرد اضافه کنید.

    • حجم : موجودیت‌های SceneCore، مانند مدل‌های سه‌بعدی، را نسبت به رابط کاربری خود قرار دهید.

  • طرح‌بندی فضایی: شما می‌توانید چندین پنل فضایی ایجاد کنید و آن‌ها را با استفاده SpatialRow ، SpatialColumn ، SpatialBox و SpatialLayoutSpacer درون یک طرح‌بندی فضایی قرار دهید. از SubspaceModifier برای سفارشی‌سازی طرح‌بندی خود استفاده کنید.

  • اجزای رابط کاربری فضایی: این عناصر می‌توانند در رابط کاربری دوبعدی شما دوباره استفاده شوند و ویژگی‌های مکانی آنها فقط زمانی قابل مشاهده خواهد بود که قابلیت‌های مکانی فعال باشند.

    • SpatialDialog : پنل در عمق z کمی به عقب هل داده می‌شود تا یک کادر محاوره‌ای با ارتفاع بالا نمایش داده شود.
    • SpatialPopUp : پنل در عمق z کمی به عقب فشار داده می‌شود تا یک پنجره بازشو در ارتفاع بالا نمایش داده شود.
    • SpatialElevation : می‌توان SpatialElevationLevel برای افزودن ارتفاع تنظیم کرد.
  • SpatialCapabilities: قابلیت‌های فضایی می‌توانند با تعامل کاربران با برنامه یا سیستم شما تغییر کنند، یا حتی می‌توانند توسط خود برنامه شما تغییر کنند - برای مثال، انتقال به Home Space یا Full Space. برای جلوگیری از مشکلات، برنامه شما باید LocalSpatialCapabilities.current را بررسی کند تا مشخص شود کدام APIها در محیط فعلی پشتیبانی می‌شوند. isSpatialUiEnabled : عناصر رابط کاربری فضایی (مثلاً SpatialPanel) isContent3dEnabled : اشیاء سه‌بعدی isAppEnvironmentEnabled : محیط isPassthroughControlEnabled : اینکه آیا برنامه می‌تواند وضعیت عبور را کنترل کند یا خیر isSpatialAudioEnabled : صدای فضایی

مشکلات شناخته شده

  • در حال حاضر برای استفاده از Jetpack Compose برای XR، به minSDK با مقدار 30 نیاز است. به عنوان یک راه حل، می‌توانید ورودی مانیفست زیر را اضافه کنید <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> تا بتوانید با minSDK با مقدار 23 بسازید و اجرا کنید.
  • برنامه‌های Jetpack XR در حال حاضر نیاز به درخواست مجوز android.permission.SCENE_UNDERSTANDING در AndroidManifest دارند.
  • وقتی یک برنامه با استفاده از ویژگی PROPERTY_XR_ACTIVITY_START_MODE در مانیفست خود، مستقیماً در فضای کامل (Full Space) اجرا می‌شود، فعالیت‌ها/برنامه‌ها ابتدا در فضای خانه (Home Space) باز می‌شوند و سپس به فضای کامل (Full Space) منتقل می‌شوند.
  • glTFها در Volume Composableها ممکن است در ابتدا در مکان اشتباهی سوسو بزنند.
  • استفاده از SpatialDialog در پنلی که به طور قابل توجهی جابجا شده است، محتوا را در جهت اشتباه هدایت می‌کند.