Jetpack SceneCore
| העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסת אלפא |
|---|---|---|---|---|
| 6 במאי 2026 | - | - | - | 1.0.0-alpha14 |
הצהרה על יחסי תלות
כדי להוסיף תלות ב-XR SceneCore, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין במאמר בנושא מאגר Maven של Google.
אתם יכולים להוסיף את יחסי התלות של הארטיפקטים שאתם צריכים בקובץ build.gradle של האפליקציה או המודול:
Groovy
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha14" // Optional dependencies for asynchronous conversions implementation "androidx.xr.scenecore:scenecore-guava:1.0.0-alpha14" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha14" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha14") // Optional dependencies for asynchronous conversions implementation("androidx.xr.scenecore:scenecore-guava:1.0.0-alpha14") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha14") }
מידע נוסף זמין במאמר הוספת יחסי תלות ב-build.
משוב
המשוב שלכם עוזר לנו לשפר את Jetpack. נשמח לדעת אם גיליתם בעיות חדשות או אם יש לכם רעיונות איך לשפר את הספרייה הזו. כדאי לעיין בבעיות הידועות בספרייה הזו לפני שמדווחים על בעיה. כדי להוסיף הצבעה בדיווח על בעיה קיימת, לוחצים על כפתור הכוכב.
מידע נוסף זמין במאמרי העזרה בנושא Issue Tracker.
גירסה 1.0
גרסה 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) - נוסף
XrLogAPI. מגדירים את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 שלRenderViewpointARCore במקום עלCameraViewScenePose. השם הזה משקף טוב יותר את ההטמעה החדשה. (I8c967, b/446989745, b/419311998) - ה-methods
PanelEntity/SurfaceEntity.getPerceivedResolutionמקבלות עכשיו את הארגומנטRenderViewpointשהמפתח מספק. בעבר, זמן הריצה בחר באופן שרירותי אתRenderViewpointששימש לחישוב הרזולוציה הנתפסת. (I8c967, b/446989745, b/419311998) - הוסרו
SpatialUser,ScenePose.Headו-ScenePose.CameraView. הפונקציונליות של ממשקי ה-API האלה מכוסה על ידי ממשקי ה-APIArDeviceו-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, ל-
SceneCoreRuntime על סמך לוגיקה ב-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השתנו, והם עברו מסוג Ints לסוגי משנה שלSurfaceEntity. (I419ed) - השמות של סוגי הקבועים
SpatializerConstantהשתנו, והם עברו מסוג Ints לסוגי משנה שלSpatializerConstant. (Ia0e18) - השמות של סוגי הקבועים
TextureSamplerהשתנו, והם עברו מסוג Ints לסוגי משנה שלTextureSampler. (I44078) - סוגי הקבועים
SpatialVisibilityהשתנו מ-Ints לסוגי משנה שלSpatialVisibility. (I70739) - השמות של סוגי הקבועים
ResizeEvent.ResizeStateהשתנו, והם הפכו מסוגי Ints לסוגי משנה של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כבר לא יכול להיות 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) -
ScenecoreFakes נמצאים עכשיו במודולxr:scenecore:scenecore-testing. (Idd951) - שינוי השם של
shouldAutoHideContentלisAutoHideContentWhileResizingEnabledושלshouldAlwaysShowOverlayלisAlwaysShowOverlayEnabled(I97c36, b/432335421) - עדכנו את הקבועים
SceneCoreTextureSamplerכדי לשפר את הקריאות. לדוגמה,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)-
GroupEntityfactory מחזיר עכשיו את הסוג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 של
SceneCoreBaseEntityו-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 מכילה את השמירות האלה.
תכונות חדשות
- נוסף API של רזולוציה נתפסת לישויות של חלוניות ול-
SurfaceEntities. (I118f6) PerceivedResolutionנוספו שיטות קריאה חוזרת (callback) ל-Scene.kt כדי לעקוב אחרי הרזולוציה הנתפסת של החלונית הראשית של הפעילות ב-HSM. (I58084)-
SurfaceEntity– נוספה תמיכה באפליקציה כדי לבקש דגימת יתר בזמן היצירה. כך אפליקציות יכולות להשתמש במסנן דגימת יתר להחלקת קצוות. (I06913) - נוספה מאפיין
recommendedContentBoxInFullSpaceאלActivitySpace. במצב 'מרחב מלא', הפונקציה מחזירה תיבה מומלצת למיקום התוכן. (I4cd6f) - נוסף constructor עמוס מדי לשינוי של רכיב שאפשר להזיז, כדי לאפשר הצמדה. (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כך שיהיו פונקציות השהיה. שינינו את הפרמטרים של create כך שיקבלוUriאוPathבמקוםString. (Id8883) (I0d247), (I25706) - העברנו את
SpatialEnvironment.requestFullSpaceModeואתSpatialEnvironment.requestHomeSpaceModeאל Scene. לדוגמה, אפשר להשתמש ב-session.scene.requestFullSpaceMode()במקום ב-session.scene.spatialEnvironment.requestFullSpaceMode(). ל-addOnPassthroughOpacityChangedListenerול-addOnSpatialEnvironmentChangedListenerיש עכשיו שינויים שמאפשרים שימוש ב-Executors אופציונליים. (I12fe0) (I6b21e) - הוסרו השיטות הבאות שהוצאו משימוש
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.createnow requires aConsumer<ResizeEvent> ResizeEventListenerwas replaced withConsumer<ResizeEvent> ResizableComponent.sizewas renamed toResizableComponent.affordanceSize ResizableComponent.minimumSizewas renamed toResizableComponent.minimumEntitySize ResizableComponent.maximumSizewas renamed toResizableComponent.maximumEntitySize,ResizableComponent.autoHideContentwas renamed toResizableComponent.shouldAutoHideContentResizableComponent.forceShowResizeOverlaywas renamed toResizableComponent.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, שהן אנוטציות של שימוש בטיפוסים. מפתחי 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ב-TestAppSceneCore. (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. - נוספו ל-
SessionExt.ktשיטות הרחבה של קריאה חוזרת (callback) לנראות מרחבית, כדי לעקוב אחרי תנועת התוכן בסצנה בתוך שדה הראייה של המשתמש או מחוצה לו. - התוסף
setPointSourceParamsנוסף ל-SpatialAudioTrack, כך שאפשר לעדכן את הפרמטרים אחרי שהמסלול נוצר. - נוספה מחלקה חדשה, Scene, עם הפניות לממשקי API של
Scenecore. הסצנה תהיה נגישה כמאפיין הרחבה של הסשן. הפונקציות בתוךSessionExtהועברו ל-Scene, ולכן צריך לשנות את הייבוא. לדוגמה,SessionExt.getScene(session).addSpatialCapababilitiesChangedListenerלעומתSessionExt.addSpatialCapabilitiesChangedListener. - נוספה האפשרות
ActivityPose.hitTestAsync, שמאפשרתhitTestנגד תוכן וירטואלי. - נוסף סוג רכיב חדש
SpatialPointerComponent, שמאפשר ללקוחות לציין את הסמל שמוצג עבור מצביע העכבר או להשבית את הסמל. בשלב הזה, אפשר לצרף את הרכיב הזה רק ל-PanelEntityמופעים. - השקנו מפעל חדש
PanelEntityשמקבל את המידות של הפאנל במטרים או בפיקסלים. הוסרה חלונית ישנה שלPanelEntityfactory שמקבלת שני פרמטרים מסוג 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). - הסשן של המחלקה
SceneCoreנמחק לטובת הסשן ב-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. - מעכשיו צריך להגדיר את
HeadTrackingModeב-Session.configure()כדי להשתמש בממשקיSpatialUserAPI. - אם
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.setFullSpaceModeimport 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.getEntitiesOfTypeimport 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 (
Session.create) שלSceneCoreלא מפעיל יותר 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 שלכם, כולל אפשרויות למשתמשים להזיז מודלים ולוחות, לשנות את הגודל שלהם ולקיים איתם אינטראקציה.
- הצמדה: כשמפעילים את התכונה 'מצב Passthrough', אפשר לחבר חלוניות ומודלים למשטחים אמיתיים, וכך המשתמשים יכולים לשלב בצורה חלקה תוכן וירטואלי בסביבה שלהם בעולם האמיתי.
- תנוחת המשתמש: גישה למיקום המשתמש בסצנה הווירטואלית, כדי להתאים את התוכן למיקום המשתמש.
- 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 שאינו Android, תקבלו RuntimeException.
- הגדרת ה-skybox כ-null באמצעות `SpatialEnvironment.setSpatialEnvironmentPreference() לא יוצרת skybox שחור מלא כמו שמתואר במסמך. יכול להיות שהתוצאה תהיה ברירת המחדל של המערכת ל-skybox או שלא יהיה שינוי ב-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 זמין במדריך הזה.