Jetpack SceneCore
| Najnowsza aktualizacja | Wersja stabilna | Wersja kandydująca do publikacji | Wersja beta | Wersja Alfa | 
|---|---|---|---|---|
| 22 października 2025 r. | - | - | - | 1.0.0-alpha08 | 
Deklarowanie zależności
Aby dodać zależność od XR SceneCore, musisz dodać repozytorium Google Maven do projektu. Więcej informacji znajdziesz w repozytorium Maven Google.
Dodaj zależności dotyczące potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:
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") }
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Opinia
Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.0
Wersja 1.0.0-alpha08
22 października 2025 r.
Publikacja androidx.xr.scenecore:scenecore-*:1.0.0-alpha08 Wersja 1.0.0-alpha08 zawiera te zmiany.
Zmiany w interfejsie API
- Nazwa ActivityPanelEntity.moveActivityzostała zmieniona natransferActivity(I273c5, b/430332856)
Poprawki błędów
- Dodano :xr:scenecore:scenecore-spatial-renderingi:xr:scenecore:scenecore-spatial-corejako zależności implementacyjne:xr:scenecore:scenecore(I6ab65, b/447000520)
- Jeśli po zniszczeniu sesji nastąpi próba dostępu do session.scene, zostanie zgłoszony wyjątek. (I77e6f)
Wersja 1.0.0-alpha07
24 września 2025 r.
androidx.xr.scenecore:scenecore:1.0.0-alpha07, androidx.xr.scenecore:scenecore-guava:1.0.0-alpha07 i androidx.xr.scenecore:scenecore-testing:1.0.0-alpha07 są zwalniane. Wersja 1.0.0-alpha07 zawiera te zmiany.
Zmiany w interfejsie API
- Zmieniliśmy nazwę interfejsu fixedAspectRationaisFixedAspectRatioEnabledi uczyniliśmy go właściwością logiczną (I5c4e8, b/440588971).
- ScenecoreFałszywe informacje znajdują się teraz w module- xr:scenecore:scenecore-testing. (Idd951)
- Zmieniono nazwę shouldAutoHideContentnaisAutoHideContentWhileResizingEnabledishouldAlwaysShowOverlaynaisAlwaysShowOverlayEnabled(I97c36, b/432335421)
- Zaktualizowano stałe SceneCoreTextureSampler, aby były bardziej czytelne, np.TextureSampler.MinFilter.LINEARto terazTextureSampler.MIN_FILTER_LINEAR(Ib159c).
- Funkcja ustawiająca setKeyEntitysceny została scalona ze zmiennąkeyEntity. UstawieniekeyEntityna nieruchomy obiekt, taki jakAnchorEntity, spowoduje zgłoszenieIllegalArgumentExceptionzamiast zwrócenia wartości logicznej „fałsz”. (I62080, b/428721695, b/422215745)
- Zmienna SpatialModeChangeListenersceny została zastąpiona zmiennąsetSpatialModeChangedListener. Przyjmuje on wartośćConsumer<SpatialModeChangeEvent>zamiastSpatialModeChangedListener.setSpatialModeChangedListenermoże teraz opcjonalnie przyjmować wykonawcę. (I62080, b/428721695, b/422215745)
- Usunięto parametr bundlezActivityPanelEntity.startActivity(I64344, b/430332856, b/430333040)
- Zmieniono nazwę SpatializerConstants.SOURCE_TYPE_BYPASSnaSpatializerConstants.SOURCE_TYPE_DEFAULT. (Ifc7fe, b/422215565)
- Dodano stałą SpatialSoundPool.PLAY_FAILED. (Ifc7fe, b/422215565)
- Dodaliśmy argumenty domyślne do metod SpatialSoundPool.play. (Ifc7fe, b/422215565)
- Usunięto wartość zwracaną setterów w SpatialAudioTrackBuilder. (Ifc7fe, b/422215565)
- Zmiany w SurfaceEntity
- SurfaceEntity.CanvasShapezmienił(a) nazwę- Shape
- SurfaceEntity.CanvasShape.Vr180Hemispherezmienił(a) nazwę- Hemisphere
- SurfaceEntity.CanvasShape.Vr360Spherezmienił(a) nazwę- Sphere
- SurfaceEntity.EdgeFeatheringParams.SmoothFeatherzmienił(a) nazwę- RectangleFeather
- SurfaceEntity.EdgeFeathingParams.SolidEdgezmienił(a) nazwę- NoFeathering
- SurfaceEntity.ContentSecurityLevelzmienił(a) nazwę- SurfaceProtection
- SurfaceEntity.ContentSecurityLevel.{values}dodał prefiks- SURFACE_PROTECTION_.
- SurfaceEntity.SuperSampling.{$values}dodał(a)- SUPER_SAMPLING_prefiks
- SurfaceEntity.StereoMode.{values}dodał(a)- STEREO_MODE_prefiks
- SurfaceEntity.ContentColorMetadata.maxCLLzmieniono nazwę- maxContentLightLevel(I7eb5f, b/422216050, b/427529950)
 
- Nazwa launchActivityzostała zmieniona nastartActivity(I7db90, b/430332856)
- Użytkownik Scene.activitySpaceRootzostał usunięty. Zamiast niej używaj zasadyScene.activitySpace. (I05ee8, b/378706624, b/422215745)
- configureBundleForFullSpaceModeLaunchi- configureBundleForFullSpaceModeLaunchWithEnvironmentInheritedzostały zmienione na- createBundleForFullSpaceModeLaunchi- createBundleForFullSpaceModeLaunchWithEnvironmentInheritedoraz przeniesione do pliku LaunchUtils.kt jako metody najwyższego poziomu. Jako pierwszy parametr przyjmują Session (I64a2c, b/437186050).
- GroupEntityfactory zwraca teraz typ- GroupEntityzamiast Entity. (I66042)
Poprawki błędów
- Zgłaszaj wyjątek IllegalStateException, gdy instancja encji jest używana po zwolnieniu. (I90990, b/427314036, b/432063442)
Wersja 1.0.0-alpha06
13 sierpnia 2025 r.
androidx.xr.scenecore:scenecore:1.0.0-alpha06, androidx.xr.scenecore:scenecore-guava:1.0.0-alpha06 i androidx.xr.scenecore:scenecore-testing:1.0.0-alpha06 są zwalniane. Wersja 1.0.0-alpha06 zawiera te zmiany.
Zmiany w interfejsie API
- Usuń ograniczenia dotyczące interfejsów API SceneCore,BaseEntityiBaseScenePose(88c0ff6)
Wersja 1.0.0-alpha05
30 lipca 2025 r.
androidx.xr.scenecore:scenecore-guava:1.0.0-alpha05, androidx.xr.scenecore:scenecore-testing:1.0.0-alpha05 i androidx.xr.scenecore:scenecore:1.0.0-alpha05 są zwalniane. Wersja 1.0.0-alpha05 zawiera te zmiany.
Nowe funkcje
- Dodano interfejs API Perceived Resolution do jednostek panelu i SurfaceEntities. (I118f6)
- PerceivedResolutionMetody wywołania zwrotnego dodane do pliku Scene.kt w celu monitorowania postrzeganej rozdzielczości głównego panelu aktywności w HSM. (I58084)
- SurfaceEntity– dodano obsługę aplikacji, która może prosić o supersampling w momencie tworzenia. Umożliwia to aplikacjom używanie filtra nadpróbkowania do wygładzania krawędzi. (I06913)
- Dodano właściwość recommendedContentBoxInFullSpacedo usługiActivitySpace. W trybie pełnoekranowym zwraca rekomendowane pole, w którym mają się znajdować treści. (I4cd6f)
- Dodano przeciążony konstruktor modyfikatora przenośnego, który umożliwia zakotwiczenie. (Ic0c70)
Zmiany w interfejsie API
W tej wersji wprowadziliśmy w SceneCore wiele zmian w interfejsie API. Kilka klas zostało zmienionych lub przeniesionych do innych modułów, a większość metod pobierania i ustawiania została zastąpiona właściwościami Kotlin. Do czasu pierwszej wersji beta spodziewamy się kolejnych zmian w interfejsie API, ale nie będą one tak liczne ani tak znaczące.
- Zmiana nazw i przeniesienie tych klas i interfejsów: androidx.xr.scenecore.PixelDimensionsnaandroidx.xr.runtime.math.IntSize2d,androidx.xr.scenecore.Dimensionsnaandroidx.xr.runtime.math.FloatSize3d,androidx.xr.scenecore.ActivityPosenaScenePose,androidx.xr.scenecore.ContentlessEntitynaGroupEntity,androidx.xr.scenecore.PlaneTypenaPlaneOrientation,androidx.xr.scenecore.PlaneSemanticnaPlaneSemanticType. (Ifd405)(I3b622) (If534d)
- Niektóre metody ustawiające właściwości klasy Scenezostały ustawione jako prywatne, ponieważ nie miały być zmieniane przez klientówSceneCore:activitySpace,activitySpaceRoot,mainPanelEntity,perceptionSpace,spatialCapabilities,spatialEnvironmentispatialUser. (I2f506)
- W przypadku elementu zmieniono te właściwości: get/setParent(),setContentDescription; wycofano właściwośćEntity.is/setHidden(), zamiast niej używaj właściwościEntity.is/setEnabled. (Ibc4c6)
- Usunięto klasę androidx.xr.scenecore.BasePanelEntity. Zamiast niej używaj bezpośrednio klasyPanelEntity. Zastąpiono metody pobierające i ustawiające dlaPanelEntitywłaściwościami. Zmieniono usługęPanelEntity.sizezFloat3dSizenaFloat2dSize. Usunięto wycofaną metodęandroidx.xr.scenecore.PanelEntity.getPixelDimensions. Zamiast niej używaj metodygetSizeInPixels. (Icc174)
- Tekst androidx.xr.scenecore.OnSpaceUpdatedListenerzostał zamieniony naRunnable. (I19308)
- Zastąpiono SpatialUser.getCameraViews()usługą. (Ib0cc5) W przypadkuExrImageiGltfModel:zmieniliśmy metodycreatena funkcje zawieszania; zmodyfikowaliśmy parametry tworzenia, aby akceptowałyUrilubPathzamiastString. (Id8883) (I0d247), (I25706)
- Przeniesiono SpatialEnvironment.requestFullSpaceModeiSpatialEnvironment.requestHomeSpaceModedo sceny, np. użyjsession.scene.requestFullSpaceMode()zamiastsession.scene.spatialEnvironment.requestFullSpaceMode().addOnPassthroughOpacityChangedListeneriaddOnSpatialEnvironmentChangedListenermają teraz zastąpienia, które akceptują opcjonalne obiekty Executor. (I12fe0) (I6b21e)
- Usunięto te wycofane metody SpatialEnvironment:togglePassthrough,setPassthrough,setPassthroughOpacity,getPassthroughMode,getPassthroughOpacity,setSkyboxisetGeometry. Usunięto też wycofaną klasęSpatialEnvironment.PassthroughMode(I927bd) (I927bd) (I927bd)
- Zastąpiliśmy te metody pobierające i ustawiające SpatialEnvironmentwłaściwościami Kotlin:getCurrentPassthroughOpacity(),get/setPassthroughOpacityPreference(),get/setSpatialEnvironmentPreference(),isSpatialEnvironmentPreferenceActive()(I33a7b) (Ie06e2) (Ie06e2)
- Typ SpatialEnvironmentPreference.preferredPassthroughOpacityzmieniono zFloat?naFloat. Nie akceptuje już wartości null. Zamiast tego używa sięSpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCE, aby zasygnalizować brak preferencji dotyczących krycia. (I40107)
- Zaktualizowano parametr windowBoundsPxnapixelDimensions, a jego typ z Rect naIntSize2dw metodzie create. (I1926e)
- SpatialEnvironmentkonstruktor jest teraz wewnętrzny (I75a51)
- Zastąpiono klasy SpatialPointerIconNoneiSpatialPointerIconCircleobiektami towarzyszącymiSpatialPointerIcon.NONEiSpatialPointerIcon.CIRCLE(I416d2)
- Pole SpatialPointerIconw tabeliSpatialPointerComponentnie może już mieć wartości null. Użyj wartościSpatialPointerIcon.DEFAULTzamiast wartości null, aby wskazać, że należy użyć domyślnej ikony wskaźnika systemu. (I416d2)
- Zastąpiliśmy androidx.xr.scenecore.AnchorEntity.getState()właściwością tylko do odczytu. Zmieniliśmy nazwy parametrów w metodzieAnchorEntity.create(), aby były bardziej zrozumiałe. W metodachAnchorEntitysłużących do ustawiania i dodawania detektorów detektor został przeniesiony na ostatni argument, aby umożliwić stosowanie lambd końcowych. Zastąpionoandroidx.xr.scenecore.OnStateChangedListenerw przypadkuAnchorEntitytekstemConsumer<AnchorEntity.State>. (I472e0)
- GltfModelEntity.getAnimationState()jest teraz usługą. (I10b29)
- Zastąpiono ActivitySpace.getBounds()usługą. Zmieniono nazwęActivitySpace.addBoundsChangedListenernaActivitySpace.addOnBoundsChangedListener. ZastąpionoActivitySpace.setOnSpaceUpdatedListenermetodami dodawania i usuwania. (I4c956)
- AnchorPlacement: planeTypeFilterzmieniono na- anchorablePlaneOrientations, a- planeSemanticFilterzmieniono na- anchorablePlaneSemanticTypes. Dodanie- MovableComponentdo- AnchorEntitylub- ActivitySpacezwróci wartość „false”,- MoveListenerzostała zmieniona na- EntityMoveListener shouldDisposeParentAnchor,- EntityMoveListener shouldDisposeParentAnchorzostała zmieniona na- disposeParentOnReAnchor systemMovable,- disposeParentOnReAnchor systemMovablezostała usunięta z funkcji- createna rzecz- creeateCustomMovable,- createSystemMovablei- createAnchorable(If11c4)
- Usuwa koncepcję zajęć SurfaceEntity.featherRadiusX/Yi dodaje koncepcję zajęćEdgeFeatheringParams. (Ic78fc)
- Metoda PanelEntity.enablePanelDepthTest()została zastąpiona właściwościąpanelClippingConfig. UstawScene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true), aby włączyć testowanie głębi, lubPanelClippingConfig(isDepthTestEnabled = false), aby je wyłączyć. (I0cbe0)
- Scene.mainPanelEntityma teraz typ- MainPanelEntityzamiast- PanelEntity(I7125a)
- Zmieniono nazwę metody setFullSpaceModew scenie naconfigureBundleForFullSpaceModeLaunch, a metodysetFullSpaceModeWithEnvironmentInheritednaconfigureBundleForFullSpaceModeLaunchWithEnvironmentInherited. (I0cbe0) (I0cbe0)
- Zmiana nazw wartości UNKNOWN, OUTSIDE_FOV, PARTIALLY_WITHIN_FOV i WITHIN_FOV na SPATIAL_VISIBILITY_UNKNOWN, SPATIAL_VISIBILITY_OUTSIDE_FIELD_OF_VIEW, SPATIAL_VISIBILITY_PARTIALLY_WITHIN_FIELD_OF_VIEW i SPATIAL_VISIBILITY_WITHIN_FIELD_OF_VIEW (Ie7e8c)SpatialVisibility
- Klasa SpatialVisibilityzostała zastąpiona obiektem publicznym ze stałymi wartościami Int.setSpatialVisibilityChangedListenerakceptuje terazConsumer<Int>zamiastConsumer<SpatialVisibility>(Ie7e8c)
- PointerCaptureComponentstałych zmieniono nazwy i przeniesiono do obiektu- PointerCaptureComponent.PointerCaptureState(I9c7ac)
- Tekst PointerCaptureComponents' StateListenerzostał zamieniony naConsumer<Int>. (I9c7ac)
- Tekst InputEventListenerzostał zamieniony naConsumer<InputEvent>(I9c7ac)
- setPreferredAspectRatiozostał przeniesiony z klasy Scene do obiektu- SpatialWindowi jako pierwszy parametr przyjmuje Session. (I7b717)
- Entity.setHidden()zastąpiono przez- Entity.setEnabled(), a- Entity.isHidden()zastąpiono przez- Entity.isEnabled().- setHidden(false)jest równe- setEnabled(true)i- isHidden() == !isEnabled(). (Icf0de)
- Typ Entity.contentDescriptionzostał zmieniony z ciągu znaków naCharSequence. (Ie59be)
- Session.createi- Session.configurezwracają teraz- SecurityException, gdy nie przyznano wystarczających uprawnień, zamiast zwracać- SessionCreatePermissionsNotGrantedlub- SessionConfigurePermissionsNotGranted. (I7c488)
- ResizableComponent.createwymaga teraz- Consumer<ResizeEvent> ResizeEventListenerzostał zastąpiony przez- Consumer<ResizeEvent> ResizableComponent.sizezostał zmieniony na- ResizableComponent.affordanceSize ResizableComponent.minimumSizezostał zmieniony na- ResizableComponent.minimumEntitySize ResizableComponent.maximumSizezostał zmieniony na- ResizableComponent.maximumEntitySize,- ResizableComponent.autoHideContentzostał zmieniony na- ResizableComponent.shouldAutoHideContent- ResizableComponent.forceShowResizeOverlayzostał zmieniony na- ResizableComponent.shouldAlwaysShowOverlay(I97a2d)
- Zmniejszono wartość minSDKdo 24 w przypadku reklamodawcówandroidx.xr.scenecoreiandroidx.xr.compose. Pakiety XR nadal wymagają interfejsu API 34 w czasie działania. (I17224)
- Usunięto ograniczenie RequiresApi(34)we wszystkich pakietach Jetpack XR. To ograniczenie było zbędne, ponieważ Jetpack XR jest obecnie dostępny tylko na urządzeniach z poziomem API 34 lub wyższym. (Iae0f8)
- Główny artefakt SceneCore(xr:scenecore:scenecore) będzie zawierać tylko asynchroniczne interfejsy API w stylu Kotlin. Programiści Java mogą korzystać z bibliotekixr:scenecore:scenecore-guava, aby uzyskiwać dostęp do zgodnych interfejsów API. (If221b)
- Projekty wydane w Kotlinie 2.0 wymagają do użycia KGP 2.0.0 lub nowszego (Idb6b5).
- Ta biblioteka korzysta teraz z adnotacji o wartości null JSpecify, które są używane w typie. Deweloperzy korzystający z języka Kotlin powinni używać tego argumentu kompilatora, aby wymusić prawidłowe użycie: -Xjspecify-annotations=strict(jest to domyślne ustawienie od wersji 2.1.0 kompilatora Kotlin) (Ia8420)
- Wszystkie metody asynchroniczne, które zwracają ListenableFuture, zostały zastąpione funkcjami zawieszania w Kotlinie. Deweloperzy Java, którzy chcą używać metod asynchronicznych opartych naListenableFuturezamiast funkcji zawieszających Kotlin, muszą teraz używać funkcji rozszerzeń w:xr:scenecore-scenecore-guava. Na przykładGuavaExrImagezawiera asynchroniczne funkcje ExrImage odpowiadające funkcjom Guava,GuavaScenePosezawiera asynchroniczne funkcjeScenePoseodpowiadające funkcjom Guava,GuavaGltfModelzawiera asynchroniczne funkcjeGuava-equivalent GltfModelitd. (If7283) (I0af60) (If7283) (Ia8515) (I4efdf) (I54bbf) (I3467a) (I82a33)
Poprawki błędów
- Zaktualizowano regułę Jetpack XR Scenecore ProGuard, aby zapobiecAbstractMethodErrorw przypadku zminimalizowanych klientów. (I91a01)
- Dodatkowe poprawki obsługi minifikacji Proguard w przypadku Jetpack XR SceneCore(I4f47e)
- Usunęliśmy błąd, który mógł powodować awarię w przypadku, gdy InteractableComponentwhitPositionwInputEventzwracał wartość null (I7a695).hitPosition
- Nazwy wartości trybu konfiguracji zostały zmienione, aby odzwierciedlały ich działanie. (I6d247)
- Rozwiązaliśmy problemy z polem widzenia i HitTestwSceneCoreTestApp. (I2c51e)
- Naprawiono błąd w funkcji SpatialCapabilities.hasCapability(), która zwracała wartość „prawda”, jeśli którykolwiek z przekazanych w niej argumentów był prawdziwy, zamiast zwracać wartość „prawda” tylko wtedy, gdy wszystkie argumenty były prawdziwe. (I2cd40)
- SurfaceEntity.StereoMode.TOP_BOTTOMzaktualizowano, aby górna mapa była widoczna dla lewego oka, a dolna dla prawego. (I4ae68)
Wersja 1.0.0-alpha04
7 maja 2025 r.
Publikacje androidx.xr.scenecore:scenecore:1.0.0-alpha04 i androidx.xr.scenecore:scenecore-testing:1.0.0-alpha04 Wersja 1.0.0-alpha04 zawiera te zmiany.
Nowe funkcje
- Funkcja obsługi powrotu będzie teraz działać w przypadku elementów panelu bez osadzonych aktywności. Aby działało przekazywanie wstecz, musisz określić android:enableOnBackInvokedCallback= "true"w manifeście Androida.
- StereoSurfaceEntityobsługuje teraz odtwarzanie MV-HEVC za pomocą 2 nowych wartości- StereoMode: MULTIVIEW_LEFT_PRIMARY i MULTIVIEW_RIGHT_PRIMARY.
- PanelEntity.setSizei- PanelEntity.getSizezwracają teraz rozmiary w przestrzeni nadrzędnej.
- Entity.setPose,- Entity.getPose,- Entity.setScale,- Entity.getScale,- Entity.setAlphai- Entity.getAlphaprzyjmują teraz nowy parametr- relativeTo, który umożliwia pobieranie i ustawianie wartości względem różnych przestrzeni. Obsługiwane wartości to Parent, Activity i Real World spaces, a domyślna wartość tego parametru to Parent.
- Do SessionExt.ktdodano metody rozszerzenia wywołania zwrotnego widoczności przestrzennej, aby monitorować, kiedy zawartość sceny przesuwa się w obrębie pola widzenia użytkownika lub poza nie.
- Element setPointSourceParamszostał dodany do elementuSpatialAudioTrack, co umożliwia aktualizowanie parametrów po utworzeniu ścieżki.
- Dodaliśmy nową klasę Scene z odwołaniami do interfejsów ScenecoreAPI. Scena będzie dostępna jako właściwość rozszerzenia sesji. Funkcje wSessionExtzostały przeniesione do sceny, więc importy trzeba będzie dostosować, np.SessionExt.getScene(session).addSpatialCapababilitiesChangedListener–SessionExt.addSpatialCapabilitiesChangedListener
- Dodano emotikon ActivityPose.hitTestAsync, który umożliwiahitTestw przypadku treści wirtualnych.
- Dodano nowy typ komponentu SpatialPointerComponent, który umożliwia klientom określenie ikony renderowanej dla wskaźnika lub wyłączenie ikony. Ten komponent można obecnie dołączać tylko doPanelEntityinstancji.
- Wprowadzamy nowy PanelEntity, który przyjmuje wymiary panelu w metrach lub pikselach. Usunięto starszą fabrykęPanelEntity, która przyjmowała 2 parametry typu Dimension dla panelu.
Zmiany w interfejsie API
- Usunięto ograniczenie RequiresApi(34)we wszystkich pakietach Jetpack XR. To ograniczenie było zbędne, ponieważ Jetpack XR jest obecnie dostępny tylko na urządzeniach z poziomem API 34 lub wyższym. (Iae0f8)
- Projekty wydane w Kotlinie 2.0 wymagają do użycia KGP 2.0.0 lub nowszego (Idb6b5).
- Zajęcia PermissionHelperzostały usunięte.
- Środowisko wykonawcze PanelEntity.getPixelDensityzostało wycofane.
- PanelEntity.setPixelDimensionsi- PanelEntity.getPixelDimensionzostały usunięte i zastąpione przez- setSizeInPixelsi- getSizeInPixels.
- Opcja Entity.getActivitySpaceAlphazostała usunięta. Można go zastąpić elementemEntity.getAlpha(Space.Activity).
- Opcja Entity.getWorldSpaceScalezostała usunięta. Można go zastąpić elementemEntity.getScale(Space.REAL\_WORLD).
- Klasa Session w SceneCorezostała usunięta na rzecz klasy Session w środowisku wykonawczym XR.
- Nazwa StereoSurfaceEntityzostała zmieniona naSurfaceEntity.
- Entity.setSizei- Entity.getSizezostaną usunięte, a te same metody zostaną dodane do- PanelEntity.
- Nazwa PointSourceAttributeszostała zmieniona naPointSourceParams.
- Nazwa SpatializerConstants.SOURCE\_TYPE\_BYPASSzostała zmieniona naSpatializerConstants.SOURCE\_TYPE\_DEFAULT.
- Element PointSourceParamszostał zmieniony z dostępu publicznego na dostęp wewnętrzny.
- AnchorEntity.createwymaga teraz skonfigurowania- PlaneTrackingModew- Session.configure().
- Interfejsy API SpatialUserwymagają teraz skonfigurowania parametruHeadTrackingModewSession.configure().
- Jeśli nie jest dołączony, zamiast logu na poziomie ERROR zostanie wygenerowany log na poziomie INFO.ResizableComponent
- Klasa Fov jest teraz zwykłą klasą Kotlin.
- Podziel Entity.kt, aby umieścić każdy typ konkretnego elementu w osobnym pliku.
- Podczas tworzenia nowego PanelEntitywiększość widoków zostanie przeniesiona doFrameLayout. Ułatwia to korzystanie zLayoutInspectorw przypadku paneli przestrzennych.
- Obecnie używana instancja XrExtensionsjest teraz zarejestrowana na platformie w miarę możliwości, aby ułatwić debugowanie aplikacji.
Poprawki błędów
- Dodaliśmy poprawkę, która zapobiega awarii, do której mogło dojść podczas przenoszenia PanelEntityzMovableComponentiAnchorPlacement.
- Rozwiązaliśmy problem, który powodował, że funkcja ResizableComponentprzekazywała nieaktualne rozmiary w wywołaniu zwrotnymonResizeStart.
- Rozwiązano problem z awarią, która występowała, gdy funkcja JxrPlatformAdapterAxr'sdispose()była wywoływana wielokrotnie.
Wersja 1.0.0-alpha03
26 lutego 2025 r.
Publikacje androidx.xr.scenecore:scenecore:1.0.0-alpha03 i androidx.xr.scenecore:scenecore-testing:1.0.0-alpha03 Wersja 1.0.0-alpha03 zawiera te zmiany.
Nowe funkcje
- Minimalizacja Proguard jest teraz obsługiwana w przypadku kodu Jetpack XR
Poprawki błędów
- Dodatkowe poprawki obsługi minimalizacji Proguard w przypadku Jetpack XR SceneCore (I4f47e)
- Zaktualizowano regułę Jetpack XR Scenecore ProGuard, aby zapobiecAbstractMethodErrorw przypadku zminimalizowanych klientów. (I91a01)
Wersja 1.0.0-alpha02
12 lutego 2025 r.
Publikacje androidx.xr.scenecore:scenecore:1.0.0-alpha02 i androidx.xr.scenecore:scenecore-testing:1.0.0-alpha02 Wersja 1.0.0-alpha02 zawiera te zmiany.
Nadchodząca zmiana powodująca niezgodność wsteczną, która wpłynie na aplikacje utworzone przed wersją 1.0.0-alpha02
- Metody fabrykujące zostały przeniesione z klasy Sessiondo metody towarzyszącej w przypadku każdego typu:- Usługa Session.createActivityPanelEntity(Dimensions, String, Activity, Pose)została usunięta i zastąpiona usługąActivityPanelEntity.create(Session, Dimensions, String, Pose)
- Usługa Session.createAnchorEntity(Anchor)została usunięta i zastąpiona usługąAnchorEntity.create(Session, Anchor)
- Usługa Session.createAnchorEntity(Dimensions, Int, Int, Duration)została usunięta i zastąpiona usługąAnchorEntity.create(Session, Dimensions, Int, Int, Duration)
- Usługa Session.createEntity(String, Pose)została usunięta i zastąpiona usługąContentlessEntity.create(Session, String, Pose)
- Usługa Session.createExrImageResource(String)została usunięta i zastąpiona usługąExrImage.create(Session, String)
- Usługa Session.createGltfEntity(GltfModel, Pose)została usunięta i zastąpiona usługąGltfModelEntity.create(Session, GltfModel, Pose)
- Usługa Session.createGltfModelResource(String)została usunięta i zastąpiona usługąGltfModel.create(Session, String)
- Usługa Session.createInteractableComponent(Executor, InputEventListener)została usunięta i zastąpiona usługąInteractableComponent.create(Session, Executor, InputEventListener)
- Usługa Session.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean)została usunięta i zastąpiona usługąMovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean)
- Usługa Session.createPanelEntity(View, Dimensions, Dimensions, String, Pose)została usunięta i zastąpiona usługąPanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose)
- Usługa Session.createResizableComponent(Dimensions, Dimensions)została usunięta i zastąpiona usługąResizableComponent.create(Session, Dimensions, Dimensions)
- Usługa Session.createStereoSurfaceEntity(Int, Dimensions, Pose)została usunięta i zastąpiona usługąStereoSurface.create(Session, Int, Dimensions, Pose)
 
- Usługa 
- Usunęliśmy te wycofane metody:- Pokój Session.canEmbedActivityPanel(Activity)został usunięty. Zamiast niej używaj zasadygetSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY).
- Pokój Session.hasSpatialCapability(Int)został usunięty. Została ona zastąpiona przezgetSpatialCapabilities().hasCapability(), ponieważ jest to bardziej podzielony sposób sprawdzania obecności funkcji przestrzennych. FunkcjagetSpatialCapabilities()zwraca obiektSpatialCapabilities.
- Usługa Session.requestFullSpaceMode()została usunięta i zastąpiona usługąSpatialEnvironment.requestFullSpaceMode()
- Usługa Session.requestHomeSpaceMode()została usunięta i zastąpiona usługąSpatialEnvironment.requestHomeSpaceMode()
 
- Pokój 
- Session.setFullSpaceMode(Bundle)i- Session.setFullSpaceModeWithEnvironmentInherited(Bundle)zostały przeniesione do funkcji rozszerzeń. Do plików dewelopera trzeba będzie dodać nowe importy, aby uzyskać dostęp:- import androidx.xr.scenecore.setFullSpaceMode
- import androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
 
- Session.setPreferredAspectRatio(Activity, Float)została przeniesiona do funkcji rozszerzenia. Do plików dewelopera trzeba będzie dodać nowy import, aby uzyskać dostęp:- import androidx.xr.scenecore.setPreferredAspectRatio
 
- Session.getEntitiesOfType(Class<out T>)i- Session.getEntityForRtEntity(RtEntity)zostały przeniesione do funkcji rozszerzeń. Do plików dewelopera trzeba będzie dodać nowe importy, aby uzyskać dostęp:- import androidx.xr.scenecore.getEntitiesOfType
- import androidx.xr.scenecore.getEntityForRtEntity
 
- Pokój Session.unpersistAnchor(Anchor)został usunięty
- Pokój Session.createPersistedAnchorEntity(UUID)został usunięty
Znane problemy
- PanelEntity.setCornerRadius()i- ActivityPanelEntity.setCornerRadius()mogą zacząć obowiązywać dopiero po następnym przesunięciu panelu. Można temu zapobiec, przesuwając panel do jego bieżącej pozycji.
- Gdy funkcja BoundsChangedjest wywoływana naActivitySpace, niektóreActivityPosemogą nie zostać prawidłowo zaktualizowane. Zostanie ona zaktualizowana podczas następnej rozmowyOnSpaceUpdated, która odbędzie sięActivitySpace.
Zmiany w działaniu i zachowaniu
- PanelEntityi- ActivityPanelEntitybędą miały domyślny promień zaokrąglenia wynoszący 32 dp lub mniej, jeśli panel ma szerokość lub wysokość mniejszą niż 32 dp.
Nowe interfejsy API i możliwości
- Wprowadza StereoSurface.CanvasShape, które umożliwia tworzenie obszarówSphericaliHemisphericaldo renderowania multimediów immersyjnych.
- StereoSurfaceEntity.create()akceptuje teraz parametr- CanvasShape. (Ten parametr jest obecnie ignorowany, ale będzie używany w przyszłej wersji)
- StereoSurfaceEntity.create()nie przyjmuje już parametru- Dimensions. Aplikacje powinny kontrolować rozmiar obszaru roboczego, ustawiając wartość- CanvasShape
- StereoSurfaceEntityma- CanvasShapeelement, który można ustawić dynamicznie.
- StereoSurfaceEntity.dimensionsjest teraz właściwością tylko do odczytu. Aby zmienić wymiary, aplikacje powinny ustawić- CanvasShape.
- StereoSurfaceEntityumożliwia teraz ponowne ustawienie- StereoModepo zakończeniu budowy.
Inne zmiany
- Zmniejszono minimalną wersję pakietu SDK w czasie kompilacji do 24. Wszystkie interfejsy Jetpack XR API nadal wymagają interfejsu API w wersji 34 w czasie działania.
- Fabryka sesji SceneCore(Session.create) nie uruchamia już intencji uzyskania uprawnieńSCENE_UNDERSTANDING. Zamiast tego aplikacja kliencka musi wyraźnie poprosić użytkownika o uprawnienia przed próbą utworzenia kotwic. Jeśli użytkownik nie przyzna tego uprawnienia, utworzenie kotwicy się nie powiedzie.
Poprawki błędów
- getActivitySpacePose()zostało poprawione, aby uwzględniać skalę- ActivitySpaceprzez zwracanie wartości tłumaczenia w skalowanych metrach, a nie zawsze w metrach nieskalowanych.- transformPoseToużywa teraz też odpowiednich jednostek do obliczania zmian współrzędnych, gdy- ActivitySpacejest uwzględniony w źródle lub miejscu docelowym.
- Gdy za pomocą setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom))zostanie przekazane ustawienie pustego skyboxa, będzie on ustawiany na czarny. Aby przywrócić domyślne ustawienia systemu dotyczące skyboxa i geometrii, użyjsetSpatialEnvironmentPreference(null).
Wersja 1.0.0-alpha01
12 grudnia 2024 r.
Publikacja androidx.xr.scenecore:scenecore-* 1.0.0-alpha01
Funkcje pierwszej wersji Pierwsza wersja deweloperska Jetpack SceneCore, biblioteki grafu scen 3D do tworzenia i manipulowania wciągającymi scenami i środowiskami. Ta biblioteka umożliwia umieszczanie i aranżowanie modeli 3D oraz paneli treści względem siebie i w środowiskach wirtualnych lub rzeczywistych.
- SpatialEnvironment: twórz w pełni immersyjne środowiska z obrazem skybox lub geometrią modelu 3D jako tłem sceny XR. Możesz też włączyć tryb passthrough, aby wirtualna scena mogła być zintegrowana z otoczeniem użytkownika w świecie rzeczywistym.
- PanelEntity: dodawaj treści 2D do scen 3D, osadzając standardowe układy i aktywności Androida w przestrzennych panelach, które mogą unosić się w powietrzu lub być przymocowane do powierzchni w rzeczywistym świecie.
- GltfModelEntity: umieszczaj, animuj i wykorzystuj w interakcjach modele 3D w scenie. SceneCore obsługuje format pliku glTF, co ułatwia integrację z istniejącymi modelami.
- SpatialAudio: dodaj do sceny 3D źródła dźwięku otoczenia i punktowe, aby uzyskać w pełni przestrzenny dźwięk.
- StereoSurfaceEntity: SceneCore obsługuje kierowanie treści renderowanych na Android Surface do lewego i prawego oka. Można go używać do renderowania treści stereoskopowych w formacie obok siebie lub góra-dół, takich jak zdjęcia stereo, filmy 3D czy inne dynamicznie renderowane interfejsy. Aplikacje powinny używać do dekodowania wideo odtwarzacza MediaPlayer lub ExoPlayer.
- System komponentów: SceneCore oferuje solidny i elastyczny system komponentów do dodawania funkcji do treści XR, w tym możliwości przesuwania, zmiany rozmiaru i interakcji z modelami i panelami.
- Zakotwiczenie: po włączeniu trybu passthrough możesz przyczepiać panele i modele do rzeczywistych powierzchni, zapewniając użytkownikom płynną integrację treści wirtualnych z ich otoczeniem.
- Pozycja użytkownika: dostęp do lokalizacji użytkownika w scenie wirtualnej, aby dostosować treści do jego pozycji.
- SpatialCapabilities: twórz w pełni adaptacyjne aplikacje, które wykorzystują funkcje przestrzenne, gdy są dostępne, np. pozycjonowanie treści interfejsu w 3D. Aplikacja może też monitorować zmiany w możliwościach podczas działania, aby modyfikować sposób korzystania z niej w zależności od tego, jak użytkownik używa urządzenia z Androidem XR.
Znane problemy
- Obecnie do korzystania z Jetpack SceneCore wymagany jest pakiet SDK w wersji co najmniej 30. Aby obejść ten problem, dodaj ten wpis do pliku manifestu <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>, aby móc tworzyć i uruchamiać aplikację z wersją minSDK 23.
- Sesja może stać się nieważna w różnych sytuacjach, które automatycznie odtwarzają aktywność, w tym podczas zmiany rozmiaru panelu głównego, podłączania urządzeń peryferyjnych i przełączania się między trybem jasnym a ciemnym. Jeśli napotkasz problemy z unieważnianiem sesji, możesz zastosować obejścia, takie jak uniemożliwienie zmiany rozmiaru panelu głównego, użycie dynamicznego panelu, wyłączenie ponownego tworzenia aktywności w przypadku określonych zmian konfiguracji lub wyłączenie zmian motywu w trybie jasnym/ciemnym.
- Komponenty Movable i Resizable nie są obsługiwane w przypadku komponentu GltfEntity.
- Metoda Entity.getSize() nie jest obsługiwana w przypadku elementu GltfEntity.
- Aplikacje Jetpack XR muszą prosić o uprawnienie android.permission.SCENE_UNDERSTANDINGw pliku AndroidManifest.
- Tworzenie sesji jest obsługiwane tylko na urządzeniach z Androidem XR. Obecnie, jeśli utworzysz sesję i spróbujesz użyć jej na urządzeniu innym niż Android XR, otrzymasz wyjątek RuntimeException.
- Ustawienie skyboxa na wartość null za pomocą funkcji `SpatialEnvironment.setSpatialEnvironmentPreference()` nie powoduje, że skybox jest całkowicie czarny, jak podano w dokumentacji. Może to spowodować przywrócenie domyślnego skyboxa lub brak zmian w obecnym skyboxie.
- Klienci SceneCore powinni dodać implementation(“com.google.guava:listenablefuture-1.0”)do konfiguracji Gradle w przypadku zależności aplikacji. W przyszłej wersji scenecore będzie zawierać tę bibliotekę jakoapizależność, więc klienci nie będą musieli jej jawnie deklarować.
- Biblioteka SceneCore błędnie uwzględnia com.google.guava:guava-31.1-androidicom.google.protobuf:protobuf-javalitejako zależności pośrednie. Jeśli spowoduje to błędy duplikowania klas w kompilacji, te 2 zależności można bezpiecznie wykluczyć.
- Jeśli Twoja aplikacja korzysta z SceneCore i ma włączony ProGuard, ulegnie awarii podczas tworzenia sesji. Aby obejść ten problem, wyłącz ProGuard. Więcej informacji o włączaniu ProGuarda znajdziesz w tym przewodniku.
