Jetpack SceneCore

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

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

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

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

מגניב

dependencies {
    implementation "androidx.xr.scenecore:scenecore:1.0.0-rc02"

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

Kotlin

dependencies {
    implementation("androidx.xr.scenecore:scenecore:1.0.0-rc02")

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

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

משוב

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

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

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

גירסה 1.0

גרסה ‎1.0.0-rc02

‫7 באוקטובר 2026

‫androidx.xr.scenecore:scenecore-*:1.0.0-rc02 מופץ. גרסה ‎1.0.0-rc02 מכילה את השמירות האלה.

תיקוני באגים

  • תוקן באג פוטנציאלי של דליפת זיכרון על ידי הסרת perceptionRuntimeCache ב-SessionExt ושינוי המבנה שלו כדי לאחזר את PerceptionRuntime ישירות ממופע Session. (Ie35b1)
  • תוקנה דליפת הקשר פוטנציאלית באמצעות applicationContext עבור נקודות אחיזה נייטיביות של OpenXR כדי להבטיח שסביבת הריצה הנייטיבית לא תחזיק הפניות להקשר Activity. (Ie35b1)
  • תוקנו תנאי מירוץ ב-XrInstanceManager על ידי הוספת נעילת סנכרון ואתחול מתאימה. (Ie35b1)
  • תוקן ReferenceCleaner כדי לתמוך בביטול הרישום של פעולות ניקוי, והובטח שפעולות הניקוי של Entity יופעלו באופן מפורש במהלך dispose(), כדי למנוע ביצוע כפול במהלך איסוף האשפה. (Ie35b1)
  • תוקנה דליפת זיכרון ב-Scene על ידי הסרת sceneCache ב-SessionExt ושינוי המבנה של Scene כדי לאחזר את המופע ישירות מ-sessionConnectors. (Ie35b1)

גרסה ‎1.0.0-rc01

‫9 בספטמבר 2026

‫androidx.xr.scenecore:scenecore-*:1.0.0-rc01 מופץ. גרסה ‎1.0.0-rc01 מכילה את השמירות האלה.

שינויים ב-API

  • נוספה ספרייה xr:scenecore:scenecore-openxr. (Ic49f2)
  • הוסרו כמה ממשקי API שהוצאו משימוש לפני הגרסה היציבה 1.0.0.

תיקוני באגים

  • תוקן באג של דליפת זיכרון שבו ההפניה לפעילות יכלה להישמר על ידי המערכת כשהפעילות נהרסת. (I6dcd7)

שינויים בהתנהגות

  • הוסר פלט logcat מ-SceneCore. (I10c3c)

גרסה ‎1.0.0-beta02

‫12 באוגוסט 2026

‫androidx.xr.scenecore:scenecore-*:1.0.0-beta02 מופץ. גרסה ‎1.0.0-beta02 מכילה את השמירות האלה.

תיקוני באגים

  • ‫toMoveEvent() יחזיר null אם ישות האם עברה איסוף אשפה. (Ia7a1b)

גרסה ‎1.0.0-beta01

‫15 ביולי 2026

‫androidx.xr.scenecore:scenecore-*:1.0.0-beta01 מופץ. גרסה ‎1.0.0-beta01 מכילה את השמירות האלה.

שינויים ב-API

  • ממשקי ה-API‏ GltfAnimation ו-SpatialGltfModelAnimation מסומנים כניסיוניים. חלק מהמאפיינים הפכו לשיטות getter. (I8d689, ‏ b/524771027)
  • הוסרה שיטת היצירה MovableComponent.createTrackingMovable שגלגלית לכולם. (I00912, ‏ b/477169015)
  • הפונקציה Converted Session.create הומרה לפונקציית השהיה. (I5d27f)
  • ‫ActivitySpace ו-AnchorSpace מרחיבים עכשיו מחלקה משותפת של SpaceEntity שמכילה התנהגות משותפת של ישויות שהמיקומים שלהן נשלטים על ידי המערכת (I506ec, ‏ b/513619219)
  • העדכון של AnchorEntity נקרא AnchorSpace (Ifa95e, b/513619219)
  • מספקת API ציבורי לבדיקה SoundEffectPoolComponentTester. (I87df7, ‏ b/498104417)
  • הוספנו פרמטר אופציונלי cornerRadius לקונסטרוקטור SurfaceEntity.Shape.Quad והגדרנו את המאפיין cornerRadius כגלוי לכולם. מפתחים יכולים עכשיו לציין רדיוס פינות כשהם יוצרים צורת Quad כדי לעבד קנבסים של SurfaceEntity עם פינות מעוגלות, ולשאול על הרדיוס של צורות Quad קיימות. (Ia7809, ‏ b/474681085)
  • ‫API ציבורי לבדיקה SpatialAudioTrackBuilderTester, SpatialAudioTrackTester ו-SceneCoreTestRule.getTester עומס יתר. (I378c6, ‏ b/496333938)
  • הוספת שינויים מיוחדים של toString() למספר סוגים של ARCore. הסוגים האלה נועדו לספק למפתחים מידע נוסף למטרות ניפוי באגים, ולא לשימוש באפליקציות שנמצאות בשלב הפרודקשן או באפליקציות שנשלחות.

גרסה ‎1.0.0-alpha16

‫17 ביוני 2026

‫androidx.xr.scenecore:scenecore-*:1.0.0-alpha16 מופץ. גרסה ‎1.0.0-alpha16 מכילה את השמירות האלה.

שינויים ב-API

  • נוספו עומסים יתרים ל-addVertexData, ל-setIndexData ול-addSubset ב-CustomMesh.BuilderFromMeshData וב-CustomMesh.BuilderFromMeshBuffer. העומסים האלה מאפשרים למפתחים להעביר נתונים גולמיים ופרמטרים ישירות (לדוגמה, ByteBuffer, offset, size, topology, indexOffset, indexCount) בלי לעטוף אותם באובייקטים מתווכים כמו ByteBufferRegion או MeshSubset. (I84d5c)
  • השמות של Scene.requestFullSpaceMode() ו-Scene.requestHomeSpaceMode() שונו ל-requestFullSpace() ו-requestHomeSpace(), בהתאמה. באופן דומה, עדכנו שיטות אחרות ומאמרי עזרה שמתייחסים ל'מצב מרחב הבית' ול'מצב מרחב מלא'. (I45751)
  • ‫API ציבורי לבדיקה PanelEntityTester ו-MainPanelEntityTester (I961e4)
  • הוספת נכס pointSourceParams אל SoundEffectPoolComponent (I4a750)
  • ‫API ציבורי לבדיקה MovableComponentTester (I0c972)
  • מספק API ציבורי לבדיקה PointerCaptureComponentTester (Ic0d4f)
  • מספק API ציבורי לבדיקה ActivityPanelEntityTester (I837c4)
  • מספק API ציבורי לבדיקה ResizableComponentTester (I0a3a4)
  • מספק API ציבורי לבדיקה BoundsComponentTester. (Iefd53)
  • ‫API ציבורי לבדיקה SpatialMediaPlayerTester (Ia3e09)
  • ‫API ציבורי לבדיקה SpatialEnvironmentTester (Icf60f)
  • ‫API ציבורי לבדיקה GltfModelTester ו-SceneCoreTestRule.getGltfModelTester. (I33fcb)
  • מספקת API ציבורי לבדיקה InteractableComponentTester. (Ia7096)
  • מספקת API ציבורי לבדיקה SurfaceEntityTester. (Ic0740)
  • ‫API ציבורי לבדיקה GltfModelEntityTester, TestGltfModelNode ו-TestGltfAnimation. (I72c4d)
  • ‫API ציבורי לבדיקה SceneTester ו-SceneCoreTestRule.sceneTester. (Ib4ec5)
  • ‫API ציבורי לבדיקה PerceptionSpaceTester ו-SceneCoreTestRule.perceptionSpaceTester. (Icf739)
  • מספקת API ציבורי לבדיקה MeshEntityTester. (I63801)
  • מספק עומסי יתר של API ציבורי לבדיקה ImageBasedLightingAssetTester ו-SceneCoreTestRule.getTester. (I57ec4)
  • ‫API ציבורי לבדיקה TextureTester (Ia865b)
  • מספק API ציבורי לבדיקה PositionalAudioComponentTester (Icd96e)
  • מספק API ציבורי לבדיקה SpatialSoundPoolTester (Ia3531)
  • מספק API ציבורי לבדיקה SoundEffectPoolTester (If349a)
  • ‫API ציבורי לבדיקה ActivitySpaceTester ו-SceneCoreTestRule.activitySpaceTester. (I2d5c2)
  • מספק API ציבורי לבדיקה SpatialWindowTester (I41837)
  • מספק API ציבורי לבדיקה AnchorEntityTester (I68404)
  • מספק את ממשק ה-API הציבורי לבדיקה SceneCoreTestRule. (Ic72d3)
  • נוספה מחלקה PixelDensity והיא נחשפת דרך Scene#virtualPixelDensity כדי לספק יחס פיקסלים למטר שמבוסס על חומרה למיפוי מדויק של מימדים פיזיים ב-ActivitySpace. (I0e3ac)
  • הוספנו ממשקי API ציבוריים ליצירה ולעיבוד של רשתות בהתאמה אישית. (I7ad2f)
  • ה-API של VertexLayout עודכן כך שישתמש ברשימה של VertexBufferLayouts, כשכל VertexBufferLayout מתאר את המאפיינים בתוך מאגר קודקודים יחיד. כך אפשר ליהנות מסידורי נתוני קודקוד גמישים יותר, כולל מאפיינים משולבים עם צעדים והיסטים בהתאמה אישית. (Ic426b)
  • הפונקציה מספקת MovableComponent.createTrackingMovable כדי להמיר אובייקט שאפשר לעקוב אחריו ב-ARCore לתנוחה ביחס למרחב הפעילות. (I12249)
  • ערך ברירת המחדל של ההורה ב-Entity.create עודכן ל-null. (Ic3145)
  • ‫Entity עודכן והפך למחלקה במקום לממשק, ועכשיו הוא מחלקת הבסיס לכל סוגי הישויות. כחלק מהשינוי הזה, BaseEntity הוסר. (I7fbc9)
  • ‫GltfModel, ‏ExrImage ו-ImageBasedLightingAsset כוללים עכשיו הטמעה של AutoCloseable כדי לאפשר ניהול אידיומטי של משאבים באמצעות הבלוק use של Kotlin. (I1ac79)
  • הוספנו את המחלקה ImageBasedLightingAsset כדי להחליף את המחלקה ExrImage להגדרת תאורה של סביבה מרחבית. הפונקציה ExrImage הוצאה משימוש והוסרה מה-API הציבורי. העדכון של SpatialEnvironmentPreference בוצע לשימוש ב-ImageBasedLightingAsset. (I6c92a)
  • שינינו את השם של הפרמטר skybox ב-SpatialEnvironment ל-imageBasedLightingAsset כדי לשקף טוב יותר את המטרה שלו, והבהרנו שצריך לכלול בפרמטר הגיאומטריה טקסטורות של תיבת שמיים חזותית. (I24d4a)
  • יחידות מרחביות משתמשות עכשיו בצפיפות מכשיר יציבה לחישובים של פיקסלים למטר ברמות 1 ו-2 של Spatial API, כדי להבטיח גודל עקבי ללא קשר לשינויים בצפיפות התצוגה של המערכת. (I37051)

גרסה ‎1.0.0-alpha15

‫19 במאי 2026

‫androidx.xr.scenecore:scenecore-*:1.0.0-alpha15 מופץ. גרסה ‎1.0.0-alpha15 מכילה את השמירות האלה.

שינויים ב-API

  • הסרנו את Entity.dispose() כ-API ציבורי. במקום לקרוא ל-dispose() במופעי Entity, אפליקציות יכולות להגדיר מופעים כניתנים לניקוי על ידי הגדרת parent ל-null ועל ידי ניקוי הפניות החזקות למופעים האלה. (I396c9)
  • השיטות של SoundEffectPool set/clearOnLoadCompleteListener נמחקו. במקום זאת, אתם צריכים להשתמש ב-add/removeLoadCompleteListener. (Iae78d)
  • הערך של set/clearSpatialVisibilityChangedListener בסצנה הוחלף בערך add/removeSpatialVisibilityChangedListener. (I67dff)
  • כל השיטות של SceneCore add/removeOnFooListener קיבלו שם חדש add/removeFooListener, והוסר מהשם On. (Ibe50b)
  • השיטות AnchorEntity.setOnOriginChangedListener ו-AnchorEntity.setOnStateChangedListener הוחלפו בשיטות add/removeFooListener, כדי לתמוך בכמה מאזינים בו-זמנית. (I13749)
  • השם של AnchorEntity.State.TIMEDOUT שונה ל-State.TIMED_OUT. (Id2b8d)
  • בוצע רפקטורינג של Component API כדי לשפר את הבטיחות וההרחבה. ‫Component היא עכשיו מחלקה מופשטת. השיטות onAttach() ו-onDetach() הן עכשיו protected כדי למנוע קריאות ישירות. במקומה צריך להשתמש במדיניות Entity.addComponent() ו-Entity.removeComponent() כדי לנהל את מחזורי החיים של הרכיבים. (Id04e8)
  • הקבועים PlaneSemanticType PlaneOrientation של SceneCore הועברו מ-Ints לסוגים מותאמים אישית. הקבועים ANY שלהם יוסרו, ולכן הלקוחות צריכים לציין במפורש את כל הקבועים הרצויים, או להשתמש בקבועים החדשים של .ALL immutable Set. שיטת היצירה AnchorEntity מקבלת עכשיו קבוצה של הסוגים האלה, במקום ערך יחיד. (Ib1033)
  • הוספנו תמיכה באנימציה של שלד (skinning) ל-Custom Mesh API הניסיוני. מפתחים יכולים עכשיו להנפיש רשתות בהתאמה אישית על ידי ציון boneCount כשיוצרים MeshEntity ועדכון האנימציה בזמן אמת באמצעות MeshEntity.setBoneTransforms(). (Id8ba2, ‏ b/496692490)
  • השקנו את CustomMesh API הניסיוני. מפתחים יכולים עכשיו ליצור ולעבד גיאומטריה תלת-ממדית בסצנות שלהם באופן פרוגרמטי באמצעות CustomMesh,‏ MeshBuffer ו-MeshEntity. (I94617)
  • בוצעה הסרה של androidx.xr.scenecore.SpatializerConstants.SourceType.SOURCE_TYPE_SOUND_FIELD. במקומה צריך להשתמש במדיניות SourceType.SOUND_FIELD. (Ia68b9)
  • הוספת רכיבי אודיו מרחבי: PositionalAudioComponent, SoundEffectPoolComponent ו-SoundFieldAudioComponent (Ieda89)
  • ‫AnchorEntity.getAnchor הוחלף ב-AnchorEntity.anchor ועכשיו יחזיר Anchor כש-AnchorEntity נוצר מ-Anchor של ARCore‏ (I5c7c8)
  • ערך ברירת המחדל של הפרמטר parent בשיטות ליצירת אובייקטים ActivityPanelEntity,‏ GltfModelEntity,‏ GroupEntity,‏ PanelEntity ו-SurfaceEntity השתנה מ-ActivitySpace ל-null. כדי לצרף ישות לתרשים הסצנה ולהפוך אותה לגלוי, המפתחים צריכים להגדיר במפורש את ההורה שלה במהלך יצירת המופע או באמצעות Entity.parent = ... (Ie7cc1)

תיקוני באגים

  • ‫SceneCore Entity מעכשיו, המערכת משחררת באופן אוטומטי מופעים כשהם הופכים לזמינים באופן וירטואלי, כך שמפתחים לא צריכים להפעיל במפורש את dispose() כדי לפנות משאבים. כדי לוודא שמופע של [Entity] יוחזר בצורה תקינה, המפתחים צריכים:
    • מנתקים אותו מתרשים הסצנה על ידי הגדרת parent שלו ל-null.
    • לוותר על כל ההפניות החזקות למופע בקוד שלהם.
    • הערה לגבי סוגי ישויות מיוחדים: במקרה של ישויות שלא ניתן להגדיר להן ישות אב (כמו AnchorEntity), המפתחים צריכים לשמור על הפניה חזקה בזמן שהמופע נמצא בשימוש. אם כל ההפניות ישוחררו, המופעים האלה יהפכו למופעים שאפשר להגיע אליהם אבל לא ניתן להשתמש בהם, והם יוחזרו באופן אוטומטי. (I83fe4)
  • צמצמנו את כללי השמירה של Proguard לכל הספריות של SceneCore. (I98447)

בעיות מוכרות

  • צירוף PositionalAudioComponent ל-Entity עם מופע ExoPlayer לא פעיל יגרום לקריסה. אל תתקשרו אל setPointSourceParams או תצרפו/תנתקו את רכיבי האודיו המרחבי בזמן ש-ExoPlayer מושבת. נפתור את הבעיה הזו במהדורה הבאה.

גרסה ‎1.0.0-alpha14

‫6 במאי 2026

‫androidx.xr.scenecore:scenecore-*:1.0.0-alpha14 מופץ. גרסה ‎1.0.0-alpha14 מכילה את השמירות האלה.

שינויים ב-API

  • הסוגים TrackingState ו-VpsAvailabilityResult הועברו אל androidx.xr.arcore package, והסוגים ב-androidx.xr.runtime הוצאו משימוש. (Ic7930, ‏ b/480462213)
  • השם של Plane.Type שונה ל-PlaneType. ‫(I8c90c, ‏ b/482675376)
  • השם של Plane.Label שונה ל-PlaneLabel. ‫(Ic6b67, ‏ b/482675376)
  • הגרסה androidx.xr.runtime.FieldOfView הוצאה משימוש. במקומה צריך להשתמש במדיניות androidx.xr.runtime.math.FieldOfView. (Ia01a0, b/480233045)
  • השם של Matrix4.pose השתנה לשם Matrix4.toPose(). המאפיין pose יצא משימוש. ‫(I329b4, ‏ b/493383490)
  • שינוי השם של ערכי ה-enum‏ HandJointType. (Ifbc83, ‏ b/482670596)
  • חשיפת Component.onAttach ו-onDetach כממשקי API ציבוריים כדי לאפשר הטמעות מותאמות אישית של Component. (I0ca1f)
  • הוספת רכיבי אודיו מרחבי (I39ddd, ‏ b/489421980, ‏ b/436642086, ‏ b/436642499)
  • הסרת הישות מהאוסף PointSourceParams. במקום זאת, הישות תשמש ישירות עם SpatialAudioTrack, ‏ SpatialSoundPool ו-SpatialMediaPlayer (Ib3685, ‏ b/489421980, ‏ b/436634048)
  • השם DeviceTrackingMode.LAST_KNOWN שונה ל-SPATIAL_LAST_KNOWN (עם חזרה לגרסה קודמת שהוצאה משימוש), נוסף INERTIAL_LAST_KNOWN למעקב 3DoF, ונוסף TRACKING_DEGRADED ל-TrackingState. ‫(Ie661c, ‏ b/445466590)
  • הוצא משימוש GroupEntity. כדי ליצור Entity עם הפונקציונליות הבסיסית בלבד של Entity, מפעילים את הפונקציה Entity.create, שתחזיר ממשק Entity. (I4c450, ‏ b/473867483)
  • נוסף API של XrLog. מגדירים את XrLog.isEnabled ל-true כדי להפעיל את הרישום ביומן ב-JetpackXR, ומשתמשים ב-XrLog.Level כדי להגדיר את רמת היומן. (I76a1f, ‏ b/463460895, ‏ b/487378441)

תיקוני באגים

  • ברירת המחדל של Scene.keyEntity היא עכשיו mainPanelEntity. (I6a3ef)

גרסה ‎1.0.0-alpha13

‫25 במרץ 2026

‫androidx.xr.scenecore:scenecore-*:1.0.0-alpha13 מופץ. גרסה ‎1.0.0-alpha13 מכילה את השמירות האלה.

שינויים ב-API

  • הסרנו את הדגל unscaledGravityAlignedActivitySpace מהתוכן Session.create. התמונה ActivitySpace תמיד לא מותאמת ומוצגת בהתאם לכוח המשיכה. (If6f11, b/458173423)
  • הוסרו הפונקציות setMaterialOverride ו-clearMaterialOverride שהוצאו משימוש מ-GltfModelEntity, ועכשיו הן נקראות ב-GltfModelNode. (I2e5d2)
  • נוספו transformPixelCoordinatesToLocalPosition ו-transformNormalizedCoordinatesToLocalPosition ל-PanelEntity והוסרו שיטות ניסיוניות מקבילות שהחזירו בעבר תנוחות במקום מיקומי Vector3. (Ib6960, b/460123106, b/458333591)
  • הוספנו ממשקי API של GltfAnimation לשליטה באנימציות glTF ב-SceneCore. (I2c172, b/466065486, b/465819070, b/465818617)
  • השם של ScenePose.activitySpacePose שונה לScenePose.poseInActivitySpace (I8f175, b/427822261)
  • נוספה הטמעה של זמן ריצה מוקרן של Scenecore (‏I9c4ab, ‏b/476440158)
  • כשמשנים את הגודל של הישות בחלונית הראשית, יכול להיות שהיא תמוקם מחדש בנקודת המוצא ActivitySpace. אין פתרון עקיף מלבד שינוי המיקום של החלונית חזרה למיקום המקורי שלה באופן ידני או באמצעות תוכנה. הבאג הזה יתוקן בגרסה עתידית. (b/489427007).
  • במקרים מסוימים, יכול להיות שהאפשרות MovableComponent לא תופיע עבור SurfaceEntity וסוגים אחרים של ישויות שאינן חלוניות. הגדרה מפורשת של MovableComponent.size תגרום להצגת האפשרות. הבאג הזה יתוקן בגרסה עתידית (b/490983469).

גרסה ‎1.0.0-alpha12

‫25 בפברואר 2026

‫androidx.xr.scenecore:scenecore-*:1.0.0-alpha12 מופץ. גרסה ‎1.0.0-alpha12 מכילה את השמירות האלה.

בעיות מוכרות

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

שינויים ב-API

  • השמות של ActivitySpace.addOnSpaceUpdatedListener ו-ActivitySpace.removeOnSpaceUpdatedListener שונו ל-addOnOriginChangedListener ו-removeOnOriginChangedListener. השם של AnchorEntity.setOnSpaceUpdatedListener השתנה לשם setOnOriginChangedListener. (I5d8fb)
  • הוספנו מאפיין של שם ציבורי ל-FakeEntity והגדרנו את התצוגה כציבורית ב-FakePanelEntity. (Ifa1f9)

תיקוני באגים

  • תוקנו חישובים של צפיפות פיקסלים בתמונות מערכת חדשות יותר (I57d04)

גרסה ‎1.0.0-alpha11

‫28 בינואר 2026

‫androidx.xr.scenecore:scenecore-*:1.0.0-alpha11 מופץ. גרסה ‎1.0.0-alpha11 מכילה את השמירות האלה.

שינויים ב-API

  • השם של PerceivedResolutionResult.InvalidCameraView משתנה ל-PerceivedResolutionResult.InvalidRenderViewpoint כי ממשקי ה-API של getPerceivedResolution מסתמכים עכשיו על API של RenderViewpoint במקום על CameraViewScenePose. השם הזה משקף טוב יותר את ההטמעה החדשה. (I8c967, ‏ b/446989745, ‏ b/419311998)
  • ה-methods‏ PanelEntity/SurfaceEntity.getPerceivedResolution מקבלים עכשיו את הארגומנט RenderViewpoint שהמפתח מספק. בעבר, סביבת זמן הריצה בחרה באופן שרירותי את RenderViewpoint שמשמש לחישוב הרזולוציה הנתפסת. (I8c967, ‏ b/446989745, ‏ b/419311998)
  • הוסרו SpatialUser,‏ ScenePose.Head ו-ScenePose.CameraView. הפונקציונליות של ממשקי ה-API האלה כלולה בממשקי ה-API‏ ArDevice ו-RenderViewpoint ב-ARCore for Jetpack XR. כדי לקבל ScenePose שמתאים לראש של המשתמש או לעין שמאל או ימין, מפתחים יכולים להשתמש ב-PerceptionSpace.getScenePoseFromPerceptionPose עם התנוחה המתאימה שהתקבלה באמצעות ARCore APIs. (I2f69c, b/446989745)

גרסה ‎1.0.0-alpha10

‫3 בדצמבר 2025

‫androidx.xr.scenecore:scenecore-*:1.0.0-alpha10 מופץ. גרסה ‎1.0.0-alpha10 מכילה את השמירות האלה.

שינויים ב-API

  • הוספת את transformPixelCoordinatesToPose ואת transformNormalizedCoordinatesToPose אל PanelEntity (I462b3)
  • נוספה מחלקה מסייעת, Utils, אל SceneCore Runtime על סמך הלוגיקה ב-SceneCore (I570b9)

תיקוני באגים

  • תוקנה קריסה פוטנציאלית שיכולה להתרחש כשסשן נהרס ומתקבל SpatialModeChangeEvent (If44e8)
  • תוקן באג שיכול היה לגרום להצגת הודעת שגיאה IllegalStateException כשיוצאים מפעילות או כשנכנסים אליה מחדש. (Ibff1c)

גרסה ‎1.0.0-alpha09

‫19 בנובמבר 2025

‫androidx.xr.scenecore:scenecore-*:1.0.0-alpha09 מופץ. גרסה ‎1.0.0-alpha09 מכילה את השמירות האלה.

תכונות חדשות

  • נוסף API לאחזור ScenePose שמייצג את הקומפוזיציה של תנוחת המקור של מרחב התפיסה ותנוחה ביחס למקור של מרחב התפיסה. (I5b50a)
  • נוספה הפונקציה getGravityAlignedPose. התנוחה שמותאמת לכוח הכבידה מתעלמת מההטיה ומהגלגול של הסיבוב. (I5ae21)
  • הסוגים הקבועים AnchorEntity.State השתנו מ-Ints לסוגי משנה של State. (Ib0c49)
  • נוסף getChildren() לממשק הישות. עודכן מחזור החיים MainPanelEntity. (Ia69d6)

שינויים ב-API

  • סוגי הקבועים PointerCaptureComponent.PointerCaptureState השתנו מ-Ints לסוגי משנה של PointerCaptureState. (Ic888a)
  • השדה Scene.spatialCapabilities הוא עכשיו מסוג Set<SpatialCapability> ולא שדה Int. השם של הקבועים SpatialCapability השתנה. (I9c109)
  • השם של סוגי הקבועים SurfaceEntity השתנה מ-Ints לסוגי משנה של SurfaceEntity. (I419ed)
  • השם של סוגי הקבועים SpatializerConstant השתנה מ-Ints לסוגי משנה של SpatializerConstant. (Ia0e18)
  • השם של סוגי הקבועים TextureSampler השתנה מ-Ints לסוגי משנה של TextureSampler. (I44078)
  • הסוגים הקבועים SpatialVisibility השתנו מ-Ints לסוגי משנה של SpatialVisibility. (I70739)
  • השם של סוגי הקבועים ResizeEvent.ResizeState השתנה, והם הוגדרו מחדש כסוגי משנה של ResizeState. (I384d5)
  • השמות של הקבועים InputEvent השתנו, והם יורשים עכשיו מהסוג המתאים שכולל אותם במקום להיות מסוג Ints. (I82817)
  • סוגי הקבועים GltfModelEntity.AnimationState השתנו מ-Ints לסוגי משנה של AnimationState. (I24f4e)
  • השם של סוגי הקבועים AlphaMode השתנה מ-Ints לסוגי משנה של AlphaMode. (I27b56)
  • הסוגים הקבועים Space השתנו מ-Ints לסוגי משנה של Space. (I9255b)
  • הפונקציה ScenePose.hitTest והפונקציות הקשורות מחזירות עכשיו null אם לא נמצא חיתוך, במקום HitTestResult עם ערך null של hitPosition. השדה HitTestResult.hitPosition כבר לא יכול להיות ריק. (I1400a)
  • ההפניות ל-ActivityPose השתנו ל-ScenePose. (I7fe43)

גרסה ‎1.0.0-alpha08

‫22 באוקטובר 2025

‫androidx.xr.scenecore:scenecore-*:1.0.0-alpha08 מופץ. גרסה ‎1.0.0-alpha08 מכילה את השמירות האלה.

שינויים ב-API

  • השם של ActivityPanelEntity.moveActivity שונה לtransferActivity (I273c5, ‏ b/430332856)

תיקוני באגים

  • ‫:xr:scenecore:scenecore-spatial-rendering ו-:xr:scenecore:scenecore-spatial-core נוספו כתלות בהטמעה של :xr:scenecore:scenecore (I6ab65, ‏ b/447000520)
  • מוצגת חריגה אם מתבצעת גישה אל session.scene אחרי השמדת הסשן. (I77e6f)

גרסה ‎1.0.0-alpha07

‫24 בספטמבר 2025

הגרסאות androidx.xr.scenecore:scenecore:1.0.0-alpha07, androidx.xr.scenecore:scenecore-guava:1.0.0-alpha07 וגם androidx.xr.scenecore:scenecore-testing:1.0.0-alpha07 פורסמו. גרסה ‎1.0.0-alpha07 מכילה את השמירות האלה.

שינויים ב-API

  • השם של fixedAspectRatio שונה ל-isFixedAspectRatioEnabled והוא הוגדר כמאפיין בוליאני (I5c4e8, b/440588971)
  • Scenecore עכשיו אפשר למצוא את ה-Fakes במודול xr:scenecore:scenecore-testing. (Idd951)
  • השם של shouldAutoHideContent שונה ל-isAutoHideContentWhileResizingEnabled והשם של shouldAlwaysShowOverlay שונה ל-isAlwaysShowOverlayEnabled (I97c36, ‏ b/432335421)
  • עדכנו את הקבועים SceneCore TextureSampler כדי לשפר את הקריאות. לדוגמה, TextureSampler.MinFilter.LINEAR הוא עכשיו TextureSampler.MIN_FILTER_LINEAR (Ib159c)
  • הפונקציה להגדרת המאפיין setKeyEntity של Scene מוזגה למשתנה keyEntity. הגדרת keyEntity לישות שלא ניתן להעביר, כמו AnchorEntity, תגרום להקפצת הודעת שגיאה (throw) IllegalArgumentException במקום להחזרת הערך הבוליאני false. (I62080, b/428721695, b/422215745)
  • המשתנה SpatialModeChangeListener של הסצנה הוחלף ב-setSpatialModeChangedListener. הוא מקבל Consumer<SpatialModeChangeEvent> במקום SpatialModeChangedListener. מעכשיו אפשר להוסיף ל-setSpatialModeChangedListener Executor באופן אופציונלי. (I62080, b/428721695, b/422215745)
  • הוסר הפרמטר bundle מActivityPanelEntity.startActivity (I64344, ‏ b/430332856, ‏ b/430333040)
  • השם של SpatializerConstants.SOURCE_TYPE_BYPASS שונה ל-SpatializerConstants.SOURCE_TYPE_DEFAULT. (Ifc7fe, ‏ b/422215565)
  • נוסף קבוע SpatialSoundPool.PLAY_FAILED. (Ifc7fe, ‏ b/422215565)
  • הוספנו ארגומנטים שמוגדרים כברירת מחדל לשיטות SpatialSoundPool.play. (Ifc7fe, ‏ b/422215565)
  • הוסר ערך ההחזרה של פונקציות setter ב-SpatialAudioTrackBuilder. (Ifc7fe, ‏ b/422215565)
  • שינויים ב-SurfaceEntity
    • SurfaceEntity.CanvasShape שינה/ה את השם של Shape
    • SurfaceEntity.CanvasShape.Vr180Hemisphere שינה/ה את השם של Hemisphere
    • SurfaceEntity.CanvasShape.Vr360Sphere שינה/ה את השם של Sphere
    • SurfaceEntity.EdgeFeatheringParams.SmoothFeather שינה/ה את השם של RectangleFeather
    • SurfaceEntity.EdgeFeathingParams.SolidEdge שינה/ה את השם של NoFeathering
    • SurfaceEntity.ContentSecurityLevel שינה/ה את השם של SurfaceProtection
    • SurfaceEntity.ContentSecurityLevel.{values} הוסיף קידומת SURFACE_PROTECTION_.
    • SurfaceEntity.SuperSampling.{$values} הוסיף קידומת SUPER_SAMPLING_
    • SurfaceEntity.StereoMode.{values} הוסיף קידומת STEREO_MODE_
    • ‫SurfaceEntity.ContentColorMetadata.maxCLL שינה את השם של maxContentLightLevel (I7eb5f, ‏ b/422216050, ‏ b/427529950)
  • השם של launchActivity שונה לstartActivity (I7db90, b/430332856)
  • בוצעה הסרה של Scene.activitySpaceRoot. במקומה צריך להשתמש במדיניות Scene.activitySpace. (I05ee8, ‏ b/378706624, ‏ b/422215745)
  • ‫configureBundleForFullSpaceModeLaunch ו-configureBundleForFullSpaceModeLaunchWithEnvironmentInherited שונו ל-createBundleForFullSpaceModeLaunch ו-createBundleForFullSpaceModeLaunchWithEnvironmentInherited בהתאמה, והועברו לקובץ LaunchUtils.kt כשיטות ברמה העליונה, והם מקבלים Session כפרמטר הראשון (I64a2c,‏ b/437186050)
  • הפונקציה GroupEntity factory מחזירה עכשיו את הסוג GroupEntity במקום Entity. (I66042)

תיקוני באגים

  • הפעלת IllegalStateException כשמשתמשים במופע של ישות אחרי סילוק. ‫(I90990, ‏ b/427314036, ‏ b/432063442)

גרסה ‎1.0.0-alpha06

‫13 באוגוסט 2025

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

שינויים ב-API

  • הסרת ההגבלה מממשקי ה-API‏ BaseEntity ו-BaseScenePose של SceneCore (88c0ff6)

גרסה ‎1.0.0-alpha05

‫30 ביולי 2025

הגרסאות androidx.xr.scenecore:scenecore-guava:1.0.0-alpha05, androidx.xr.scenecore:scenecore-testing:1.0.0-alpha05 וגם androidx.xr.scenecore:scenecore:1.0.0-alpha05 פורסמו. גרסה ‎1.0.0-alpha05 מכילה את השמירות האלה.

תכונות חדשות

  • נוסף API של רזולוציה נתפסת לישויות של חלוניות ול-SurfaceEntities. (I118f6)
  • PerceivedResolution נוספו שיטות קריאה חוזרת (callback) ל-Scene.kt כדי לעקוב אחרי הרזולוציה הנתפסת של החלונית הראשית של הפעילות ב-HSM. (I58084)
  • ‫SurfaceEntity – נוספה תמיכה באפליקציה כדי לבקש דגימת יתר בזמן היצירה. כך אפליקציות יכולות להשתמש במסנן דגימת-על להחלקת קצוות משוננים. (I06913)
  • הנכס recommendedContentBoxInFullSpace נוסף אל ActivitySpace. הפונקציה מחזירה תיבה מומלצת למיקום תוכן במצב מרחב מלא. (I4cd6f)
  • נוסף בנאי עמוס יתר על המידה לשינוי הניתן להזזה, שמאפשר הצמדה. (Ic0c70)

שינויים ב-API

בוצעו שינויים נרחבים ב-API של SceneCore בגרסה הזו. חלק מהמחלקות הועברו למודולים אחרים או שהשם שלהן השתנה, ורוב שיטות ה-getter וה-setter הוחלפו במאפייני Kotlin. אנחנו צופים שיהיו עוד שינויים משמעותיים ב-API עד לגרסת הבטא הראשונה שלנו, אבל הם לא יהיו משמעותיים או רבים כמו השינויים שכבר ביצענו.

  • בוצע שינוי שם ו/או העברה של הממשקים והמחלקות הבאים: androidx.xr.scenecore.PixelDimensions ל-androidx.xr.runtime.math.IntSize2d; androidx.xr.scenecore.Dimensions ל-androidx.xr.runtime.math.FloatSize3d; androidx.xr.scenecore.ActivityPose ל-ScenePose, androidx.xr.scenecore.ContentlessEntity ל-GroupEntity, androidx.xr.scenecore.PlaneType ל-PlaneOrientation; androidx.xr.scenecore.PlaneSemantic ל-PlaneSemanticType. (Ifd405)(I3b622) (If534d)
  • מספר פונקציות להגדרת מאפיינים של Scene הפכו לפרטיות. לא הייתה כוונה לשנות אותן על ידי לקוחות של SceneCore: ‏activitySpace, ‏activitySpaceRoot, ‏mainPanelEntity, ‏perceptionSpace, ‏spatialCapabilities, ‏spatialEnvironment ו-spatialUser. (I2f506)
  • ב-Entity: המאפיינים הבאים שונו: get/setParent(), setContentDescription; המאפיין Entity.is/setHidden() הוצא משימוש, צריך להשתמש במאפיין Entity.is/setEnabled במקומו. (Ibc4c6)
  • הוסרה המחלקה androidx.xr.scenecore.BasePanelEntity. במקומה צריך להשתמש ישירות ב-PanelEntity. הוחלפו פונקציות getter ו-setter של PanelEntity במאפיינים. המאפיין PanelEntity.size השתנה מ-Float3dSize ל-Float2dSize. הסרנו את השיטה androidx.xr.scenecore.PanelEntity.getPixelDimensions שהוצאה משימוש. במקומה צריך להשתמש ב-getSizeInPixels. (Icc174)
  • הטקסט androidx.xr.scenecore.OnSpaceUpdatedListener הוחלף בטקסט Runnable. (I19308)
  • הוחלף SpatialUser.getCameraViews() בנכס. ‫(Ib0cc5) ב-ExrImage וב-GltfModel:, שינינו את שיטות create כך שיהיו פונקציות השהיה. שינינו את פרמטרי היצירה כך שיקבלו Uri או Path במקום String. (Id8883) (I0d247), (I25706)
  • העברנו את SpatialEnvironment.requestFullSpaceMode ו-SpatialEnvironment.requestHomeSpaceMode ל-Scene. לדוגמה, במקום session.scene.spatialEnvironment.requestFullSpaceMode() צריך להשתמש ב-session.scene.requestFullSpaceMode(). ל-addOnPassthroughOpacityChangedListener ול-addOnSpatialEnvironmentChangedListener יש עכשיו החלפות שמקבלות Executors אופציונליים. ‫(I12fe0) (I6b21e)
  • הוסרו השיטות הבאות שהוצאו משימוש SpatialEnvironment: togglePassthrough,‏ setPassthrough,‏ setPassthroughOpacity,‏ getPassthroughMode,‏ getPassthroughOpacity,‏ setSkybox ו-setGeometry. הוסר גם השימוש בכיתה שיצאה משימוש SpatialEnvironment.PassthroughMode (I927bd) (I927bd) (I927bd)
  • החלפנו את הפונקציות הבאות של SpatialEnvironment getters ו-setters במאפייני Kotlin: ‏ getCurrentPassthroughOpacity(), ‏ get/setPassthroughOpacityPreference(), ‏ get/setSpatialEnvironmentPreference(), ‏ isSpatialEnvironmentPreferenceActive() (I33a7b) (Ie06e2) (Ie06e2)
  • הסוג של SpatialEnvironmentPreference.preferredPassthroughOpacity השתנה מ-Float? ל-Float. הוא כבר לא מקבל ערכים ריקים (null). במקום זאת, נעשה שימוש בערך SpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCE כדי לציין שאין העדפה לגבי אטימות. (I40107)
  • הפרמטר windowBoundsPx עודכן ל-pixelDimensions והסוג שלו עודכן מ-Rect ל-IntSize2d בשיטת היצירה. (I1926e)
  • הקונסטרוקטור SpatialEnvironment הוא עכשיו פנימי (I75a51)
  • הוחלפה המחלקה SpatialPointerIconNone והמחלקות SpatialPointerIconCircle באובייקטים נלווים SpatialPointerIcon.NONE ו-SpatialPointerIcon.CIRCLE (I416d2)
  • השדה SpatialPointerIcon בטבלה SpatialPointerComponent כבר לא יכול להכיל ערך null. כדי לציין שצריך להשתמש בסמל ברירת המחדל של המערכת לציון מיקום הסמן, צריך להשתמש ב-SpatialPointerIcon.DEFAULT במקום ב-null. (I416d2)
  • המאפיין androidx.xr.scenecore.AnchorEntity.getState() הוחלף במאפיין לקריאה בלבד. השמות של הפרמטרים במתודה AnchorEntity.create() השתנו לשם הבהרה. בשיטות של AnchorEntity להגדרת מאזינים ולהוספת מאזינים, המאזין הועבר לארגומנט האחרון כדי להפעיל למבדות נגררות. הטקסט androidx.xr.scenecore.OnStateChangedListener הוחלף בטקסט Consumer<AnchorEntity.State> עבור AnchorEntity. (I472e0)
  • GltfModelEntity.getAnimationState() הוא עכשיו נכס. (I10b29)
  • הוחלף ActivitySpace.getBounds() בנכס. השם של ActivitySpace.addBoundsChangedListener שונה ל-ActivitySpace.addOnBoundsChangedListener. הוחלף ActivitySpace.setOnSpaceUpdatedListener בשיטות להוספה או להסרה. (I4c956)
  • השם של AnchorPlacement: planeTypeFilter השתנה לanchorablePlaneOrientations, השם של planeSemanticFilter השתנה לanchorablePlaneSemanticTypes. הוספה של MovableComponent ל-AnchorEntity או ל-ActivitySpace תחזיר false, ‏ MoveListener שונה ל-EntityMoveListener shouldDisposeParentAnchor שונה ל-disposeParentOnReAnchor systemMovable הוסר מהפונקציה create לטובת creeateCustomMovable, ‏ createSystemMovable ו-createAnchorable (If11c4)
  • הוסר SurfaceEntity.featherRadiusX/Y והוסף קונספט של כיתה EdgeFeatheringParams. (Ic78fc)
  • ה-method‏ PanelEntity.enablePanelDepthTest() הוחלפה במאפיין panelClippingConfig. מגדירים את Scene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true) כדי להפעיל את בדיקת העומק או מגדירים את PanelClippingConfig(isDepthTestEnabled = false) כדי להשבית אותה. (I0cbe0)
  • הסוג של Scene.mainPanelEntity הוא עכשיו MainPanelEntity במקום PanelEntity (I7125a)
  • השם של השיטה setFullSpaceMode של Scene השתנה ל-configureBundleForFullSpaceModeLaunch, והשם של השיטה setFullSpaceModeWithEnvironmentInherited השתנה ל-configureBundleForFullSpaceModeLaunchWithEnvironmentInherited. ‫(I0cbe0) (I0cbe0)
  • השמות של הערכים SpatialVisibilityUNKNOWN,‏ OUTSIDE_FOV,‏ PARTIALLY_WITHIN_FOV ו-WITHIN_FOV שונו ל-SPATIAL_VISIBILITY_UNKNOWN,‏ SPATIAL_VISIBILITY_OUTSIDE_FIELD_OF_VIEW,‏ SPATIAL_VISIBILITY_PARTIALLY_WITHIN_FIELD_OF_VIEW ו-SPATIAL_VISIBILITY_WITHIN_FIELD_OF_VIEW, בהתאמה (Ie7e8c)
  • המחלקות SpatialVisibility הוחלפו באובייקט ציבורי עם ערכי Int קבועים. הפרמטר setSpatialVisibilityChangedListener מקבל עכשיו Consumer<Int> במקום Consumer<SpatialVisibility> (Ie7e8c)
  • הקבועים PointerCaptureComponent שונו והועברו לאובייקט PointerCaptureComponent.PointerCaptureState (I9c7ac)
  • הטקסט PointerCaptureComponents' StateListener הוחלף בטקסט Consumer<Int>. (I9c7ac)
  • הטקסט InputEventListener הוחלף בטקסט Consumer<InputEvent> (I9c7ac)
  • ‫setPreferredAspectRatio הועבר מהמחלקה Scene לאובייקט SpatialWindow, והוא מקבל Session כפרמטר הראשון. (I7b717)
  • ‫Entity.setHidden() הוחלף ב-Entity.setEnabled() ו-Entity.isHidden() הוחלף ב-Entity.isEnabled(). ‫setHidden(false) שווה ל-setEnabled(true) ול-isHidden() == !isEnabled(). (Icf0de)
  • הסוג של Entity.contentDescription השתנה מ-String ל-CharSequence. ‫(Ie59be)
  • הפונקציות Session.create ו-Session.configure מקפיצות עכשיו הודעת שגיאה (throw) SecurityException אם לא ניתנו הרשאות מספיקות, במקום להחזיר SessionCreatePermissionsNotGranted או SessionConfigurePermissionsNotGranted. (I7c488)
  • ‫ResizableComponent.create now requires a Consumer<ResizeEvent> ResizeEventListener was replaced with Consumer<ResizeEvent> ResizableComponent.size was renamed to ResizableComponent.affordanceSize ResizableComponent.minimumSize was renamed to ResizableComponent.minimumEntitySize ResizableComponent.maximumSize was renamed to ResizableComponent.maximumEntitySize, ResizableComponent.autoHideContent was renamed to ResizableComponent.shouldAutoHideContent ResizableComponent.forceShowResizeOverlay was renamed to ResizableComponent.shouldAlwaysShowOverlay (I97a2d)
  • הפחתת minSDK ל-24 עבור androidx.xr.scenecore ו-androidx.xr.compose. חבילות XR עדיין דורשות API 34 בזמן הריצה. (I17224)
  • הוסרה ההגבלה RequiresApi(34) על כל חבילות Jetpack XR. ההגבלה הזו הייתה מיותרת כי Jetpack XR זמין כרגע רק במכשירים עם רמת API‏ 34 ומעלה. (Iae0f8)
  • ארטיפקט SceneCore (xr:scenecore:scenecore) הראשי יכיל רק ממשקי API אסינכרוניים בסגנון Kotlin. מפתחי Java יכולים להסתמך על הספרייה xr:scenecore:scenecore-guava כדי לגשת לממשקי API תואמים. (If221b)
  • כדי להשתמש בפרויקטים שפורסמו עם Kotlin 2.0, צריך KGP 2.0.0 או גרסה חדשה יותר (Idb6b5)
  • הספרייה הזו משתמשת עכשיו באנוטציות של JSpecify nullness, שהן מסוג type-use. מפתחי Kotlin צריכים להשתמש בארגומנט הבא של הקומפיילר כדי לאכוף שימוש נכון: -Xjspecify-annotations=strict (זו ברירת המחדל החל מגרסה 2.1.0 של Kotlin Compiler) (Ia8420)
  • כל השיטות האסינכרוניות שמחזירות ListenableFuture הוחלפו בפונקציות השהיה של Kotlin. מפתחי Java שרוצים להשתמש בשיטות אסינכרוניות שמבוססות על ListenableFuture במקום בפונקציות השהיה של Kotlin צריכים עכשיו להשתמש בפונקציות הרחבה ב-:xr:scenecore-scenecore-guava. לדוגמה, GuavaExrImage מכיל את הפונקציות האסינכרוניות המקבילות של Guava‏, GuavaScenePose מכיל את הפונקציות האסינכרוניות המקבילות של ScenePose‏, GuavaGltfModel מכיל את הפונקציות האסינכרוניות של Guava-equivalent GltfModel וכו'. (If7283) (I0af60) (If7283) (Ia8515) (I4efdf) (I54bbf) (I3467a) (I82a33)

תיקוני באגים

  • עדכון של כלל ProGuard ב-Jetpack XR Scenecore כדי למנוע AbstractMethodError בלקוחות שעברו מיניפיקציה. (I91a01)
  • תיקונים נוספים לתמיכה בהקטנת קובץ Proguard ל-Jetpack XR SceneCore (I4f47e)
  • תוקן באג שבו InteractableComponent עלול לגרום לקריסה אם hitPosition ב-HitInfo של InputEvent עלול לקרוס אם hitPosition שהוחזר מהמערכת היה null‏ (I7a695)
  • שם ההגדרה *Mode vals שונה כדי לשקף את ההתנהגות שלה. (I6d247)
  • תוקנו בעיות שקשורות לשדה הראייה ול-HitTest ב-TestApp SceneCore. (I2c51e)
  • תוקן באג בפונקציה SpatialCapabilities.hasCapability() שגרם לה להחזיר true אם אחת מהיכולות שהועברו עם OR ברמת הביט הייתה true, במקום להחזיר true רק אם כולן היו true. (I2cd40)
  • SurfaceEntity.StereoMode.TOP_BOTTOM עודכן כך שהמפה העליונה תהיה לעין שמאל והמפה התחתונה תהיה לעין ימין. (I4ae68)

גרסה ‎1.0.0-alpha04

‫7 במאי 2025

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

תכונות חדשות

  • מעכשיו, טיפול בהחזרה יעבוד על ישויות בחלונית ללא פעילויות מוטמעות. כדי שהטיפול בהחזרה יפעל, צריך לציין את android:enableOnBackInvokedCallback= "true" במניפסט של Android.
  • ‫StereoSurfaceEntity תומך עכשיו בהפעלה של MV-HEVC באמצעות שני ערכים חדשים של StereoMode: ‏ MULTIVIEW_LEFT_PRIMARY ו-MULTIVIEW_RIGHT_PRIMARY.
  • הפונקציות PanelEntity.setSize ו-PanelEntity.getSize מחזירות עכשיו גדלים במרחב ההורה.
  • הפרמטר החדש relativeTo נוסף לפונקציות Entity.setPose,‏ Entity.getPose,‏ Entity.setScale,‏ Entity.getScale,‏ Entity.setAlpha ו-Entity.getAlpha. הפרמטר הזה מאפשר לקבל או להגדיר ערכים ביחס למרחבים שונים. הערכים הנתמכים הם Parent, ‏ Activity ו-Real World spaces, וערך ברירת המחדל של הפרמטר הזה הוא Parent.
  • נוספו שיטות הרחבה של קריאה חוזרת (callback) לנראות מרחבית אל SessionExt.kt כדי לעקוב אחרי תנועת התוכן בסצנה בתוך שדה הראייה של המשתמש או מחוצה לו.
  • הוספנו את setPointSourceParams אל SpatialAudioTrack, כדי לאפשר עדכון של הפרמטרים אחרי שהשיר נוצר.
  • נוספה מחלקה חדשה, Scene, עם הפניות לממשקי API של Scenecore. הסצנה תהיה נגישה כמאפיין הרחבה של Session. פונקציות בתוך SessionExt הועברו ל-Scene, ולכן צריך לשנות את הייבוא. לדוגמה, SessionExt.getScene(session).‫addSpatialCapababilitiesChangedListener מול SessionExt.addSpatialCapabilitiesChangedListener.
  • ‫ActivityPose.hitTestAsync נוסף, והוא מאפשר hitTest נגד תוכן וירטואלי.
  • נוסף סוג רכיב חדש SpatialPointerComponent, שמאפשר ללקוחות לציין את הסמל שמוצג עבור מצביע העכבר, או להשבית את הסמל. בשלב הזה, אפשר לצרף את הרכיב הזה רק למופעים של PanelEntity.
  • השקנו מפעל חדש PanelEntity שמקבל את מידות הפאנל במטרים או בפיקסלים. הוסרה פונקציית factory ישנה יותר PanelEntity שמקבלת שני פרמטרים מסוג Dimension עבור חלונית.

שינויים ב-API

  • הוסרה ההגבלה RequiresApi(34) על כל חבילות Jetpack XR. ההגבלה הזו הייתה מיותרת כי Jetpack XR זמין כרגע רק במכשירים עם רמת API‏ 34 ומעלה. (Iae0f8)
  • כדי להשתמש בפרויקטים שפורסמו עם Kotlin 2.0, צריך KGP 2.0.0 או גרסה חדשה יותר (Idb6b5)
  • הוסרה המחלקה PermissionHelper.
  • האפשרות PanelEntity.getPixelDensity הוצאה משימוש.
  • המינויים PanelEntity.setPixelDimensions ו-PanelEntity.getPixelDimension יוסרו ויוחלפו במינויים setSizeInPixels ו-getSizeInPixels.
  • האפשרות Entity.getActivitySpaceAlpha הוסרה. אפשר להחליף אותו ב-Entity.getAlpha(Space.Activity).
  • האפשרות Entity.getWorldSpaceScale הוסרה. אפשר להחליף אותו ב-Entity.getScale(Space.REAL\_WORLD).
  • הכיתה Session ב-SceneCore נמחקה לטובת Session ב-XR Runtime.
  • השם של StereoSurfaceEntity השתנה לשם SurfaceEntity.
  • ה-methods Entity.setSize ו-Entity.getSize הוסרו, וה-methods האלה נוספו ל-PanelEntity.
  • השם של PointSourceAttributes השתנה לשם PointSourceParams.
  • השם של SpatializerConstants.SOURCE\_TYPE\_BYPASS השתנה לשם SpatializerConstants.SOURCE\_TYPE\_DEFAULT.
  • ההרשאה של הישות PointSourceParams שונתה מגישה ציבורית לגישה פנימית.
  • מעכשיו צריך להגדיר את PlaneTrackingMode ב-Session.configure() כדי להשתמש ב-AnchorEntity.create.
  • SpatialUser מעכשיו צריך להגדיר את HeadTrackingMode ב-Session.configure() כדי להשתמש בממשקי API.
  • אם ResizableComponent לא מצורף, יומן ברמת INFO יוצג במקום יומן ברמת ERROR.
  • מחלקת ה-FOV היא עכשיו מחלקת Kotlin רגילה.
  • מפצלים את Entity.kt כדי להציב כל סוג ישות קונקרטי בקובץ משלו.
  • כשיוצרים PanelEntity חדש, רוב התצוגות משויכות מחדש לFrameLayout. כך קל יותר להשתמש ב-LayoutInspector עם חלוניות מרחביות.
  • מופע XrExtensions שנעשה בו שימוש כרגע רשום עכשיו בפלטפורמה, בדרך הטובה ביותר האפשרית, כדי לעזור בניפוי באגים באפליקציה.

תיקוני באגים

  • נוסף תיקון כדי למנוע קריסה שיכולה לקרות כשמעבירים PanelEntity עם MovableComponent ו-AnchorPlacement
  • תוקנה בעיה שבה ResizableComponent סיפק גדלים לא עדכניים בקריאה חוזרת (callback) של onResizeStart.
  • תוקנה קריסה כשקוראים ל-JxrPlatformAdapterAxr של dispose() כמה פעמים.

גרסה ‎1.0.0-alpha03

‫26 בפברואר 2025

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

תכונות חדשות

  • יש עכשיו תמיכה ב-Proguard minification לקוד Jetpack XR

תיקוני באגים

  • תיקונים נוספים לתמיכה בהקטנת קובץ Proguard עבור Jetpack XR SceneCore‏ (I4f47e)
  • עדכון של כלל ProGuard ב-Jetpack XR Scenecore כדי למנוע AbstractMethodError בלקוחות שעברו מיניפיקציה. (I91a01)

גרסה ‎1.0.0-alpha02

‫12 בפברואר 2025

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

שינוי משמעותי שצפוי להשפיע על אפליקציות שנבנו לפני גרסה ‎1.0.0-alpha02

  • ה-factory methods הועברו מהמחלקה Session ל-companion method בכל סוג:
    • המינוי Session.createActivityPanelEntity(Dimensions, String, Activity, Pose) נמחק והוחלף במינוי ActivityPanelEntity.create(Session, Dimensions, String, Pose)
    • המינוי Session.createAnchorEntity(Anchor) נמחק והוחלף במינוי AnchorEntity.create(Session, Anchor)
    • המינוי Session.createAnchorEntity(Dimensions, Int, Int, Duration) נמחק והוחלף במינוי AnchorEntity.create(Session, Dimensions, Int, Int, Duration)
    • המינוי Session.createEntity(String, Pose) נמחק והוחלף במינוי ContentlessEntity.create(Session, String, Pose)
    • המינוי Session.createExrImageResource(String) נמחק והוחלף במינוי ExrImage.create(Session, String)
    • המינוי Session.createGltfEntity(GltfModel, Pose) נמחק והוחלף במינוי GltfModelEntity.create(Session, GltfModel, Pose)
    • המינוי Session.createGltfModelResource(String) נמחק והוחלף במינוי GltfModel.create(Session, String)
    • המינוי Session.createInteractableComponent(Executor, InputEventListener) נמחק והוחלף במינוי InteractableComponent.create(Session, Executor, InputEventListener)
    • המינוי Session.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean) נמחק והוחלף במינוי MovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean)
    • המינוי Session.createPanelEntity(View, Dimensions, Dimensions, String, Pose) נמחק והוחלף במינוי PanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose)
    • המינוי Session.createResizableComponent(Dimensions, Dimensions) נמחק והוחלף במינוי ResizableComponent.create(Session, Dimensions, Dimensions)
    • המינוי Session.createStereoSurfaceEntity(Int, Dimensions, Pose) נמחק והוחלף במינוי StereoSurface.create(Session, Int, Dimensions, Pose)
  • ה-methods הבאות שהוצאו משימוש הוסרו:
    • Session.canEmbedActivityPanel(Activity) נמחק. במקומה צריך להשתמש במדיניות getSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY).
    • Session.hasSpatialCapability(Int) נמחק. היא הוחלפה בשימוש ב-getSpatialCapabilities().hasCapability() כדרך מופרדת יותר לבדיקת נוכחות של יכולות מרחביות, כי getSpatialCapabilities() מחזירה אובייקט SpatialCapabilities.
    • המינוי Session.requestFullSpaceMode() נמחק והוחלף במינוי SpatialEnvironment.requestFullSpaceMode()
    • המינוי Session.requestHomeSpaceMode() נמחק והוחלף במינוי SpatialEnvironment.requestHomeSpaceMode()
  • הפונקציות Session.setFullSpaceMode(Bundle) ו-Session.setFullSpaceModeWithEnvironmentInherited(Bundle) הועברו לפונקציות של תוספים. מפתחים יצטרכו להוסיף את הייבוא החדש לקבצים שלהם כדי לקבל גישה:
    • import androidx.xr.scenecore.setFullSpaceMode
    • import androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
  • ‫Session.setPreferredAspectRatio(Activity, Float) הועבר לפונקציית הרחבה. המפתחים יצטרכו להוסיף את הייבוא החדש לקבצים שלהם כדי לקבל גישה:
    • import androidx.xr.scenecore.setPreferredAspectRatio
  • הפונקציות Session.getEntitiesOfType(Class<out T>) ו-Session.getEntityForRtEntity(RtEntity) הועברו לפונקציות של תוספים. מפתחים יצטרכו להוסיף את הייבוא החדש לקבצים שלהם כדי לקבל גישה:
    • import androidx.xr.scenecore.getEntitiesOfType
    • import androidx.xr.scenecore.getEntityForRtEntity
  • המשתמש Session.unpersistAnchor(Anchor) נמחק
  • המשתמש Session.createPersistedAnchorEntity(UUID) נמחק

בעיות מוכרות

  • יכול להיות שהשינויים ב-PanelEntity.setCornerRadius() וב-ActivityPanelEntity.setCornerRadius() יחולו רק אחרי שתזיזו את החלונית בפעם הבאה. כדי לפתור את הבעיה, אפשר להזיז את החלונית למיקום הנוכחי שלה.
  • כשקוראים ל-BoundsChanged ב-ActivitySpace, יכול להיות שחלק מה-ActivityPose לא עודכנו בצורה נכונה. הפרטים יעודכנו בשיחה הבאה OnSpaceUpdated בתאריך ActivitySpace

שינויים בתוכנה שעלולים לגרום לכשלים ושינויים בהתנהגות

  • ל-PanelEntity ול-ActivityPanelEntity יהיה רדיוס פינות שמוגדר כברירת מחדל של ‎32dp או פחות אם הרוחב או הגובה של החלונית קטנים מ-‎32dp

ממשקי API ויכולות חדשים

  • השקנו את StereoSurface.CanvasShape, שמאפשר ליצור פריטי Canvas של Spherical ושל Hemispherical לעיבוד של מדיה סוחפת.
  • הפרמטר StereoSurfaceEntity.create() מקבל עכשיו את הפרמטר CanvasShape. (הפרמטר הזה מתעלם כרגע, אבל ייעשה בו שימוש בגרסה עתידית)
  • הפרמטר StereoSurfaceEntity.create() לא מקבל יותר את הפרמטר Dimensions. האפליקציות צריכות לשלוט בגודל של אזור הציור באמצעות הגדרת CanvasShape
  • ל-StereoSurfaceEntity יש חבר CanvasShape שאפשר להגדיר באופן דינמי.
  • המאפיין StereoSurfaceEntity.dimensions הוא עכשיו מאפיין לקריאה בלבד. כדי לשנות מאפיינים, האפליקציות צריכות להגדיר את CanvasShape.
  • האפשרות StereoSurfaceEntity מאפשרת עכשיו לאפס את StereoMode אחרי הבנייה.

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

  • הפחתנו את הערך של minSDK בזמן ההידור ל-24. כל ממשקי Jetpack XR API עדיין דורשים API ברמה 34 בזמן הריצה.
  • ה-Session factory של SceneCore (Session.create) לא מפעיל יותר Intent כדי לקבל את ההרשאה SCENE_UNDERSTANDING. במקום זאת, אפליקציית הלקוח צריכה לבקש מהמשתמש באופן מפורש את ההרשאות לפני שהיא מנסה ליצור את העוגנים. אם המשתמש לא יעניק את ההרשאה, יצירת העוגן תיכשל.

תיקוני באגים

  • תוקן באפשרות getActivitySpacePose() כך שהיא תתחשב בסולם ActivitySpace ותחזיר ערכי תרגום במטרים מותאמים ולא תמיד במטרים לא מותאמים. ‫transformPoseTo משתמשת עכשיו גם ביחידות הנכונות כדי לחשב שינויים בקואורדינטות כש-ActivitySpace מעורבת במקור או ביעד.
  • החל מעכשיו, כשמעבירים העדפה של skybox ריק באמצעות setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom)), ה-skybox מוגדר כ-skybox שחור לחלוטין. כדי לחזור לברירת המחדל של המערכת לגבי תיבת השמיים והגיאומטריה, משתמשים ב-setSpatialEnvironmentPreference(null).

גרסה ‎1.0.0-alpha01

‫12 בדצמבר 2024

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

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

  • ‫SpatialEnvironment: יצירת חוויות אימרסיביות מלאות באמצעות תמונת skybox או גיאומטריית מודל תלת-ממדי כרקע לסצנת ה-XR של הסביבה. אפשר גם להפעיל את התכונה 'העברה' כדי שהסצנה הווירטואלית תשתלב עם הסביבה האמיתית של המשתמש.
  • ‫PanelEntity: אפשר להוסיף תוכן דו-ממדי לסצנות תלת-ממדיות על ידי הטמעה של פריסות ופעילויות סטנדרטיות של Android בחלוניות מרחביות שיכולות לצוף או להיות מעוגנות למשטחים בעולם האמיתי.
  • ‫GltfModelEntity: מיקום, הנפשה ואינטראקציה עם מודלים תלת-ממדיים בסצנה. ‫SceneCore תומך בפורמט הקובץ glTF כדי להקל על השילוב עם מודלים קיימים.
  • ‫SpatialAudio: מוסיפים מקורות אודיו סביבתיים וממוקדים לסצנת תלת-ממד כדי ליצור צליל מרחבי שמעניק חוויה סוחפת.
  • ‫StereoSurfaceEntity: ‏ SceneCore תומך בהעברת תוכן שמעובד ב-Android Surface לעין ימין או לעין שמאל. אפשר להשתמש בזה כדי להציג תוכן סטריאוסקופי בפורמט זה לצד זה או מלמעלה למטה, כמו תמונות סטריאו, סרטוני תלת-ממד או ממשקי משתמש אחרים שמוצגים באופן דינמי. אפליקציות צריכות להשתמש ב-MediaPlayer או ב-ExoPlayer לפענוח וידאו.
  • מערכת רכיבים: SceneCore מציעה מערכת רכיבים חזקה וגמישה להוספת יכולות לתוכן ה-XR, כולל אפשרויות למשתמשים להזיז מודלים ולוחות, לשנות את הגודל שלהם ולבצע איתם אינטראקציה.
  • הצמדה: כשמפעילים את התכונה 'העברה', אפשר להצמיד חלוניות ומודלים למשטחים אמיתיים, וכך המשתמשים יכולים לשלב תוכן וירטואלי בצורה חלקה בסביבה שלהם בעולם האמיתי.
  • תנוחת המשתמש: גישה למיקום המשתמש בסצנה הווירטואלית, כדי להתאים את התוכן למיקום המשתמש.
  • ‫SpatialCapabilities: פיתוח אפליקציות שמותאמות באופן מלא ומנצלות את היכולות המרחביות כשהן זמינות, כמו מיקום תלת-ממדי של תוכן בממשק המשתמש. בנוסף, האפליקציה יכולה לעקוב אחרי שינויים ביכולות בזמן שהיא פועלת, כדי לשנות את חוויית השימוש בהתאם לאופן שבו המשתמש משתמש במכשיר Android XR.

בעיות מוכרות

  • נכון לעכשיו, נדרשת גרסת minSDK של 30 כדי להשתמש ב-Jetpack SceneCore. כפתרון עקיף, מוסיפים את רשומת המניפסט הבאה <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> כדי שיהיה אפשר לבנות ולהפעיל עם minSDK בערך 23.
  • סשן יכול להיות לא תקף במצבים שונים שבהם הפעילות נוצרת מחדש באופן אוטומטי, כולל שינוי הגודל של חלונית ראשית, חיבור ציוד היקפי ומעבר בין מצב בהיר למצב כהה. אם נתקלתם בבעיות שקשורות לביטול תוקף של סשנים, יש כמה פתרונות אפשריים: להגדיר את החלונית הראשית ככזו שלא ניתן לשנות את הגודל שלה, להשתמש בישות של חלונית דינמית, להשבית את יצירת הפעילות מחדש לשינויים ספציפיים בהגדרות או להשבית את השינויים של ערכות הנושא במצב בהיר או במצב כהה.
  • אין תמיכה ברכיבים שאפשר להזיז ולשנות את הגודל שלהם ב-GltfEntity.
  • אין תמיכה ב-Entity.getSize()‎ ב-GltfEntity.
  • אפליקציות Jetpack XR צריכות לבקש את ההרשאה android.permission.SCENE_UNDERSTANDING ב-AndroidManifest.
  • אפשר ליצור סשן רק במכשיר Android XR. בשלב הזה, אם תיצרו סשן ותנסו להשתמש בו במכשיר Android XR שאינו כזה, תקבלו RuntimeException.
  • הגדרת ה-skybox כ-null באמצעות ‎`SpatialEnvironment.setSpatialEnvironmentPreference()`‎ לא יוצרת skybox שחור מלא כמו שמתואר במסמכים. יכול להיות שהתוצאה תהיה תיבת שמיים שמוגדרת כברירת מחדל במערכת, או שלא יהיה שינוי בתיבת השמיים הנוכחית.
  • לקוחות SceneCore צריכים להוסיף את implementation(“com.google.guava:listenablefuture-1.0”) להגדרת Gradle של התלויות של האפליקציה שלהם. בגרסה עתידית, scenecore תכלול את הספרייה הזו כתלות api, כך שהלקוחות לא יצטרכו להצהיר עליה באופן מפורש.
  • ‫SceneCore כולל בטעות את com.google.guava:guava-31.1-android ו-com.google.protobuf:protobuf-javalite כתלות טרנזיטיבית. אם הפעולה הזו גורמת לשגיאות כפולות בכיתה ב-build, אפשר להחריג את שתי התלויות האלה בבטחה.
  • אם האפליקציה שלכם משתמשת ב-SceneCore ומופעל בה ProGuard, היא תקרוס כשתיצרו Session. כפתרון עקיף, אפשר להשבית את ProGuard. מידע נוסף על הפעלת ProGuard זמין במדריך הזה.