Jetpack SceneCore
| העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסת אלפא |
|---|---|---|---|---|
| 22 באוקטובר 2025 | - | - | - | 1.0.0-alpha08 |
הצהרה על יחסי תלות
כדי להוסיף תלות ב-XR SceneCore, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין במאמר בנושא מאגר Maven של Google.
מוסיפים את יחסי התלות של הארטיפקטים שאתם צריכים בקובץ build.gradle של האפליקציה או המודול:
Groovy
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha08" // Optional dependencies for asynchronous conversions implementation "androidx.xr.scenecore:scenecore-guava:1.0.0-alpha08" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha08" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha08") // Optional dependencies for asynchronous conversions implementation("androidx.xr.scenecore:scenecore-guava:1.0.0-alpha08") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha08") }
מידע נוסף על יחסי תלות זמין במאמר הוספת יחסי תלות ב-build.
משוב
המשוב שלכם עוזר לנו לשפר את Jetpack. נשמח לשמוע מכם אם תגלו בעיות חדשות או אם יש לכם רעיונות לשיפור הספרייה הזו. לפני שיוצרים ספרייה חדשה, כדאי לעיין בבעיות הקיימות בספרייה הזו. כדי להוסיף את ההצבעה שלכם לבעיה קיימת, לוחצים על לחצן הכוכב.
מידע נוסף זמין במאמרי העזרה בנושא הכלי למעקב אחר בעיות.
גירסה 1.0
גרסה 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, תגרום להחזרת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 של
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 מכילה את הקומטים האלה.
תכונות חדשות
- הוספנו את 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ל'סצנה'. לדוגמה, אפשר להשתמש ב-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כבר לא יכול להיות ריק. כדי לציין שצריך להשתמש בסמל ברירת המחדל של המערכת לציון מיקום הסמן, צריך להשתמש ב-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, הפונקציהEntityMoveListener shouldDisposeParentAnchorשונתה ל-disposeParentOnReAnchor systemMovable, הפונקציה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 לאובייקט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. עדיין נדרש 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)
- הספרייה הזו משתמשת עכשיו בהערות לגבי ערכי null של JSpecify, שהן הערות לשימוש בסוגים. מפתחי 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)
תיקוני באגים
- עדכון של כלל Jetpack XR Scenecore
ProGuardכדי למנוע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הוא הגודל במרחב ההורה. - הפונקציות
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, עם הפניות לממשקי
ScenecoreAPI. הסצנה תהיה נגישה כמאפיין הרחבה של הסשן. הפונקציות בתוך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). - הכיתה Session ב-
SceneCoreנמחקה לטובת Session ב-XR Runtime. - השם של
StereoSurfaceEntityשונה ל-SurfaceEntity. - הוסרו
Entity.setSizeו-Entity.getSize, ואותן שיטות נוספו ל-PanelEntity. - השם של
PointSourceAttributesשונה ל-PointSourceParams. - השם של
SpatializerConstants.SOURCE\_TYPE\_BYPASSשונה ל-SpatializerConstants.SOURCE\_TYPE\_DEFAULT. - הגישה לישות
PointSourceParamsשונתה מגישה ציבורית לגישה פנימית. - כדי להשתמש ב-
AnchorEntity.create, צריך להגדיר אתPlaneTrackingModeב-Session.configure(). - ממשקי
SpatialUserAPI מחייבים עכשיו הגדרה שלHeadTrackingModeב-Session.configure(). - אם
ResizableComponentלא מצורף, יומן ברמת INFO יוצג במקום יומן ברמת ERROR. - ה-Fov class הוא עכשיו Kotlin class רגיל.
- מפצלים את
Entity.ktכדי להציב כל סוג ישות קונקרטי בקובץ משלו. - כשיוצרים
PanelEntityחדש, רוב התצוגות המפורטות משויכות מחדש לFrameLayout. כך קל יותר להשתמש ב-LayoutInspectorעם חלוניות מרחביות. - מופע
XrExtensionsשנעשה בו שימוש כרגע רשום עכשיו בפלטפורמה, בדרך הטובה ביותר, כדי לעזור בניפוי באגים באפליקציה.
תיקוני באגים
- נוסף תיקון כדי למנוע קריסה שיכולה לקרות כשמעבירים
PanelEntityעםMovableComponentועםAnchorPlacement - תוקנה בעיה שבה
ResizableComponentסיפק גדלים לא עדכניים בקריאה החוזרת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)
- עדכון של כלל Jetpack XR Scenecore
ProGuardכדי למנוע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
- העברנו את שיטות היצירה מהמחלקה
Sessionלשיטת עזר בכל סוג:- השדה
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)
- השדה
- השיטות הבאות שהוצאו משימוש הוסרו:
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 בזמן הריצה.
- הסשן של
SceneCore(Session.create) כבר לא מפעיל כוונה לרכוש את ההרשאה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"/>כדי שיהיה אפשר לבצע build ולהפעיל עם minSDK בגרסה 23. - סשן יכול להיות לא תקף במצבים שונים שבהם הפעילות נוצרת מחדש באופן אוטומטי, כולל שינוי הגודל של חלונית ראשית, חיבור ציוד היקפי ומעבר בין מצב בהיר למצב כהה. אם נתקלתם בבעיות שקשורות לביטול תוקף של סשנים, יש כמה פתרונות אפשריים: להגדיר את החלונית הראשית ככזו שלא ניתן לשנות את הגודל שלה, להשתמש בישות של חלונית דינמית, להשבית את יצירת הפעילות מחדש לשינויים ספציפיים בהגדרות או להשבית את השינויים בערכת הנושא של מצב בהיר/כהה.
- אין תמיכה ברכיבים שאפשר להזיז ולשנות את הגודל שלהם ב-GltfEntity.
- אין תמיכה ב-Entity.getSize() ב-GltfEntity.
- אפליקציות Jetpack XR צריכות לבקש הרשאה
android.permission.SCENE_UNDERSTANDINGב-AndroidManifest. - אפשר ליצור סשן רק במכשיר Android XR. בשלב הזה, אם תיצרו סשן ותנסו להשתמש בו במכשיר שאינו Android XR, תקבלו 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 זמין במדריך הזה.