‫Jetpack Compose for XR

ליצור פריסות מרחביות של ממשק משתמש באופן הצהרתי, תוך ניצול היכולות המרחביות של Android XR.
העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסת אלפא
‫19 במאי 2026 - - - ‎1.0.0-alpha14

הצהרה על יחסי תלות

כדי להוסיף תלות ב-XR Compose, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין במאמר בנושא מאגר Maven של Google.

אתם יכולים להוסיף את יחסי התלות של הארטיפקטים שאתם צריכים בקובץ build.gradle של האפליקציה או המודול:

מגניב

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

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

Kotlin

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

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

מידע נוסף זמין במאמר הוספת יחסי תלות ב-build.

משוב

המשוב שלכם עוזר לנו לשפר את Jetpack. נשמח לדעת אם גיליתם בעיות חדשות או אם יש לכם רעיונות איך לשפר את הספרייה הזו. כדאי לעיין בבעיות הידועות בספרייה הזו לפני שמדווחים על בעיה. כדי להוסיף הצבעה בדיווח על בעיה קיימת, לוחצים על כפתור הכוכב.

יצירת דיווח על בעיה חדשה

מידע נוסף זמין במאמרי העזרה בנושא Issue Tracker.

גירסה 1.0

גרסה ‎1.0.0-alpha14

‫19 במאי 2026

androidx.xr.compose:compose:1.0.0-alpha14 וגם androidx.xr.compose:compose-testing:1.0.0-alpha14 מופצים. גרסה ‎1.0.0-alpha14 מכילה את השמירות האלה.

שינויים ב-API

  • הוספנו את transformingMovable לטיפול בתנועה תלת-ממדית שמוגדרת כברירת מחדל במערכת, והוספנו עומס יתר חדש ל-movable כדי לטפל בהתנהגויות תנועה בהתאמה אישית. (I50960)
  • השדה SpatialGltfModel.fromData() הוסר. (I4d083)
  • הוספנו ממשק חדש של צומת שינוי, SubspaceMeasuredSizeAwareModifierNode, שמספק קריאה חוזרת (callback) של onRemeasured אחרי שלב המדידה. SubspaceLayoutAwareModifierNode כולל עכשיו את הממשק החדש הזה. המשנה onSizeChanged עודכן כך שישתמש ב-onRemeasured, כדי להבטיח שהקריאה החוזרת תופעל מיד אחרי המדידה, ולא אחרי המיקום. (Iafbae)
  • העדכון האחרון בוצע ב-InteractionPolicy ל-Interface (I0ff30)
  • עדכון של Compose compileSdk ל-API 37. כלומר, כשמשתמשים ב-Compose, נדרשת גרסת AGP מינימלית של 9.2.0. (Id45cd)
  • עדכון של Size מסמכי kdocs (Iefa9a)

גרסה ‎1.0.0-alpha13

‫6 במאי 2026

androidx.xr.compose:compose:1.0.0-alpha13 וגם androidx.xr.compose:compose-testing:1.0.0-alpha13 מופצים. גרסה ‎1.0.0-alpha13 מכילה את השמירות האלה.

שינויים ב-API

  • ממשק ה-API של Orbiter נמצא בהמתנה לשינויים נוספים, לכן מומלץ להשבית את הודעות ההוצאה משימוש של Orbiters ולעקוב אחר שינויים ב-Orbiter בגרסאות הקרובות.
  • משתמשים ב-SceneCoreEntity כדי לעבד קובצי glTF צריכים לוודא שהם מעבירים את session.scene.activitySpace לפרמטר parent של הקריאה ל-GltfModel.create כדי להבטיח שקובצי ה-glTF יעובדו.
  • הוספנו את SpatialGltfModel API כדי לאפשר למפתחים להוסיף קבצי Gltf לאפליקציות שלהם ב-Compose For XR. מפתחים יכולים גם לשלוח שאילתות לגבי אנימציות וצמתים בתוך מודלים של Gltf. (I8b542, b/495422586)
  • שינויים SceneCoreEntitySizeAdapter ממחלקה לממשק (I5a784, b/475292310)
  • השם של SurfaceProtection שונה ל-SpatialExternalSurfaceProtection. עדכון של SpatialExternalSurface מסמכי kdocs (Ifad0a, b/485231082)
  • הוצאה משימוש של currentWindowAdaptiveInfo והשקת גרסה 2 שלו (I40ecf, b/424442112)
  • המשנה resizable זמין עכשיו לכולם ורלוונטי לקבוצות (למשל SpatialRow). (I2bcf6, ‏ b/348483527, ‏ b/489753178, ‏ b/479530787)
  • המשנה movable זמין עכשיו לכולם. המשנה הזה פועל כרגע בצורה טובה עם SpatialPanels ועם SpatialExternalSurface, אבל המטרה היא שהוא יתמוך היטב בכל SubspaceComposables. (I9a3cd, ‏ b/479530787, ‏ b/478935063, ‏ b/478935063)
  • SpatialEnterTransition ו-SpatialExitTransition מסומנים כ-@Immutable (If1710, ‏ b/487757837)
  • ממשק ה-API‏ SpatialGltfModel מסומן כמוגבל בגרסה הזו, עד שנבצע בדיקות נוספות. (Ibf003, b/466090694)
  • השם DeviceTrackingMode.LAST_KNOWN הוחלף ל-SPATIAL_LAST_KNOWN (עם חזרה לערך ברירת מחדל שהוצא משימוש), נוסף INERTIAL_LAST_KNOWN למעקב 3DoF, ונוסף TRACKING_DEGRADED ל-TrackingState. (Ie661c, b/445466590)
  • הסרה של SpatialLayoutSpacer (I7b36c) שהוצא משימוש
  • הסרת API של padding שהוצא משימוש (If1886)
  • הוספנו floatRange לערכי ההטיה. הוסר ערך ברירת מחדל של LayoutDirection (I9d74e)

תיקוני באגים

  • נוספו דוגמאות קוד ומסמכי KDoc ל-SpatialColumn,‏ SpatialRow ו-SpatialCurvedRow. ‫(Iaf54f, b/495777633)

גרסה ‎1.0.0-alpha12

‫25 במרץ 2026

androidx.xr.compose:compose:1.0.0-alpha12 וגם androidx.xr.compose:compose-testing:1.0.0-alpha12 מופצים. גרסה ‎1.0.0-alpha12 מכילה את השמירות האלה.

שינויים ב-API

  • מוסיפים את SpatialGltfModel API ואת ממשקי SpatialGltfModelAnimation API כדי לעבד קובצי glTF ולשלוט באנימציות. השינוי מ-SpatialGltfModelState ל-AutoCloseable, עכשיו צריך לסגור אותו כדי לפנות את המשאבים שלו. (I11fde, b/466065486, b/481379924). עם זאת, ה-API‏ SpatialGltfModel מסומן כמוגבל בגרסה הזו עד לבדיקות נוספות. (Ibf003, b/466090694)
  • נוספה פונקציית עומס יתר ריקה שהוצאה משימוש בשביל SubspaceModifier.rotate. (Idceb6)
  • הפונקציה SpatialSmoothFeatheringEffect קיבלה את השם spatialSmoothFeatheringEffect והועברה למודול ציור. ערך ברירת המחדל של טשטוש הקצוות SpatialExternalSurface עודכן ל-null, שמשחזר את הפונקציונליות הישנה של ZeroFeatheringEffect. (I5fdaa, ‏ b/460426800)
  • בוצעה הסרה של onPointSourceParamsAvailable. בקרוב יהיה זמין API אחר של אודיו מרחבי. (I86507, ‏ b/458513439)
  • הוספנו התנהגות RTL למשנים של מרחב משנה להיסט. נוסף גם absoluteOffset כדי להתעלם מכיוון הפריסה. (I30e4b, ‏ b/474409165)

גרסה ‎1.0.0-alpha11

‫25 בפברואר 2026

androidx.xr.compose:compose:1.0.0-alpha11 וגם androidx.xr.compose:compose-testing:1.0.0-alpha11 מופצים. גרסה ‎1.0.0-alpha11 מכילה את השמירות האלה.

תכונות חדשות

  • הוספת הפרמטר SuperSampling אל SpatialExternalSurfaces (Icd4d1)

בעיות מוכרות

  • בעיה ב-SurfaceEntity ב-SceneCore עלולה לגרום לקריסת אפליקציות כשיוצרים מופעים של SpatialExternalSurface. הבעיה הזו נפתרה בגרסאות androidx.xr.scenecore:scenecore-*:1.0.0-alpha13 ו-androidx.xr.compose:compose:1.0.0-alpha12 ובגרסאות שבאו אחריהן. צריך לעדכן את האפליקציות המושפעות לגרסאות האחרונות.

שינויים ב-API

  • שינויים ב-padding של משנה המרחב המשני כדי להתאים לכיוון הפריסה. (I53e25)
  • התקופה של SpatialCapabilities הסתיימה ואי אפשר להאריך אותה. (I07aef)
  • ממשקי ה-API‏ SpatialRow ו-SpatialColumn שמקבלים פרמטר כללי SpatialAlignment הוצאו משימוש. במקומם, צריך להשתמש בממשקי ה-API שמקבלים את הפרמטרים verticalAlignment או horizontalAlignment עבור SpatialRow ו-SpatialColumn, בהתאמה. (Iec390)
  • שילוב של ממשקי API של פונקציות עם עומס יתר SubspaceLayout (Idd30a)
  • השם של SubspaceModifier.lookAtUser שונה ל-rotateToLookAtUser, והפרמטר up שונה ל-upDirection. (Icafb8)
  • הפיכת SpatialRow לפונקציה מוטבעת (Ia2f20)
  • הפיכת SpatialColumn לפונקציה מוטמעת (I681be)
  • הוסר billboard API‏ (Ib76cd)

גרסה ‎1.0.0-alpha10

‫28 בינואר 2026

androidx.xr.compose:compose:1.0.0-alpha10 וגם androidx.xr.compose:compose-testing:1.0.0-alpha10 מופצים. גרסה ‎1.0.0-alpha10 מכילה את השמירות האלה.

שינויים ב-API

  • הסרת API שיצא משימוש – ApplicationSubspace (Ia6596, ‏ b/468345186)
  • העדכון של SpatialShape לממשק אטום (I7e3f5, b/460426800)
  • הסרת ממשקי API שהוצאו משימוש ב-SpatialAlignment. (Ib0b61, b/468011887)
  • הוצאה משימוש של SpatialLayoutSpacer והשקה של SpatialSpacer. (I2ebf3, ‏ b/466071383)
  • ה-API של UserSubspace עודכן כדי להחליף את המונח 'נעילה עצלה' במונח 'נעילה רכה'. (I9ded1, b/464035984)

גרסה ‎1.0.0-alpha09

‫3 בדצמבר 2025

androidx.xr.compose:compose:1.0.0-alpha09 וגם androidx.xr.compose:compose-testing:1.0.0-alpha09 מופצים. גרסה ‎1.0.0-alpha09 מכילה את השמירות האלה.

שינויים ב-API

  • הוספת משני LookAtUser ו-Billboard שמאפשרים לתוכן להיות תמיד מול המשתמש. (I49b99)
  • הוספת היכולת להגדיר InteractionPolicy ל-SpatialExternalSurfaces ול-SpatialPanels, כדי לאפשר זיהוי של קליקים ואירועי קלט אחרים בתלת-ממד. (Iae155)
  • נוספו עומס יתר של משנה הגודל requiredSize עם רוחב, גובה ועומק כערכי Dp. (I92f79)
  • הממשק של ParentLayoutParamsModifier מתרחב עכשיו ל-DelegatableSubspaceNode. (I1a6d4)
  • הוצאנו משימוש את ApplicationSubspace והחלפנו אותו ב-Subspace API.
    • התנהגות ה-API של Subspace השתנתה כך שהוא מספק רק מרחב משנה ברמת האפליקציה בתנוחה ובקנה מידה המומלצים.
    • השקנו את PlanarEmbeddedSubspace API כדי לספק מרחבי משנה מוטמעים בהקשרים דו-ממדיים. (Id3343)
  • הוספנו את הדגל shouldAutoInvalidate ל-API‏ SubspaceModifier.Node. (I93902)
  • נוסף required(Size|Width|Depth|Height)בממשקי API שמאפשרים למפתחים להגביל את הגודל של @SubspaceComposable לטווח מסוים, בלי להתחשב בהגבלות המדידה הנכנסות של רכיב האב. (Ifaa78)
  • הוספנו את SubspaceModifier.onSizeChanged, שמאפשר למפתחים להגיב בקלות ובאופן ממוקד לשינוי בגודל של @SubspaceComposable. (I994f9)
  • הסרנו את Volume API. צריך להשתמש ב-SceneCoreEntity API במקום ב-Volume API. (I4162b)
  • פיצול של SubspaceLayoutModifierNode.requestRelayout ל-invalidateMeasurement/invalidatePlacement. (I14805)
  • הוספנו את SpatialGltfModel API שמאפשר למפתחים לעבד קובצי glTF ב-Compose. (Icc91f)
  • הוספנו את SpatialGltfModel composable API כדי להקל על עיבוד של קובצי glTF‏ (Iade67)

תיקוני באגים

  • תוקן באג בפריסה ב-SceneCoreEntity. הוא אמור לפעול עכשיו בהתאם למגבלות. (I11bb8)
  • הורדת מודולים של jxr-compose ל-Compile sdk = 34 (I2d5db)

גרסה ‎1.0.0-alpha08

‫22 באוקטובר 2025

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)

תיקוני באגים

  • מניעת קריסה כשמבטלים פעילות עם מרחב משנה. (I595a1)

גרסה ‎1.0.0-alpha07

‫24 בספטמבר 2025

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 החדש הזה מספק אפשרויות מוכרות לסידור מ-2D Compose, כולל Start,‏ End,‏ Center,‏ SpaceBetween,‏ SpaceAround ו-SpaceEvenly, עם תמיכה מלאה בפריסות משמאל לימין ומימין לשמאל. (I7db38, b/436289959)
  • הוספנו ממשק בסיסי ל-SubspaceModifier.Node כדי לשפר את מניעת שגיאות הקלדה ואת נוחות השימוש של ממשקי הרחבות, כמו
    • CompositionLocalConsumerSubspaceModifierNode
    • LayoutCoordinatesAwareModifierNode
    • SubspaceLayoutModifierNode
    • CoreEntityNode (internal) (Iede00, b/440599394, b/440599394)
  • ביטול ההגבלה SpatialExternalSurface (I33315, b/439646773)
  • הוספת SubspaceModifier לרכיבים הניתנים להרכבה של Subspace והחלפת פרמטר האילוצים SubspaceModifier ב-SubspaceModifier עם SubspaceModifiers שקשור לגודל. אם allowUnboundedSubspace מוגדר כ-True, עדיין יכולות להיות הגבלות לא מוגבלות במרחבי משנה. (Ib06e6, b/433331675)
  • הוצאנו משימוש את האפשרות להזזת חלונות ולשינוי הגודל שלהם SubspaceModifiers, ועכשיו DragPolicy() ו-ResizePolicy() הם חלק מממשקי API‏ SpatialPanel ו-SpatialExternalSurface (I397bf,‏ b/437924639)
  • הוספנו תמיכה ב-LayoutDirection בפריסות מרחביות. השימוש ב-SpatialAlignment מאפשר עכשיו למקם רכיבים בצורה נכונה בהקשרים של כתיבה מימין לשמאל ומשמאל לימין. (I964bb, ‏ b/436300273)
  • הוספנו פרמטרים של שינוי גודל והזזה לממשקי ה-API של Panel כדי לוודא שאפשר להחיל את ההתנהגויות האלה רק על מאגרי נתונים נתמכים. (Id491c)
  • נוספו sizeIn, ‏ widthIn, ‏ heightIn, ‏ depthIn SubspaceModifiers שמאפשרים להגדיר אילוצים מדויקים של מינימום ומקסימום לרוחב, לגובה ולעומק. (I1af09, b/433330761)

גרסה ‎1.0.0-alpha06

‫13 באוגוסט 2025

androidx.xr.compose:compose:1.0.0-alpha06 וגם androidx.xr.compose:compose-testing:1.0.0-alpha06 מופצים. גרסה ‎1.0.0-alpha06 מכילה את השמירות האלה.

תיקוני באגים

  • יוצרים מחדש את ComposeXrOwnerLocals כשבעלי מחזור החיים מושמד. (9123ce1)

גרסה ‎1.0.0-alpha05

‫30 ביולי 2025

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 חדשים שניתנים להרכבה ומייצגים כדורים של 180 ו-360 מעלות. (I40ef2, b/391705799)
  • נוספו SubspaceModifier.aspectRatio (Ide5ab, ‏ b/399729509, ‏ b/414762147)
  • הוספנו את SceneCoreEntity API כדי לשפר את יכולת הפעולה ההדדית בין SceneCore לבין Compose for XR. (I50bb3, b/423020989)
  • GravityAlignedsubspace API נוסף לתמיכה בתכונה 'ללא שינוי גודל' ובתכונה GravityAligned (I07359)

שינויים ב-API

  • SpatialDialog() יפעל בהתאם להגדרת הלחיצה של SpatialDialogProperties.dismissOnBack. (Ib453b, b/416797132)
  • העדכון של minimumPanelDimension לגודל ברירת מחדל חדש של מאפיין Dimensions(0.1f, 0.1f, 0.1f) נובע מהייצוג שלו במטרים. (Ib852a)
  • מרחבים משניים ולוויינים ישמרו עכשיו את המצב הפנימי שלהם במרחב הבית וכשהאפליקציה פועלת ברקע. במצב 'תצוגה מצומצמת', המרחב הווירטואלי עדיין יגדיר את הסצנה שלו בהכנה למעבר למצב 'תצוגה מורחבת'. (I40317, b/416037751)
  • מעכשיו, המצב של SpatialDialogs יישמר כשהאפליקציה פועלת ברקע. (I6aa56)
  • המערכת תעביר עכשיו את המיקום והגודל המומלצים אל ApplicationSubspace. (I4565f, b/418834194)
  • הוספנו הודעת שגיאה טובה יותר והפעלנו את השגיאה מוקדם יותר כשמשתמשים ב-SubspaceComposable בהקשר שאינו SubspaceComposable. (Iee2ae, b/416484684)
  • העדכון של ExperimentalSubspaceVolumeApi מאזהרה לשגיאה נובע מכך שפעמים רבות מתעלמים מאזהרות כשמשתמשים ב-API שאפשר להרכיב בצורה לא נכונה. (I427aa, ‏ b/424864286)
  • הגישה ל-Subspace ול-ApplicationSubspace מוגבלת עכשיו על ידי recommendedContentBoxInFullSpace. בעבר, היא הוגבלה על ידי שדה הראייה של 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 שונה ל-SubspaceMeasurable כדי להבדיל בין הסוג הזה לבין הסוג Measurable של Compose. (I9726c)
  • שינוי השם של MeasureResult ל-SubspaceMeasureResult (I9f34d)
  • הסרנו את setSubspaceContent API ועכשיו משתמשים ב-setContent של Compose עם קוד Subspace קומפוזבילי. (Ifff4c, b/421427391, b/421427391)
  • השם של MeasurePolicy השתנה לSubspaceMeasurePolicy. (I37a9b, ‏ b/422553904)
  • הפוך את SubspaceSemanticsInfo לממשק אטום כי לא נוכל להוסיף חברים בלי ברירות המחדל. (I372f9, ‏ b/423704068)
  • עדכון המסמכים של SpatialExternalSurface, שינוי השם של ContentSecurityLevel ל-SurfaceProtection (I3c460, ‏ b/420982808)
  • נוסף constructor עמוס מדי לשינוי של רכיב שאפשר להזיז, כדי לאפשר הצמדה. (Ic0c70)
  • הוספנו עוד ספק מיקום לתיאורי הכלים, כך שעכשיו מפתחים יכולים לקבוע אם תיאור הכלי יוצב מעל, מתחת, משמאל או מימין לנקודת העיגון. הוספת API שמקבל צורה של סמן טקסט, כדי שאפשר יהיה לספק צורות מותאמות אישית נוספות. (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)

גרסה ‎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 לגשת לערכים מקומיים של קומפוזיציה.
  • הוספנו API חדש,‏ SpatialPanel, שפועל לפי סגנון ההטמעה של AndroidView, והוצאנו משימוש את ViewBased SpatialPanel הקודם.
  • נוסף אובייקט נלווה VolumeConstraints.Unbounded שמייצג אילוצים לא מוגבלים.
  • נוסף SubspaceModifier.onPointSourceParams כדי לאפשר מקור אודיו מרחבי.
  • נוסף ApplicationSubspace ציבורי, עם VolumeConstraints אופציונלי להגדרת אזור תלת-ממדי שבו האפליקציה יכולה לעבד תוכן מרחבי. כברירת מחדל, אם לא מציינים אילוצים, המרחב המשני מוגבל לרוחב ולגובה של שדה הראייה הנוכחי של SpatialUser. המשתמשים יכולים לספק אילוצים לשימוש אם אי אפשר לקבוע את שדה הראייה. אחרת, נעשה שימוש בערכי ברירת המחדל של רוחב וגובה שדה הראייה.
  • נוספה התכונה SpatialExternalSurface, שאפשר להשתמש בה כדי לעבד תוכן סטריאוסקופי. אפשר להתאים אישית את SpatialExternalSurface באמצעות שינויים (חוץ מאלפא) ואפקט של טשטוש הקצוות.
  • נוסף pointerHoverIcon Subspace Modifier חדש שמאפשר למשתמשים להגדיר את הסמל של המצביע המרחבי.

שינויים ב-API

  • ההגבלה על כל חבילות Jetpack XR הוסרה.RequiresApi(34) המגבלה הזו הייתה מיותרת כי Jetpack XR זמין כרגע רק במכשירים עם רמת API‏ 34 ומעלה. (Iae0f8)
  • כדי להשתמש בפרויקטים שפורסמו עם Kotlin 2.0, צריך KGP בגרסה 2.0.0 ומעלה. (Idb6b5)
  • מעכשיו, הטיפול בפעולת החזרה יפעל בחלוניות מרחביות ללא פעילויות מוטמעות. כדי שהטיפול בפעולת החזרה יפעל, צריך לציין android:enableOnBackInvokedCallback="true" במניפסט של Android.
  • מעכשיו אפשר להשתמש בתכונה 'הקודם' בתיבות דו-שיח מרחביות. כדי שהטיפול בפעולת החזרה יפעל, צריך לציין android:enableOnBackInvokedCallback="true" במניפסט של Android.
  • עכשיו אפשר לשנות את הגודל של SpatialPanels מבוססי-Compose ומבוססי-View בהתאם לתוכן שלהם.
  • מפתחים יכולים עכשיו להגדיר ערכי SpatialElevationLevel מותאמים אישית משלהם, והם לא מוגבלים לרמות המוגדרות מראש.
  • מעכשיו אפשר להתאים אישית את רמת הגובה של Orbiter באמצעות הפרמטר elevation.
  • מעכשיו, כברירת מחדל, אפשר להגביל את המרחב המשני לפי שדה הראייה של SpatialUser ברוחב ובגובה. אם אי אפשר לקבוע את שדה הראייה, המערכת משתמשת בערכי ברירת המחדל של הרוחב והגובה של שדה הראייה.
  • נוספו קריאות חוזרות (callbacks) חדשות onMoveStart ו-onMoveEnd לשינוי Movable. הקריאות החוזרות (callbacks) onMoveStart ו-onMoveEnd מופעלות כשהמשתמש מתחיל ומסיים להזיז מרחב משנה שניתן להרכבה עם שינוי המיקום.
  • הפרמטר name הוסר מ-APIs מרחביים כמו SpatialRow ו-SpatialPanel. לניפוי באגים בעצים של קומפוזיציה מרחבית, משתמשים במקום זאת ב-SubspaceModifier.testTag.
  • הוסרה עומס יתר לא נתמך של SpatialPopup שיש לו רק spatialElevationLevel ו-content. צריך להשתמש בממשק שתומך ב-onDimissRequest.
  • הקריאה החוזרת (callback) של onPoseChange מהמשנה (modifier) Movable הוסרה. במקומה צריך להשתמש במדיניות onMove.
  • SubspaceModifiers לא יחולו יותר אם הן מנותקות או אם הן בתהליך ניתוק.
  • ממשק ה-API הקיים של SpatialRow פוצל ל-SpatialRow ול-SpatialCurvedRow. אם השתמשתם בעבר בפרמטר SpatialRow של curveRadius, עכשיו צריך להשתמש בפרמטר SpatialCurvedRow במקומו, כי הוא מציע את אותה התנהגות.
  • ל-MainPanel ול-ActivityPanel אין יותר סרגלי כותרת כשהן מופעלות על קובץ אימג' של מערכת עדכנית דומה.
  • עכשיו אפשר להשתמש בכמה משני אלפא ומשני גודל ביחד, והערכים שלהם יוכפלו כדי לקבל את ערך האלפא או הגודל הסופי.
  • התקשרות חזרה (callback) משינוי המיקום של המיקום הניתן לשינוי עברה אופטימיזציה כדי לאפשר תנועה חלקה יותר של התנוחה.onPoseChange
  • השינויים בערך הדינמי יפעילו עכשיו את הרה-קומפוזיציה, כי הפונקציות של העיבודים שניתנים להזזה ולשינוי גודל יופעלו ב-callback ב-Thread הראשי.
  • הוספנו את האפשרות לצפות במצב בשלבי הפריסה והמדידה כדי לוודא ששינויים במצב ב-SubspaceLayout יפעילו פריסה מחדש.
  • עדכנו את שרשרת שינויי המחירים שעברה אופטימיזציה כדי לשפר את השימוש החוזר בשינויי מחירים קיימים.

תיקוני באגים

  • הפסקת ההצללה כשמוצג SpatialDialog. (Ic4594)
  • בקשות לשינוי פריסה שמוגשות בזמן שצמתי שינוי מנותקים יקבלו מעכשיו התעלמות.
  • הוסרו שלבי פריסה מחדש שהופעלו על ידי משנים מסוג Movable ו-Resizable.
  • תוקנה קריסה ב-MainPanel() composable שהתרחשה כששני המאפיינים הוגדרו לאפס, באופן ישיר או במהלך חישוב פריסה, למשל חישוב של SpatialRow/SpatialColumn. החלונית תוסתר במקום זאת. שימו לב שהתיקון הזה מתייחס ספציפית לקריסות במהלך שלב הפריסה. שינוי הגודל של החלונית לאפס באמצעות אינטראקציה עם המשתמש יטופל בנפרד. לחלונית המוסתרת חסרים רכיבי ממשק משתמש.
  • תוקנה בעיה שקשורה ל-maintainAspectRatio מהמשנה (modifier) של שינוי הגודל. יחס הגובה-רוחב אמור להישמר עכשיו.
  • תוקנה בעיה במרחבים משניים מוטמעים שבה הם ממוקמים בצורה שגויה בפריים בודד.
  • תוקנה בעיה שבה לפעמים לא הוחלו פינות מעוגלות כשצריך היה להחיל אותן.
  • המסגרת של 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 מכילה את השמירות האלה

גרסה ‎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 מכילה את השמירות האלה.

תכונות חדשות

  • עכשיו, כשמפעילים את התכונה 'דיאלוג מרחבי', אפשר להסתיר את התוכן של חלונית הפעילות.
  • אפשר להשתמש עכשיו ב-API‏ Orbiter בהקשרים של SubspaceComposable, והוא יצרף את רכיבי ה-Orbiter לרכיב ההורה הקרוב ביותר שניתן להרכבה שמבוסס על SubspaceLayout.
  • הוספנו את LayoutCoordinatesAwareModifierNode כדי לאפשר שינויים מותאמים אישית שמבוססים על מיקום.
  • נוספו שיטות מחזור חיים של צירוף/ניתוק ל-SubspaceModifier.Node.
  • הוספתם את scaleWithDistance לערך הקבוע שניתן להזזה. כשהאפשרות scaleWithDistance מופעלת, הרכיב של המרחב המשני שמועבר יגדל או יקטן. הוא גם ישמור על כל סולם מפורש שהיה לו לפני ההעברה.

שינויים ב-API

  • הסרנו את SessionCallbackProvider לטובת SpatialCapabilities.

שינויים אחרים

  • הפחתנו את minSDK ל-24. כל ממשקי Jetpack XR API עדיין דורשים API ברמה 34 בזמן הריצה.
  • הקונסטרקטורים Orbiter EdgeOffset.inner,‏ EdgeOffset.outer ו-EdgeOffset.overlap הם כבר לא מתודות של @Composable, ולכן אפשר להשתמש בהם בהקשרים שאינם ניתנים להרכבה.
  • עדכון של רמות הגובה המרחביות בהתאם למפרט חוויית המשתמש העדכני.
  • הטמעה של ממשק SubspaceSemanticsInfo ב-MeasurableLayout.
  • השם של SubspaceModifierElement שונה ל-SubspaceModifierNodeElement.

תיקוני באגים

  • בוצעו תיקונים כדי לייצב את ההזמנה של SubspaceModifier. SubspaceModifier אמור להתנהג בצורה אמינה יותר. עכשיו אפשר להשתמש במקשי התיקון Offset,‏ Rotate,‏ Scale,‏ Movable ו-Resizable בכל סדר.

גרסה 1.0.0-alpha01

‫12 בדצמבר 2024

androidx.xr.compose:compose-*1.0.0-alpha01 מופץ.

תכונות של הגרסה הראשונית

  • השקנו גרסה ראשונית של Jetpack Compose for XR למפתחים. אפשר להשתמש במושגים מוכרים מ-Compose, כמו שורות ועמודות, כדי ליצור פריסות מרחביות של ממשק משתמש ב-XR, בין אם אתם מעבירים אפליקציית דו-ממד קיימת ל-XR או יוצרים אפליקציית XR חדשה מאפס. הספרייה הזו מספקת רכיבים מרחביים ורכיבים שניתנים להרכבה במרחב: כמו חלוניות מרחביות ורכיבי Orbiters, שמאפשרים לכם למקם את ממשק המשתמש הקיים שלכם מבוסס-Views או מבוסס-Compose דו-ממדי בפריסה מרחבית. הוא כולל את הרכיב Volume subspace composable, שמאפשר למקם ישויות של SceneCore, כמו מודלים תלת-ממדיים, ביחס לממשק המשתמש. מידע נוסף זמין במדריך למפתחים:

    • Subspace: אפשר למקם את הקומפוזיציה הזו בכל מקום בהיררכיית ממשק המשתמש של האפליקציה, וכך לשמור על פריסות לממשק משתמש דו-ממדי ומרחבי בלי לאבד את ההקשר בין הקבצים. כך קל יותר לשתף דברים כמו ארכיטקטורת אפליקציה קיימת בין XR ובין גורמי צורה אחרים, בלי להעביר את המצב דרך כל עץ ממשק המשתמש או לשנות את הארכיטקטורה של האפליקציה.

    • SpatialPanel: חלונית מרחבית היא רכיב הניתן להרכבה במרחב משנה, שמאפשר להציג תוכן של אפליקציה – למשל, אפשר להציג הפעלת סרטון, תמונות סטילס או כל תוכן אחר בחלונית מרחבית.

    • אורביטר: אורביטר הוא רכיב ממשק משתמש מרחבי. הוא מיועד לצירוף לחלונית מרחבית תואמת, ומכיל פריטי ניווט ופעולות לפי הקשר שקשורים לחלונית המרחבית הזו. לדוגמה, אם יצרתם חלונית תלת-ממדית להצגת תוכן וידאו, תוכלו להוסיף אמצעי בקרה להפעלת וידאו בתוך אורביטר.

    • נפח: מיקום ישויות SceneCore, כמו מודלים תלת-ממדיים, ביחס לממשק המשתמש.

  • פריסה מרחבית: אפשר ליצור כמה חלונות מרחביים ולמקם אותם בפריסה מרחבית באמצעות SpatialRow, SpatialColumn, SpatialBox ו-SpatialLayoutSpacer. משתמשים ב-SubspaceModifier כדי להתאים אישית את הפריסה.

  • רכיבים מרחביים בממשק המשתמש: אפשר לעשות שימוש חוזר ברכיבים האלה בממשק המשתמש הדו-ממדי, והמאפיינים המרחביים שלהם יהיו גלויים רק כשהיכולות המרחביות מופעלות.

    • SpatialDialog: החלונית תזוז מעט אחורה בעומק בציר Z כדי להציג תיבת דו-שיח מוגבהת.
    • SpatialPopUp: החלונית תזוז מעט אחורה בעומק בציר Z כדי להציג חלון קופץ מוגבה
    • SpatialElevation: אפשר להגדיר את SpatialElevationLevel להוספת גובה.
  • יכולות מרחביות: היכולות המרחביות יכולות להשתנות כשהמשתמשים יוצרים אינטראקציה עם האפליקציה או עם המערכת, או אפילו להשתנות על ידי האפליקציה עצמה – למשל, מעבר למרחב הבית או למרחב מלא. כדי להימנע מבעיות, האפליקציה צריכה לבדוק את LocalSpatialCapabilities.current כדי לקבוע אילו ממשקי API נתמכים בסביבה הנוכחית. ‫isSpatialUiEnabled: Spatial UI elements (לדוגמה, SpatialPanel) ‫isContent3dEnabled: 3D objectsisAppEnvironmentEnabled: environmentisPassthroughControlEnabled: Whether or not the application can control the passthrough state ‫isSpatialAudioEnabled: Spatial audio

בעיות מוכרות

  • נכון לעכשיו, נדרשת גרסת minSDK‏ 30 כדי להשתמש ב-Jetpack Compose for XR. כפתרון עקיף, אפשר להוסיף את רשומת המניפסט הבאה <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> כדי ליצור ולהפעיל עם minSDK של 23.
  • כדי להשתמש באפליקציות Jetpack XR, צריך לבקש את ההרשאה android.permission.SCENE_UNDERSTANDING ב-AndroidManifest.
  • כשמפעילים אפליקציה ישירות במרחב מלא באמצעות המאפיין PROPERTY_XR_ACTIVITY_START_MODE במניפסט שלה, הפעילויות או האפליקציות נפתחות בהתחלה במרחב הבית לפני שהן עוברות למרחב מלא.
  • יכול להיות שבהתחלה קובצי glTF ב-Volume Composables יהבהבו במיקום הלא נכון.
  • שימוש ב-SpatialDialog בחלונית שהוזזה באופן משמעותי ידחוף את התוכן בכיוון הלא נכון.