Jetpack SceneCore

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

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

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

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

מגניב

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

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

Kotlin

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

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

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

משוב

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

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

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

גירסה 1.0

גרסה ‎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)
  • AnchorEntityTester API ציבורי לבדיקה (I68404)
  • ממשק ה-API הציבורי לבדיקה SceneCoreTestRule. (Ic72d3)
  • נוספה מחלקה PixelDensity והיא נחשפת דרך Scene#virtualPixelDensity כדי לספק יחס פיקסלים למטר שמבוסס על חומרה למיפוי מדויק של מימדים פיזיים ב-ActivitySpace. (I0e3ac)
  • הוספנו ממשקי API ציבוריים ליצירה ולעיבוד של רשתות בהתאמה אישית. (I7ad2f)
  • ה-API של VertexLayout עודכן כך שישתמש ברשימה של VertexBufferLayout, כאשר כל 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

  • ה-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)
  • הקבועים של SceneCore‏ PlaneSemanticType PlaneOrientation הועברו מ-Ints לסוגים בהתאמה אישית. הקבועים ANY שלהם יוסרו, והלקוחות צריכים לציין במפורש את כל הקבועים הרצויים במקום זאת, או להשתמש בקבועים החדשים של .ALL Set שאי אפשר לשנות. שיטת היצירה AnchorEntity מקבלת עכשיו Set של הסוגים האלה, במקום ערך יחיד. (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 נוצרה מ-ARCore Anchor (I5c7c8)
  • ערך ברירת המחדל של הפרמטר parent בשיטות הייצור ActivityPanelEntity,‏ GltfModelEntity,‏ GroupEntity,‏ PanelEntity ו-SurfaceEntity השתנה מ-ActivitySpace ל-null. כדי לצרף ישות לתרשים הסצנה ולהפוך אותה לגלוי, המפתחים צריכים עכשיו להגדיר באופן מפורש את ההורה שלה במהלך יצירת המופע או באמצעות Entity.parent = ... (Ie7cc1)

תיקוני באגים

  • SceneCore reclaims instances automatically Entity when they become phantom reachable, removing the need for developers to explicitly invoke dispose() to free resources. כדי לוודא שמופע של [ישות] יוחזר בצורה תקינה, המפתחים צריכים:
    • מנתקים אותו מתרשים הסצנה על ידי הגדרת 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)
  • נוסף XrLog API. מגדירים את 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 ARCore במקום על 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 ל-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() לממשק Entity. מחזור החיים עודכן MainPanelEntity. (Ia69d6)

שינויים ב-API

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

תכונות חדשות

  • הוספנו את Perceived Resolution API ל-Panel Entities ול-SurfaceEntities. (I118f6)
  • PerceivedResolution נוספו שיטות של קריאה חוזרת (callback) ל-Scene.kt כדי לעקוב אחרי הרזולוציה הנתפסת של החלונית הראשית של הפעילות ב-HSM. (I58084)
  • SurfaceEntity – נוספה תמיכה באפליקציה כדי לבקש דגימת יתר בזמן היצירה. כך אפליקציות יכולות להשתמש במסנן דגימת-על כדי למנוע שינון. (I06913)
  • נוספה מאפיין recommendedContentBoxInFullSpace אל ActivitySpace. במצב 'מרחב מלא', הפונקציה מחזירה תיבה מומלצת למיקום התוכן. (I4cd6f)
  • נוסף constructor עם עומס יתר לשינוי movable, שמאפשר הצמדה. (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)
  • מספר פונקציות setter של מאפייני 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.requestFullSpaceMode() במקום ב-session.scene.spatialEnvironment.requestFullSpaceMode(). ל-addOnPassthroughOpacityChangedListener ול-addOnSpatialEnvironmentChangedListener יש עכשיו שינויים שמאפשרים שימוש ב-Executors אופציונליים. (I12fe0) (I6b21e)
  • הוסרו ה-methods הבאות שהוצאו משימוש SpatialEnvironment: ‏togglePassthrough,‏ setPassthrough,‏ setPassthroughOpacity,‏ getPassthroughMode,‏ getPassthroughOpacity,‏ setSkybox ו-setGeometry. בנוסף, הוסר סיווג שיצא משימוש SpatialEnvironment.PassthroughMode (I927bd) (I927bd) (I927bd)
  • החלפנו את הפונקציות הבאות מסוג getter ו-setter במאפייני Kotlin: ‏ getCurrentPassthroughOpacity(), ‏ get/setPassthroughOpacityPreference(), ‏ get/setSpatialEnvironmentPreference(), ‏ isSpatialEnvironmentPreferenceActive() (I33a7b) (Ie06e2) (Ie06e2)SpatialEnvironment
  • הסוג של 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)
  • השיטה PanelEntity.enablePanelDepthTest() הוחלפה במאפיין panelClippingConfig. מגדירים את Scene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true) כדי להפעיל את בדיקת העומק, או מגדירים את PanelClippingConfig(isDepthTestEnabled = false) כדי להשבית אותה. (I0cbe0)
  • הערך של Scene.mainPanelEntity הוא עכשיו MainPanelEntity במקום PanelEntity (I7125a)
  • השם של השיטה setFullSpaceMode של Scene שונה ל-configureBundleForFullSpaceModeLaunch, והשם של השיטה setFullSpaceModeWithEnvironmentInherited שונה ל-configureBundleForFullSpaceModeLaunchWithEnvironmentInherited. (I0cbe0) (I0cbe0)
  • השמות של הערכים UNKNOWN,‏ 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
  • המחלקות SpatialVisibility הוחלפו באובייקט ציבורי עם ערכי Int קבועים. הפרמטר setSpatialVisibilityChangedListener מקבל עכשיו Consumer<Int> במקום Consumer<SpatialVisibility> (Ie7e8c)
  • הקבועים PointerCaptureComponent שונו והועברו לאובייקט PointerCaptureComponent.PointerCaptureState (I9c7ac)
  • הטקסט PointerCaptureComponents' StateListener הוחלף בטקסט Consumer<Int>. (I9c7ac)
  • הטקסט InputEventListener הוחלף בטקסט Consumer<InputEvent> (I9c7ac)
  • setPreferredAspectRatio עבר מ-Scene class לאובייקט 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 מחזירים עכשיו 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. עדיין נדרש API 34 בזמן הריצה לחבילות XR. (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) (Ia8420)
  • כל השיטות האסינכרוניות שמחזירות ListenableFuture הוחלפו בפונקציות השהיה של Kotlin. מפתחי Java שרוצים להשתמש בשיטות אסינכרוניות שמבוססות על ListenableFuture במקום בפונקציות השהיה של Kotlin צריכים עכשיו להשתמש בפונקציות הרחבה ב-:xr:scenecore-scenecore-guava. לדוגמה, GuavaExrImage מכיל את הפונקציות האסינכרוניות ExrImage ששקולות ל-Guava,‏ GuavaScenePose מכיל את הפונקציות האסינכרוניות ScenePose ששקולות ל-Guava,‏ 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 מחזירות עכשיו גדלים במרחב ההורה.
  • הפונקציות Entity.setPose, ‏ Entity.getPose, ‏ Entity.setScale, ‏ Entity.getScale, ‏ Entity.setAlpha ו-Entity.getAlpha מקבלות עכשיו פרמטר חדש relativeTo, שמאפשר לקבל או להגדיר ערכים ביחס למרחבים שונים. הערכים הנתמכים הם 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 שמקבל את המידות של הפאנל במטרים או בפיקסלים. הוסרה חלונית של מפעל PanelEntity ישן שמקבל שני פרמטרים מסוג מאפיין.

שינויים ב-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).
  • הסשן של המחלקה ב-SceneCore נמחק לטובת הסשן ב-XR Runtime.
  • השם של StereoSurfaceEntity שונה ל-SurfaceEntity.
  • ה-methods‏ Entity.setSize ו-Entity.getSize הוסרו, ואותן ה-methods נוספו ל-PanelEntity.
  • השם של PointSourceAttributes שונה ל-PointSourceParams.
  • השם של SpatializerConstants.SOURCE\_TYPE\_BYPASS שונה ל-SpatializerConstants.SOURCE\_TYPE\_DEFAULT.
  • הגישה לישות PointSourceParams שונתה מגישה ציבורית לגישה פנימית.
  • מעכשיו צריך להגדיר את AnchorEntity.create ב-Session.configure().PlaneTrackingMode
  • מעכשיו צריך להגדיר את HeadTrackingMode ב-Session.configure() כדי להשתמש בממשקי SpatialUser 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, שמאפשר ליצור לוחות ציור של Spherical ושל Hemispherical לצורך עיבוד של מדיה סוחפת.
  • הפרמטר StereoSurfaceEntity.create() מקבל עכשיו את הפרמטר CanvasShape. (הפרמטר הזה מתעלם כרגע, אבל ייעשה בו שימוש בגרסה עתידית)
  • הפרמטר StereoSurfaceEntity.create() לא מקבל יותר את הפרמטר Dimensions. האפליקציות צריכות לשלוט בגודל של אזור הציור באמצעות הגדרת CanvasShape
  • StereoSurfaceEntity כולל חבר CanvasShape שאפשר להגדיר באופן דינמי.
  • StereoSurfaceEntity.dimensions הוא עכשיו מאפיין לקריאה בלבד. אפליקציות צריכות להגדיר את CanvasShape כדי לשנות מאפיינים.
  • מעכשיו אפשר לאפס את StereoMode ב-StereoSurfaceEntity אחרי הבנייה.

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

  • הפחתנו את הערך של 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 זמין במדריך הזה.