Jetpack Compose برای XR
آخرین به روز رسانی | انتشار پایدار | کاندید را آزاد کنید | نسخه بتا | انتشار آلفا |
---|---|---|---|---|
7 مه 2025 | - | - | - | 1.0.0-alpha04 |
اعلام وابستگی ها
برای افزودن وابستگی به XR compose، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، مخزن Maven Google را بخوانید.
وابستگیهای مصنوعات مورد نیاز خود را در فایل build.gradle
برای برنامه یا ماژول خود اضافه کنید:
dependencies { implementation "androidx.xr.compose:compose:1.0.0-alpha04" // Use to write unit tests testImplementation "androidx.xr.compose:compose-testing:1.0.0-alpha04" }
dependencies { implementation("androidx.xr.compose:compose:1.0.0-alpha04") // Use to write unit tests testImplementation("androidx.xr.compose:compose-testing:1.0.0-alpha04") }
برای اطلاعات بیشتر درباره وابستگیها، به افزودن وابستگیهای ساخت نگاه کنید.
بازخورد
بازخورد شما به بهتر شدن Jetpack کمک می کند. اگر مسائل جدیدی کشف کردید یا ایده هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد کتابخانه جدید، به مسائل موجود در این کتابخانه نگاهی بیندازید. با کلیک کردن روی دکمه ستاره می توانید رای خود را به یک موضوع موجود اضافه کنید.
برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.
نسخه 1.0
نسخه 1.0.0-alpha04
7 مه 2025
androidx.xr.compose:compose:1.0.0-alpha04
و androidx.xr.compose:compose-testing:1.0.0-alpha04
منتشر شده است. نسخه 1.0.0-alpha04 حاوی این تعهدات است.
ویژگی های جدید
- رابط
CompositionLocalConsumerSubspaceModifierNode
اضافه شد تا به انواعSubspaceModifier
سفارشی اجازه دسترسی به مقادیر محلی ترکیب را بدهد. - یک
SpatialPanel
API جدید اضافه شد که از سبک پیادهسازیAndroidView
پیروی میکند و ازViewBased SpatialPanel
قبلی منسوخ میشود. - اضافه شدن
VolumeConstraints.Unbounded
شی همراه که نشان دهنده محدودیت های نامحدود است. -
SubspaceModifier.onPointSourceParams
اضافه شد تا به منبع صوتی فضایی اجازه دهد. - یک
ApplicationSubspace
عمومی اضافه شده است، کهVolumeConstraints
اختیاری را برای تعریف یک منطقه سه بعدی که در آن برنامه می تواند محتوای فضایی را ارائه کند، ارائه می دهد. بهطور پیشفرض، اگر هیچ محدودیتی مشخص نشده باشد، فضای فرعی با میدان دید فعلیSpatialUser
در عرض و ارتفاع محدود میشود. در صورتی که میدان دید قابل تعیین نباشد، کاربران می توانند محدودیت هایی را برای استفاده از آنها ارائه کنند. در غیر این صورت، از مقادیر عرض و ارتفاع میدان دید پیش فرض استفاده می شود. -
SpatialExternalSurface
اضافه شده است که می تواند برای ارائه محتوای استریوسکوپی استفاده شود.SpatialExternalSurface
با اصلاح کننده ها (به جز آلفا) و جلوه پر لبه قابل تنظیم است. - یک اصلاح کننده زیرفضای
pointerHoverIcon
جدید اضافه شده است که به کاربران اجازه می دهد نماد را برای نشانگر فضایی تنظیم کنند.
تغییرات API
- محدودیت
RequiresApi(34)
در تمام بستههای Jetpack XR حذف شد. این محدودیت اضافی بود زیرا Jetpack XR در حال حاضر فقط در دستگاههایی با سطح API 34+ در دسترس است. ( Iae0f8 ) - پروژههایی که با Kotlin 2.0 منتشر میشوند برای مصرف نیاز به KGP 2.0.0 یا جدیدتر دارند. ( Idb6b5 )
- کنترل پشتی اکنون روی پانل های فضایی بدون فعالیت های تعبیه شده کار می کند. برای اینکه مدیریت برگشت کار کند، باید
android:enableOnBackInvokedCallback="true"
در مانیفست اندروید مشخص کنید. - Backhandling اکنون روی گفتگوهای فضایی کار می کند. برای اینکه بک هندلینگ کار کند، باید
android:enableOnBackInvokedCallback="true"
در مانیفست اندروید مشخص کنید. -
SpatialPanel
های مبتنی بر Compose و View-based اکنون می توانند اندازه خود را بر اساس محتویاتشان اندازه بگیرند. - توسعه دهندگان اکنون می توانند مقادیر
SpatialElevationLevel
سفارشی خود را تنظیم کنند و محدود به سطوح از پیش تعریف شده نیستند. - اکنون ممکن است سطح ارتفاع مدارگرد از طریق پارامتر
elevation
تنظیم شود. - اکنون زیرفضا می تواند به صورت پیش فرض توسط میدان دید
SpatialUser
در عرض و ارتفاع محدود شود. اگر نمی توان میدان دید را تعیین کرد، از مقادیر پیش فرض عرض و ارتفاع میدان دید استفاده می شود. - تماسهای جدید
onMoveStart
وonMoveEnd
به اصلاحکنندهMovable
اضافه شد. تماسهایonMoveStart
وonMoveEnd
زمانی فراخوانی میشوند که کاربر حرکت یک زیرفضای قابل ترکیب با تغییر دهنده متحرک را شروع و پایان میدهد. - پارامتر
name
از APIهای فضایی مانندSpatialRow
وSpatialPanel
حذف شده است. برای اشکال زدایی درختان ترکیب فضایی ازSubspaceModifier.testTag
استفاده کنید. - یک بار اضافی پشتیبانی نشده از
SpatialPopup
که فقط دارایspatialElevationLevel
وcontent
بود حذف شد. لطفاً از رابطی استفاده کنید کهonDimissRequest
پشتیبانی می کند. - پاسخ تماس
onPoseChange
از اصلاح کننده Movable حذف شده است. به جای آن ازonMove
استفاده کنید. -
SubspaceModifiers
اگر جدا شده باشند یا در حال حاضر جدا شوند دیگر جلوه های خود را اعمال نمی کنند. -
SpatialRow
API موجود بهSpatialRow
وSpatialCurvedRow
تقسیم شده است. اگر قبلاً از پارامترcurveRadius
SpatialRow
استفاده می کردید، اکنون به جای آنSpatialCurvedRow
استفاده کنید که همان رفتار را ارائه می دهد. -
MainPanel
وActivityPanel
وقتی روی یک تصویر سیستم مشابه اخیر اجرا می شوند، دیگر نوار عنوان ندارند. - اصلاحکنندههای آلفا و مقیاس اکنون قابل انباشته شدن هستند و مقادیر خود را برای آلفای اعمال شده نهایی یا مقدار مقیاس ضرب میکنند.
- پاسخ تماس
onPoseChange
از اصلاح کننده Movable بهینه شده است تا حرکات پوزی نرمتر را انجام دهد. - اصلاحکنندههای متحرک و قابل تغییر اندازه، اکنون تماسهای خود را روی رشته اصلی انجام میدهند تا اطمینان حاصل کنند که تغییرات حالت باعث ترکیب مجدد میشود.
- مشاهده وضعیت به طرح و مراحل اندازه گیری اضافه شد تا اطمینان حاصل شود که تغییرات حالت در
SubspaceLayout
باعث ایجاد رله می شود. - بهروزرسانیهای زنجیره اصلاحکننده برای استفاده مجدد بهتر از اصلاحکنندههای موجود.
رفع اشکال
- هنگامی که
SpatialDialog
نشان داده میشود، قیام کردن متوقف شد. ( IC4594 ) - درخواستهای تغییر شکلی که هنگام جدا شدن گرههای اصلاحکننده انجام میشوند، اکنون نادیده گرفته میشوند.
- حذف فازهای رلهای که توسط اصلاحکنندههای Movable و Resizable فعال شدهاند.
- یک خرابی در
MainPanel()
composable که زمانی رخ داد که هر یک از ابعاد به طور مستقیم یا در حین محاسبه طرحبندی، به عنوان مثال، یک محاسبهSpatialRow/SpatialColumn
روی صفر تنظیم شد. اکنون پانل به جای آن پنهان می شود. توجه داشته باشید که این اصلاح به طور خاص به خرابی ها در مرحله طرح بندی می پردازد. تغییر اندازه پنل به صفر از طریق تعامل کاربر به طور جداگانه انجام می شود. پانل مخفی فاقد امکانات رابط کاربری است. - مشکل
maintainAspectRatio
از اصلاح کننده قابل تغییر سایز برطرف شد. نسبت ابعاد باید در حال حاضر حفظ شود. - مشکلی در زیر فضاهای تودرتو که در آن به اشتباه برای یک فریم قرار می گرفتند، رفع شد.
- مشکلی که گوشههای گرد گاهی اوقات در زمانی که باید اعمال نمیشد، برطرف شد.
-
NestedSubspaces
دیگر برای یک فریم در مکان اشتباه ظاهر نمی شود.
نسخه 1.0.0-alpha03
26 فوریه 2025
androidx.xr.compose:compose:1.0.0-alpha03
و androidx.xr.compose:compose-testing:1.0.0-alpha03
بدون هیچ تغییر قابل توجهی از آخرین آلفا منتشر شده اند. نسخه 1.0.0-alpha03 حاوی این commit ها است
نسخه 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
API اکنون در زمینههایSubspaceComposable
قابل استفاده است و Orbiters را به نزدیکترین والد composable مبتنی برSubspaceLayout
متصل میکند. -
LayoutCoordinatesAwareModifierNode
معرفی کرد تا به اصلاح کننده های مبتنی بر موقعیت یابی سفارشی اجازه دهد. - روشهای چرخه حیات پیوست/جدا کردن به
SubspaceModifier.Node
اضافه شد. -
scaleWithDistance
به اصلاح کننده متحرک اضافه شد. وقتیscaleWithDistance
فعال باشد، عنصر زیرفضای منتقل شده رشد یا کوچک می شود. همچنین هر مقیاس صریحی را که قبل از حرکت داشت حفظ می کند.
تغییرات API
-
SessionCallbackProvider
به نفعSpatialCapabilities
حذف شد.
تغییرات دیگر
-
minSDK
به 24 کاهش داد. همه APIهای Jetpack XR همچنان به API 34 در زمان اجرا نیاز دارند. - سازندگان
Orbiter
EdgeOffset.inner
،EdgeOffset.outer
وEdgeOffset.overlap
دیگر متدهای@Composable
نیستند، که به آنها اجازه می دهد در زمینه های غیرقابل ترکیب استفاده شوند. - سطوح ارتفاع مکانی را برای مطابقت با آخرین مشخصات UX به روز کنید.
- رابط
SubspaceSemanticsInfo
را درMeasurableLayout
پیاده سازی کنید. -
SubspaceModifierElement
بهSubspaceModifierNodeElement
تغییر نام داد.
رفع اشکال
- رفع تثبیت سفارش
SubspaceModifier
.SubspaceModifier
باید قابل اعتمادتر رفتار کند. اصلاح کننده افست، چرخش، مقیاس، متحرک و قابل تغییر اندازه اکنون باید به هر ترتیبی قابل استفاده باشد.
نسخه 1.0.0-alpha01
12 دسامبر 2024
androidx.xr.compose:compose-*1.0.0-alpha01
منتشر شد.
ویژگی های Initial Release
انتشار اولیه توسعه دهنده Jetpack Compose برای XR. از مفاهیم آشنای Compose مانند سطرها و ستونها برای ایجاد طرحبندیهای UI فضایی در XR استفاده کنید، چه در حال انتقال یک برنامه دو بعدی موجود به XR یا ایجاد یک برنامه XR جدید از ابتدا باشید. این کتابخانه زیرفضا و قابلیتهای فضایی را فراهم میکند: مانند پانلهای فضایی و مدارگردها، که به شما امکان میدهند UI دو بعدی یا مبتنی بر Views خود را در یک طرحبندی فضایی قرار دهید. زیرفضای Volume composable را معرفی می کند که به شما امکان می دهد موجودیت های SceneCore مانند مدل های سه بعدی را نسبت به رابط کاربری خود قرار دهید. در این راهنمای توسعه دهنده بیشتر بیاموزید:
Subspace
: این قابل ترکیب را می توان در هر جایی در سلسله مراتب UI برنامه شما قرار داد، به شما این امکان را می دهد که طرح بندی ها را برای UI دو بعدی و فضایی بدون از دست دادن زمینه بین فایل ها حفظ کنید. این کار اشتراکگذاری مواردی مانند معماری برنامههای موجود بین XR و سایر فاکتورهای شکل را بدون نیاز به بالا بردن حالت در کل درخت رابط کاربری یا معماری مجدد برنامهتان آسانتر میکند.SpatialPanel : یک پانل فضایی یک زیرفضای قابل ترکیب است که به شما امکان می دهد محتوای برنامه را نمایش دهید – برای مثال، می توانید پخش ویدیو، تصاویر ثابت یا هر محتوای دیگری را در یک پانل فضایی نمایش دهید.
مدارگرد : مدارگرد یک جزء رابط کاربری فضایی است. طراحی شده است تا به یک پانل فضایی مربوطه متصل شود و شامل موارد ناوبری و کنش متنی مربوط به آن پانل فضایی است. برای مثال، اگر یک پانل فضایی برای نمایش محتوای ویدیویی ایجاد کردهاید، میتوانید کنترلهای پخش ویدیو را در یک مدارگرد اضافه کنید.
حجم : موجودیت های SceneCore، مانند مدل های سه بعدی را نسبت به رابط کاربری خود قرار دهید.
Spatial Layout: میتوانید چندین پانل فضایی ایجاد کنید و با استفاده از
SpatialRow
،SpatialColumn
،SpatialBox
وSpatialLayoutSpacer
آنها را در یک Spatial Layout قرار دهید. ازSubspaceModifier
s برای سفارشی کردن چیدمان خود استفاده کنید.اجزای فضایی رابط کاربری: این عناصر را میتوان در رابط کاربری دوبعدی شما استفاده مجدد کرد و ویژگیهای فضایی آنها تنها زمانی قابل مشاهده خواهند بود که قابلیتهای فضایی فعال باشند.
-
SpatialDialog
: پانل کمی به عقب در عمق z فشار می آورد تا یک گفتگوی بالا را نمایش دهد. -
SpatialPopUp
: پانل کمی به عقب در عمق z فشار می آورد تا یک پنجره بازشوی بالا نمایش داده شود. -
SpatialElevation
:SpatialElevationLevel
را می توان برای اضافه کردن ارتفاع تنظیم کرد.
-
قابلیتهای فضایی: قابلیتهای فضایی میتواند با تعامل کاربران با برنامه یا سیستم شما تغییر کند، یا حتی میتواند توسط خود برنامه شما تغییر کند—مثلاً حرکت به فضای خانه یا فضای کامل. برای جلوگیری از مشکلات، برنامه شما باید
LocalSpatialCapabilities.current
را بررسی کند تا مشخص کند کدام API در محیط فعلی پشتیبانی میشود.isSpatialUiEnabled
: عناصر رابط کاربری فضایی (مثلاً SpatialPanel)isContent3dEnabled
: اشیاء سه بعدیisAppEnvironmentEnabled
: محیطisPassthroughControlEnabled
: این که آیا برنامه می تواند وضعیت عبور را کنترل کند یا نهisSpatialAudioEnabled
audio :
مسائل شناخته شده
- در حال حاضر برای استفاده از 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
در مانیفست خود به فضای کامل راهاندازی میشود، فعالیتها/برنامهها ابتدا قبل از انتقال به فضای کامل در Home Space باز میشوند. - glTFها در Volume Composables ممکن است در ابتدا در مکان اشتباه سوسو بزنند.
- استفاده از SpatialDialog در پانلی که به طور قابل توجهی جابجا شده است، محتوا را در جهت اشتباه سوق می دهد.