Jetpack SceneCore
| Najnowsza aktualizacja | Wersja stabilna | Wersja kandydująca do publikacji | Wersja beta | Wersja alfa |
|---|---|---|---|---|
| 17 czerwca 2026 r. | - | - | - | 1.0.0-alpha16 |
Deklarowanie zależności
Aby dodać zależność od XR SceneCore, musisz dodać do projektu repozytorium Maven Google. Więcej informacji znajdziesz w artykule Repozytorium Maven Google.
Dodaj zależności dotyczące potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:
Odlotowe
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha16" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha16" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha16") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha16") }
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Prześlij opinię
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 nową kartę, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz oddać głos na istniejący problem, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.0
Wersja 1.0.0-alpha16
17 czerwca 2026 r.
Publikacja androidx.xr.scenecore:scenecore-*:1.0.0-alpha16 Wersja 1.0.0-alpha16 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano przeciążenia dla funkcji
addVertexData,setIndexDataiaddSubsetdo funkcjiCustomMesh.BuilderFromMeshDataiCustomMesh.BuilderFromMeshBuffer. Te przeciążenia umożliwiają programistom bezpośrednie przekazywanie surowych danych i parametrów (np.ByteBuffer,offset,size,topology,indexOffset,indexCount) bez konieczności umieszczania ich w obiektach pośrednich, takich jakByteBufferRegionczyMeshSubset. (I84d5c) Scene.requestFullSpaceMode()iScene.requestHomeSpaceMode()zostały zmienione odpowiednio narequestFullSpace()irequestHomeSpace(). Podobnie zaktualizowaliśmy inne metody i dokumentację, w których pojawiały się terminy „Tryb obszaru domowego” i „Tryb pełnego obszaru”. (I45751)- Udostępnia publiczne interfejsy API do testowania
PanelEntityTesteriMainPanelEntityTester(I961e4) - Dodawanie usługi
pointSourceParamsdo usługiSoundEffectPoolComponent(I4a750) - Udostępnia publiczny interfejs API do testowania
MovableComponentTester(I0c972) - Udostępnia publiczny interfejs API testu
PointerCaptureComponentTester(Ic0d4f) - Udostępnia publiczny interfejs API testu
ActivityPanelEntityTester(I837c4) - Udostępnia publiczny interfejs API do testowania
ResizableComponentTester(I0a3a4) - Udostępnia publiczny interfejs API testu
BoundsComponentTester.(Iefd53) - Udostępnia publiczny interfejs API testu
SpatialMediaPlayerTester(Ia3e09) - Udostępnia publiczny interfejs API testu
SpatialEnvironmentTester(Icf60f) - Udostępnia publiczne interfejsy API do testowania
GltfModelTesteriSceneCoreTestRule.getGltfModelTester. (I33fcb) - Udostępnia publiczny interfejs API do testowania
InteractableComponentTester. (Ia7096) - Udostępnia publiczny interfejs API do testowania
SurfaceEntityTester. (Ic0740) - Udostępnia publiczne interfejsy API do testowania:
GltfModelEntityTester,TestGltfModelNodeiTestGltfAnimation. (I72c4d) - Udostępnia publiczne interfejsy API do testowania
SceneTesteriSceneCoreTestRule.sceneTester. (Ib4ec5) - Udostępnia publiczne interfejsy API do testowania
PerceptionSpaceTesteriSceneCoreTestRule.perceptionSpaceTester. (Icf739) - Udostępnia publiczny interfejs API do testowania
MeshEntityTester. (I63801) - Udostępnia publiczne interfejsy API testów
ImageBasedLightingAssetTesteriSceneCoreTestRule.getTester. (I57ec4) - Udostępnia publiczny interfejs API testu
TextureTester(Ia865b) - Udostępnia publiczny interfejs API do testowania
PositionalAudioComponentTester(Icd96e) - Udostępnia publiczny interfejs API do testowania
SpatialSoundPoolTester(Ia3531) - Udostępnia publiczny interfejs API do testowania
SoundEffectPoolTester(If349a) - Udostępnia publiczne interfejsy API do testowania
ActivitySpaceTesteriSceneCoreTestRule.activitySpaceTester. (I2d5c2) - Udostępnia publiczny interfejs API do testowania
SpatialWindowTester(I41837) - Udostępnia publiczny interfejs API do testowania
AnchorEntityTester(I68404) - Udostępnia publiczny interfejs API testu
SceneCoreTestRule. (Ic72d3) - Dodano klasę
PixelDensityi udostępniono ją za pomocąScene#virtualPixelDensity, aby zapewnić sprzętowy współczynnik pikseli na metr na potrzeby dokładnego mapowania wymiarów fizycznych wActivitySpace. (I0e3ac) - Dodano publiczne interfejsy API do tworzenia i renderowania niestandardowych siatek. (I7ad2f)
- Interfejs
VertexLayoutAPI został zaktualizowany, aby używać listy obiektówVertexBufferLayout, gdzie każdy obiektVertexBufferLayoutopisuje atrybuty w jednym buforze wierzchołków. Umożliwia to bardziej elastyczne rozmieszczenie danych wierzchołków, w tym przeplatane atrybuty z niestandardowymi krokami i przesunięciami. (Ic426b) - Udostępnia funkcję
MovableComponent.createTrackingMovable, która przekształca obiekt ARCore Trackable w pozycję względną względem przestrzeni aktywności. (I12249) - Wartość domyślna elementu nadrzędnego w
Entity.createzostała zmieniona na null. (Ic3145) Entityzostał zaktualizowany i jest teraz klasą, a nie interfejsem. Jest to teraz klasa bazowa dla wszystkich typów encji. W ramach tej zmiany usunęliśmyBaseEntity. (I7fbc9)- Biblioteki
GltfModel,ExrImageiImageBasedLightingAssetimplementują terazAutoCloseable, aby umożliwić idiomatyczne zarządzanie zasobami za pomocą blokuusew języku Kotlin. (I1ac79) - Wprowadzono klasę
ImageBasedLightingAsset, która zastępuje klasęExrImagew przypadku definiowania oświetlenia otoczenia przestrzennego. InterfejsExrImagezostał wycofany i usunięty z publicznego interfejsu API.SpatialEnvironmentPreferencezostało zaktualizowane, aby korzystać zImageBasedLightingAsset. (I6c92a) - Zmieniliśmy nazwę parametru
skyboxwSpatialEnvironmentnaimageBasedLightingAsset, aby lepiej odzwierciedlała jego przeznaczenie, i wyjaśniliśmy, że tekstury wizualnego skyboxa powinny być uwzględnione w parametrze geometry. (I24d4a) - Obiekty przestrzenne używają teraz stałej gęstości urządzenia do obliczeń pikseli na metry na poziomach 1 i 2 interfejsu Spatial API, co zapewnia spójne rozmiary niezależnie od zmian gęstości wyświetlania systemu. (I37051)
Wersja 1.0.0-alpha15
19 maja 2026 r.
Publikacja androidx.xr.scenecore:scenecore-*:1.0.0-alpha15 Wersja 1.0.0-alpha15 zawiera te zmiany.
Zmiany w interfejsie API
- Interfejs
Entity.dispose()został usunięty jako publiczny interfejs API. Zamiast wywoływaćdispose()w przypadku instancji Entity, aplikacje mogą sprawić, że instancje będą mogły zostać usunięte, ustawiającparentnanulli usuwając wszystkie silne odwołania do tych instancji. (I396c9) - Metody
set/clearOnLoadCompleteListenerw przypadkuSoundEffectPoolzostały usunięte. Zamiast niej używaj zasadyadd/removeLoadCompleteListener. (Iae78d) - Scena
set/clearSpatialVisibilityChangedListenerzostała zastąpiona scenąadd/removeSpatialVisibilityChangedListener. (I67dff) - Wszystkie metody SceneCore
add/removeOnFooListenerzostały zmienione naadd/removeFooListener, a z nazwy usuniętoOn. (Ibe50b) - Metody
AnchorEntity.setOnOriginChangedListeneriAnchorEntity.setOnStateChangedListenerzostały zastąpione metodamiadd/removeFooListener, aby obsługiwać wielu słuchaczy jednocześnie. (I13749) - Zmieniono nazwę
AnchorEntity.State.TIMEDOUTnaState.TIMED_OUT. (Id2b8d) - Interfejs Component API został zmodyfikowany, aby zwiększyć bezpieczeństwo i możliwości rozbudowy.
Componentjest teraz klasą abstrakcyjną. MetodyonAttach()ionDetach()są terazprotected, aby zapobiec bezpośrednim połączeniom. Do zarządzania cyklami życia komponentów używajEntity.addComponent()iEntity.removeComponent(). (Id04e8) - Stałe
PlaneSemanticTypePlaneOrientationw SceneCore zostały przeniesione z liczb całkowitych do typów niestandardowych. Ich stałeANYzostaną usunięte. Klienci powinni zamiast tego jawnie wyliczyć wszystkie żądane stałe lub użyć nowych stałych.ALLtypu Set. Metoda fabrycznaAnchorEntityakceptuje teraz zbiór tych typów zamiast pojedynczej wartości. (Ib1033) - Dodaliśmy obsługę animacji szkieletowej (skinning) do eksperymentalnego interfejsu Custom Mesh API. Deweloperzy mogą teraz animować niestandardowe siatki, określając
boneCountpodczas tworzeniaMeshEntityi aktualizując animację w czasie rzeczywistym za pomocąMeshEntity.setBoneTransforms(). (Id8ba2, b/496692490) - Wprowadziliśmy eksperymentalny interfejs API
CustomMesh. Deweloperzy mogą teraz programowo tworzyć i renderować geometrię 3D w scenach za pomocąCustomMesh,MeshBufferiMeshEntity. (I94617) - Kontakt
androidx.xr.scenecore.SpatializerConstants.SourceType.SOURCE_TYPE_SOUND_FIELDzostał usunięty. Użyj w zamian zasadySourceType.SOUND_FIELD. (Ia68b9) - Dodawanie komponentów dźwięku przestrzennego:
PositionalAudioComponent,SoundEffectPoolComponentiSoundFieldAudioComponent(Ieda89) AnchorEntity.getAnchorzostało zastąpione przezAnchorEntity.anchori będzie teraz zwracać wartośćAnchor, gdyAnchorEntityzostanie utworzone na podstawieAnchorARCore (I5c7c8).- Wartość domyślna parametru
parentw metodach fabrycznychActivityPanelEntity,GltfModelEntity,GroupEntity,PanelEntityiSurfaceEntityzostała zmieniona zActivitySpacenanull. Aby dołączyć obiekt do wykresu sceny i sprawić, że będzie widoczny, deweloperzy muszą teraz wyraźnie ustawić jego element nadrzędny podczas tworzenia instancji lub za pomocąEntity.parent = ...(Ie7cc1).
Poprawki błędów
SceneCoreautomatycznie odzyskuje teraz instancjeEntity, gdy staną się one niedostępne, co eliminuje konieczność jawnego wywoływania przez deweloperów funkcjidispose()w celu zwolnienia zasobów. Aby mieć pewność, że instancja [Entity] zostanie prawidłowo odzyskana, deweloperzy powinni:- Odłącz go od grafu sceny, ustawiając jego wartość
parentnanull. - usunąć wszystkie silne odwołania do instancji w kodzie;
- Uwaga dotycząca specjalnych typów elementów: w przypadku elementów, które nie mogą mieć elementów nadrzędnych (np.
AnchorEntity), programiści muszą zachować silne odwołanie, gdy instancja jest używana. Jeśli wszystkie odwołania zostaną zwolnione, te instancje staną się niedostępne i zostaną automatycznie odzyskane. (I83fe4)
- Odłącz go od grafu sceny, ustawiając jego wartość
- Zawężone reguły zachowywania ProGuard dla wszystkich bibliotek
SceneCore. (I98447)
Znane problemy
- Dołączenie
PositionalAudioComponentdoEntityz nieaktywną instancjąExoPlayerspowoduje awarię. Nie wywołuj funkcjisetPointSourceParamsani nie dołączaj/odłączaj komponentów dźwięku przestrzennego, gdy ExoPlayer jest zatrzymany. Naprawimy to w kolejnej wersji.
Wersja 1.0.0-alpha14
6 maja 2026 r.
Publikacja androidx.xr.scenecore:scenecore-*:1.0.0-alpha14 Wersja 1.0.0-alpha14 zawiera te zmiany.
Zmiany w interfejsie API
TrackingStateiVpsAvailabilityResultzostały przeniesione doandroidx.xr.arcore package, a typy wandroidx.xr.runtimesą teraz wycofane. (Ic7930, b/480462213)- Zmieniono nazwę
Plane.TypenaPlaneType. (I8c90c, b/482675376) - Zmieniono nazwę
Plane.LabelnaPlaneLabel. (Ic6b67, b/482675376) androidx.xr.runtime.FieldOfViewzostało wycofane. Użyj w zamian zasadyandroidx.xr.runtime.math.FieldOfView. (Ia01a0, b/480233045)- Nazwę konta usługi
Matrix4.posezmieniono naMatrix4.toPose(). Właściwość pose została wycofana. (I329b4, b/493383490) - Zmieniono nazwy wartości typu wyliczeniowego
HandJointType. (Ifbc83, b/482670596) - Udostępnij
Component.onAttachionDetachjako publiczny interfejs API, aby umożliwić niestandardowe implementacjeComponent. (I0ca1f) - Dodawanie komponentów dźwięku przestrzennego (I39ddd, b/489421980, b/436642086, b/436642499)
- Usuń element z
PointSourceParams. Zamiast tego element będzie używany bezpośrednio zSpatialAudioTrack,SpatialSoundPooliSpatialMediaPlayer(Ib3685, b/489421980, b/436634048). - Zmieniono nazwę
DeviceTrackingMode.LAST_KNOWNnaSPATIAL_LAST_KNOWN(z wycofanym elementem zastępczym), dodanoINERTIAL_LAST_KNOWNdo śledzenia 3DoF i dodanoTRACKING_DEGRADEDdoTrackingState. (Ie661c, b/445466590) - Wycofano
GroupEntity. Aby mieć obiekt z samą podstawową funkcjonalnością, wywołaj funkcjęEntity.create, która zwróci interfejs obiektu. (I4c450, b/473867483) - Dodano interfejs
XrLogAPI. Ustaw wartośćXrLog.isEnablednatrue, aby włączyć rejestrowanie w JetpackXR, i użyjXrLog.Level, aby ustawić poziom rejestrowania. (I76a1f, b/463460895, b/487378441)
Poprawki błędów
Scene.keyEntityma teraz domyślnie wartośćmainPanelEntity. (I6a3ef)
Wersja 1.0.0-alpha13
25 marca 2026 r.
Publikacja androidx.xr.scenecore:scenecore-*:1.0.0-alpha13 Wersja 1.0.0-alpha13 zawiera te zmiany.
Zmiany w interfejsie API
- Usunięto flagę
unscaledGravityAlignedActivitySpacez kontaSession.create.ActivitySpacejest teraz zawsze nieskalowany i wyrównany do grawitacji. (If6f11, b/458173423) - Usunięto wycofane funkcje
setMaterialOverrideiclearMaterialOverridezGltfModelEntity, które są teraz wywoływane w poszczególnychGltfModelNode. (I2e5d2) - Dodano
transformPixelCoordinatesToLocalPositionitransformNormalizedCoordinatesToLocalPositiondoPanelEntityoraz usunięto równoważne metody eksperymentalne, które zwracały pozy zamiast pozycjiVector3. (Ib6960, b/460123106, b/458333591) - Dodano interfejsy API
GltfAnimationdo sterowania animacjami glTF wSceneCore. (I2c172, b/466065486, b/465819070, b/465818617) - Nazwa
ScenePose.activitySpacePosezostała zmieniona naScenePose.poseInActivitySpace(I8f175, b/427822261) - Dodano implementację przewidywanego czasu działania Scenecore (I9c4ab, b/476440158)
- Podczas zmiany rozmiaru elementu w panelu głównym może on zmienić położenie na
ActivitySpace. Nie ma innego rozwiązania niż ręczne lub programowe przywrócenie panelu do pierwotnej lokalizacji. Ten błąd zostanie naprawiony w przyszłej wersji. (b/489427007). - W niektórych przypadkach afordancja dla
MovableComponentmoże się nie pojawiać w przypadkuSurfaceEntityi innych typów encji innych niż panel. Jawne ustawienie wartościMovableComponent.sizespowoduje wyświetlenie elementu interfejsu. Ten błąd zostanie naprawiony w przyszłej wersji (b/490983469).
Wersja 1.0.0-alpha12
25 lutego 2026 r.
Publikacja androidx.xr.scenecore:scenecore-*:1.0.0-alpha12 Wersja 1.0.0-alpha12 zawiera te zmiany.
Znane problemy
- Zakotwiczone obiekty mogą po kilku sekundach przeskoczyć z zakotwiczonej pozycji do początku przestrzeni aktywności.
- Aplikacje mogą ulegać awarii podczas tworzenia instancji
SurfaceEntity. Ten problem został rozwiązany w wersjiandroidx.xr.scenecore:scenecore-*:1.0.0-alpha13i w kolejnych wersjach. Aplikacje, których dotyczy problem, powinny zostać zaktualizowane do najnowszych wersji.
Zmiany w interfejsie API
ActivitySpace.addOnSpaceUpdatedListeneriActivitySpace.removeOnSpaceUpdatedListenerzostały zmienione naaddOnOriginChangedListeneriremoveOnOriginChangedListener. NazwaAnchorEntity.setOnSpaceUpdatedListenerzostała zmieniona nasetOnOriginChangedListener. (I5d8fb)- Dodaliśmy właściwość nazwy publicznej do
FakeEntityi udostępniliśmy widok publiczny wFakePanelEntity. (Ifa1f9)
Poprawki błędów
- Poprawiono obliczenia gęstości pikseli w nowszych obrazach systemu (I57d04).
Wersja 1.0.0-alpha11
28 stycznia 2026 r.
Publikacja androidx.xr.scenecore:scenecore-*:1.0.0-alpha11 Wersja 1.0.0-alpha11 zawiera te zmiany.
Zmiany w interfejsie API
- Zmieniliśmy nazwę
PerceivedResolutionResult.InvalidCameraViewnaPerceivedResolutionResult.InvalidRenderViewpoint, ponieważ interfejsygetPerceivedResolutionAPI korzystają teraz z interfejsuRenderViewpointAPI ARCore zamiast zCameraViewScenePose. Ta nazwa lepiej odzwierciedla nową implementację. (I8c967, b/446989745, b/419311998) - Metody
PanelEntity/SurfaceEntity.getPerceivedResolutionprzyjmują teraz jako argument wartośćRenderViewpointpodaną przez dewelopera. Wcześniej środowisko wykonawcze arbitralnie wybierało wartośćRenderViewpointużywaną do obliczania postrzeganej rozdzielczości. (I8c967, b/446989745, b/419311998) - Usunięto:
SpatialUser,ScenePose.HeadiScenePose.CameraView. Funkcje tych interfejsów API są objęte interfejsamiArDeviceiRenderViewpointw ARCore dla Jetpack XR. Aby uzyskaćScenePoseodpowiadający głowie użytkownika lub jego lewemu lub prawemu oku, programiści mogą użyćPerceptionSpace.getScenePoseFromPerceptionPosez odpowiednią pozycją uzyskaną za pomocą interfejsów API ARCore. (I2f69c, b/446989745)
Wersja 1.0.0-alpha10
3 grudnia 2025 r.
Publikacja androidx.xr.scenecore:scenecore-*:1.0.0-alpha10 Wersja 1.0.0-alpha10 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano
transformPixelCoordinatesToPoseitransformNormalizedCoordinatesToPosedoPanelEntity(I462b3) - Dodano klasę pomocniczą Utils do
SceneCoreśrodowiska wykonawczego na podstawie logiki wSceneCore(I570b9)
Poprawki błędów
- Rozwiązaliśmy problem, który mógł powodować awarię po zniszczeniu sesji i otrzymaniu
SpatialModeChangeEvent(If44e8). - Naprawiliśmy błąd, który mógł powodować wyświetlanie komunikatu
IllegalStateExceptionpodczas opuszczania lub ponownego wchodzenia na kartę Aktywność. (Ibff1c)
Wersja 1.0.0-alpha09
19 listopada 2025 r.
Publikacja androidx.xr.scenecore:scenecore-*:1.0.0-alpha09 Wersja 1.0.0-alpha09 zawiera te zmiany.
Nowe funkcje
- Dodaje interfejs API do pobierania
ScenePose, który reprezentuje kompozycję pozycji początkowej przestrzeni percepcji i pozycji względem pozycji początkowej przestrzeni percepcji. (I5b50a) - Dodano funkcję
getGravityAlignedPose. Pozycja wyrównana z grawitacją ignoruje obrót w płaszczyźnie pionowej i poprzecznej. (I5ae21) - Typy stałych
AnchorEntity.Statezostały zmienione z liczb całkowitych na podtypy stanu. (Ib0c49) - Dodano
getChildren()do interfejsu Entity. Zaktualizowano cykl życiaMainPanelEntity. (Ia69d6)
Zmiany w interfejsie API
- Typy stałych
PointerCaptureComponent.PointerCaptureStatezostały zmienione z liczb całkowitych na podtypyPointerCaptureState. (Ic888a) Scene.spatialCapabilitiesjest teraz typuSet<SpatialCapability>zamiast pola Int. Zmieniliśmy nazwy stałychSpatialCapability. (I9c109)- Typy stałych
SurfaceEntityzostały zmienione z liczb całkowitych na podtypySurfaceEntity. (I419ed) - Typy stałych
SpatializerConstantzostały zmienione z liczb całkowitych na podtypySpatializerConstant. (Ia0e18) - Typy stałych
TextureSamplerzostały zmienione z liczb całkowitych na podtypyTextureSampler. (I44078) - Typy stałych
SpatialVisibilityzostały zmienione z liczb całkowitych na podtypySpatialVisibility. (I70739) - Typy stałych
ResizeEvent.ResizeStatezostały zmienione z liczb całkowitych na podtypyResizeState. (I384d5) - Typy stałych
InputEventzostały zmienione i zamiast liczb całkowitych dziedziczą teraz po odpowiednim typie otaczającym. (I82817) - Typy stałych
GltfModelEntity.AnimationStatezostały zmienione z liczb całkowitych na podtypyAnimationState. (I24f4e) - Typy stałych
AlphaModezostały zmienione z liczb całkowitych na podtypyAlphaMode. (I27b56) - Typy stałych
Spacezostały zmienione z liczb całkowitych na podtypy przestrzeni. (I9255b) ScenePose.hitTesti powiązane metody zwracają teraz wartośćnull, jeśli nie znaleziono żadnego przecięcia, zamiastHitTestResultz wartością nullhitPosition. PoleHitTestResult.hitPositionnie może już mieć wartości null. (I1400a)- Zmieniono odwołania do
ActivityPosenaScenePose. (I7fe43)
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 implementacji:xr:scenecore:scenecore(I6ab65, b/447000520) - Wyjątek jest zgłaszany, jeśli
session.scenejest dostępny po zniszczeniu sesji. (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
- Zmiana nazwy
fixedAspectRationaisFixedAspectRatioEnabledi przekształcenie jej we właściwość logiczną (I5c4e8, b/440588971) ScenecoreFałszywe informacje znajdują się teraz w modulexr:scenecore:scenecore-testing. (Idd951)- Zmieniono nazwę
shouldAutoHideContentnaisAutoHideContentWhileResizingEnabledishouldAlwaysShowOverlaynaisAlwaysShowOverlayEnabled(I97c36, b/432335421) - Zaktualizowano stałe
SceneCoreTextureSampler, aby były bardziej czytelne. Na przykładTextureSampler.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ć obiekt Executor. (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ęShapeSurfaceEntity.CanvasShape.Vr180Hemispherezmienił(a) nazwęHemisphereSurfaceEntity.CanvasShape.Vr360Spherezmienił(a) nazwęSphereSurfaceEntity.EdgeFeatheringParams.SmoothFeatherzmienił(a) nazwęRectangleFeatherSurfaceEntity.EdgeFeathingParams.SolidEdgezmienił(a) nazwęNoFeatheringSurfaceEntity.ContentSecurityLevelzmienił(a) nazwęSurfaceProtectionSurfaceEntity.ContentSecurityLevel.{values}dodał prefiksSURFACE_PROTECTION_.SurfaceEntity.SuperSampling.{$values}dodał(a)SUPER_SAMPLING_prefiksSurfaceEntity.StereoMode.{values}dodał(a)STEREO_MODE_prefiksSurfaceEntity.ContentColorMetadata.maxCLLzmieniono nazwęmaxContentLightLevel(I7eb5f, b/422216050, b/427529950)
- Nazwa
launchActivityzostała zmieniona nastartActivity(I7db90, b/430332856) - Kontakt
Scene.activitySpaceRootzostał usunięty. Użyj w zamian zasadyScene.activitySpace. (I05ee8, b/378706624, b/422215745) configureBundleForFullSpaceModeLaunchiconfigureBundleForFullSpaceModeLaunchWithEnvironmentInheritedzostały zmienione nacreateBundleForFullSpaceModeLaunchicreateBundleForFullSpaceModeLaunchWithEnvironmentInheritedoraz przeniesione do pliku LaunchUtils.kt jako metody najwyższego poziomu. Jako pierwszy parametr przyjmują Session (I64a2c, b/437186050).- Funkcja
GroupEntityzwraca teraz typGroupEntityzamiast Entity. (I66042)
Poprawki błędów
- Zgłoś wyjątek
IllegalStateException, gdy instancja encji jest używana po jej usunięciu. (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łnego ekranu 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 wiele zmian w interfejsie API SceneCore. Zmieniliśmy nazwy kilku klas lub przenieśliśmy je do innych modułów, a większość metod pobierających i ustawiających zastąpiliśmy właściwościami Kotlin. Do czasu pierwszej wersji beta przewidujemy przyszłe zmiany interfejsu API, które mogą spowodować problemy, ale nie będą one tak uciążliwe ani liczne.
- Zmiana nazwy lub 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 sekcji Element 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 właściwośćPanelEntity.sizezFloat3dSizenaFloat2dSize. Usunęliśmy wycofaną metodęandroidx.xr.scenecore.PanelEntity.getPixelDimensions. Zamiast niej używaj metodygetSizeInPixels. (Icc174) - Tekst
androidx.xr.scenecore.OnSpaceUpdatedListenerzostał zastąpiony tekstemRunnable. (I19308) - Zastąpiono
SpatialUser.getCameraViews()usługą. (Ib0cc5) W przypadku interfejsówExrImageiGltfModel:zmieniono metodycreatena funkcje zawieszania; zmodyfikowano 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ć, że nie ma preferencji dotyczących krycia. (I40107) - Zaktualizowano parametr
windowBoundsPxnapixelDimensions, a jego typ z Rect naIntSize2dw metodzie create. (I1926e) - Konstruktor
SpatialEnvironmentjest 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 naanchorablePlaneOrientations, aplaneSemanticFilterzmieniono naanchorablePlaneSemanticTypes. DodanieMovableComponentdoAnchorEntitylubActivitySpacezwróci wartość „false”,MoveListenerzostała zmieniona naEntityMoveListener shouldDisposeParentAnchor,EntityMoveListener shouldDisposeParentAnchorzostała zmieniona nadisposeParentOnReAnchor systemMovable,disposeParentOnReAnchor systemMovablezostała usunięta z funkcjicreatena rzeczcreeateCustomMovable,createSystemMovableicreateAnchorable(If11c4)- Usuwa
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 typMainPanelEntityzamiastPanelEntity(I7125a)- Zmieniono nazwę metody
setFullSpaceModew klasie Scene 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 publicznym obiektem ze stałymi wartościami Int.setSpatialVisibilityChangedListenerakceptuje terazConsumer<Int>zamiastConsumer<SpatialVisibility>(Ie7e8c) PointerCaptureComponentstałych zmieniono nazwy i przeniesiono do obiektuPointerCaptureComponent.PointerCaptureState(I9c7ac)- Tekst
PointerCaptureComponents' StateListenerzostał zastąpiony tekstemConsumer<Int>. (I9c7ac) - Tekst „
InputEventListener” został zamieniony na „Consumer<InputEvent>” (I9c7ac) setPreferredAspectRatiozostał przeniesiony z klasy Scene do obiektuSpatialWindowi jako pierwszy parametr przyjmuje Session. (I7b717)Entity.setHidden()zastąpiono przezEntity.setEnabled(), aEntity.isHidden()zastąpiono przezEntity.isEnabled().setHidden(false)jest równesetEnabled(true)iisHidden() == !isEnabled(). (Icf0de)- Typ
Entity.contentDescriptionzostał zmieniony z ciągu znaków naCharSequence. (Ie59be) Session.createiSession.configurezgłaszają terazSecurityException, gdy nie przyznano wystarczających uprawnień, zamiast zwracaćSessionCreatePermissionsNotGrantedlubSessionConfigurePermissionsNotGranted. (I7c488)ResizableComponent.createwymaga terazConsumer<ResizeEvent> ResizeEventListenerzostał zastąpiony przezConsumer<ResizeEvent> ResizableComponent.sizezostał zmieniony naResizableComponent.affordanceSize ResizableComponent.minimumSizezostał zmieniony naResizableComponent.minimumEntitySize ResizableComponent.maximumSizezostał zmieniony naResizableComponent.maximumEntitySize,ResizableComponent.autoHideContentzostał zmieniony naResizableComponent.shouldAutoHideContentResizableComponent.forceShowResizeOverlayzostał zmieniony naResizableComponent.shouldAlwaysShowOverlay(I97a2d)- Zmniejszono wartość
minSDKdo 24 w przypadkuandroidx.xr.scenecoreiandroidx.xr.compose. Pakiety XR nadal wymagają interfejsu API w wersji 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ą użycia KGP w wersji 2.0.0 lub nowszej (Idb6b5).
- Ta biblioteka korzysta teraz z adnotacji o wartości null JSpecify, które są używane w typie. Aby wymusić prawidłowe użycie, deweloperzy Kotlin powinni użyć tego argumentu kompilatora:
-Xjspecify-annotations=strict(jest to domyślny argument począwszy od wersji 2.1.0 kompilatora Kotlin) (Ia8420) - Wszystkie metody asynchroniczne, które zwracają
ListenableFuture, zostały zastąpione funkcjami zawieszania w Kotlinie. Deweloperzy Javy, którzy chcą używać metod asynchronicznych opartych naListenableFuturezamiast funkcji zawieszających Kotlina, muszą teraz używać funkcji rozszerzeń w:xr:scenecore-scenecore-guava. Na przykładGuavaExrImagezawiera asynchroniczne funkcje ExrImage odpowiadające funkcjom Guavy,GuavaScenePosezawiera asynchroniczne funkcjeScenePoseodpowiadające funkcjom Guavy,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ę, jeśli
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 argumentów z operatorem bitowym OR miał wartość „prawda”, zamiast zwracać wartość „prawda” tylko wtedy, gdy wszystkie argumenty miały wartość „prawda”. (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.
Publikacja 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 cofanie, musisz określić
android:enableOnBackInvokedCallback= "true"w manifeście Androida. StereoSurfaceEntityobsługuje teraz odtwarzanie MV-HEVC za pomocą 2 nowychStereoModewartości: MULTIVIEW_LEFT_PRIMARY i MULTIVIEW_RIGHT_PRIMARY.PanelEntity.setSizeiPanelEntity.getSizezwracają teraz rozmiary w przestrzeni nadrzędnej.Entity.setPose,Entity.getPose,Entity.setScale,Entity.getScale,Entity.setAlphaiEntity.getAlphaprzyjmują teraz nowy parametrrelativeTo, który umożliwia pobieranie i ustawianie wartości w różnych przestrzeniach. 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. - Do elementu
SpatialAudioTrackdodano elementsetPointSourceParams, 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 do instancjiPanelEntity. - Wprowadzamy nową
PanelEntityfabrykę, która przyjmuje wymiary panelu w metrach lub pikselach. Starsza fabrykaPanelEntity, która przyjmowała 2 parametry typu Dimension dla panelu, została usunięta.
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ą użycia KGP w wersji 2.0.0 lub nowszej (Idb6b5).
- Zajęcia
PermissionHelperzostały usunięte. - Interfejs
PanelEntity.getPixelDensityzostał wycofany. PanelEntity.setPixelDimensionsiPanelEntity.getPixelDimensionzostaną usunięte i zastąpione przezsetSizeInPixelsigetSizeInPixels.- Element
Entity.getActivitySpaceAlphazostał usunięty. Można go zastąpić elementemEntity.getAlpha(Space.Activity). - Element
Entity.getWorldSpaceScalezostał usunięty. 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. - Nazwę konta usługi
StereoSurfaceEntityzmieniono naSurfaceEntity. Entity.setSizeiEntity.getSizezostaną usunięte, a te same metody zostaną dodane doPanelEntity.- Nazwę konta usługi
PointSourceAttributeszmieniono naPointSourceParams. - Nazwę konta usługi
SpatializerConstants.SOURCE\_TYPE\_BYPASSzmieniono naSpatializerConstants.SOURCE\_TYPE\_DEFAULT. PointSourceParamszostał zmodyfikowany z dostępu publicznego na dostęp wewnętrzny.AnchorEntity.createwymaga teraz skonfigurowaniaPlaneTrackingModewSession.configure().- Interfejsy API
SpatialUserwymagają teraz skonfigurowania parametruHeadTrackingModew usłudzeSession.configure(). - Jeśli nie jest dołączony, zamiast logu na poziomie ERROR będzie generowany 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 sposób możliwie najlepszy, 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 interfejs
ResizableComponentprzekazywał nieaktualne rozmiary w wywołaniu zwrotnymonResizeStart. - Usunięto błąd powodujący awarię, gdy funkcja
JxrPlatformAdapterAxr'sdispose()była wywoływana wielokrotnie.
Wersja 1.0.0-alpha03
26 lutego 2025 r.
Publikacja 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
- Obsługa minifikacji Proguard 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.
Publikacja 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 fabryczne zostały przeniesione z klasy
Sessiondo metody towarzyszącej w przypadku każdego odpowiedniego 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:
- Zbiór kolumn
Session.canEmbedActivityPanel(Activity)został usunięty. Użyj w zamian zasadygetSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY). - Zbiór kolumn
Session.hasSpatialCapability(Int)został usunięty. Została ona zastąpiona przezgetSpatialCapabilities().hasCapability(), która jest bardziej odseparowanym sposobem sprawdzania obecności funkcji przestrzennych, ponieważgetSpatialCapabilities()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()
- Zbiór kolumn
Session.setFullSpaceMode(Bundle)iSession.setFullSpaceModeWithEnvironmentInherited(Bundle)zostały przeniesione do funkcji rozszerzeń. Aby uzyskać dostęp, do plików dewelopera trzeba będzie dodać nowe instrukcje importu:import androidx.xr.scenecore.setFullSpaceModeimport 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>)iSession.getEntityForRtEntity(RtEntity)zostały przeniesione do funkcji rozszerzeń. Aby uzyskać dostęp, do plików dewelopera trzeba będzie dodać nowe instrukcje importu:import androidx.xr.scenecore.getEntitiesOfTypeimport androidx.xr.scenecore.getEntityForRtEntity
- Strefa
Session.unpersistAnchor(Anchor)została usunięta - Strefa
Session.createPersistedAnchorEntity(UUID)została usunięta
Znane problemy
PanelEntity.setCornerRadius()iActivityPanelEntity.setCornerRadius()mogą zacząć działać dopiero po następnym przesunięciu panelu. Można temu zapobiec, przesuwając panel do jego bieżącej pozycji.- Gdy funkcja
BoundsChangedjest wywoływana w przypadkuActivitySpace, niektóreActivityPosemogą nie zostać prawidłowo zaktualizowane. Zostanie ona zaktualizowana podczas następnej rozmowyOnSpaceUpdated, która odbędzie sięActivitySpace.
Zmiany w zachowaniu i łamanie zasad
PanelEntityiActivityPanelEntitybę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 element
StereoSurface.CanvasShape, który umożliwia tworzenie obszarówSphericaliHemisphericaldo renderowania multimediów immersyjnych. StereoSurfaceEntity.create()akceptuje teraz parametrCanvasShape. (Ten parametr jest obecnie ignorowany, ale będzie używany w przyszłej wersji)StereoSurfaceEntity.create()nie przyjmuje już parametruDimensions. Aplikacje powinny kontrolować rozmiar obszaru rysowania, ustawiając wartośćCanvasShape.StereoSurfaceEntitymaCanvasShapeczłonka, którego można ustawić dynamicznie.StereoSurfaceEntity.dimensionsjest teraz właściwością tylko do odczytu. Aplikacje powinny ustawiaćCanvasShape, aby zmieniać wymiary.StereoSurfaceEntityumożliwia teraz ponowne ustawienieStereoModepo zakończeniu budowy.
Inne zmiany
- Zmniejszono minimalną wersję SDK w czasie kompilacji do 24. Wszystkie interfejsy Jetpack XR API nadal wymagają interfejsu API 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 podjęciem próby 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 translacji w skalowanych metrach, a nie zawsze w metrach bez skali.transformPoseToużywa teraz też odpowiednich jednostek do obliczania zmian współrzędnych, gdyActivitySpacejest uwzględniony w źródle lub miejscu docelowym.- Gdy za pomocą parametru
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom))zostanie przekazana wartość null skyboxa, będzie on ustawiany na całkowicie 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 pakietu Jetpack SceneCore dla programistów, czyli 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 środowisk 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 integrować się z otoczeniem użytkownika.
- 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 świecie rzeczywistym.
- GltfModelEntity: umieszczaj modele 3D w scenie, animuj je i wchodź z nimi w interakcję. 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 platformie 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ół, np. zdjęć stereo, filmów 3D lub innych dynamicznie renderowanych interfejsów. 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 przyłączać 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 dopasować treści do jego pozycji.
- SpatialCapabilities: twórz w pełni adaptacyjne aplikacje, które wykorzystują dostępne funkcje przestrzenne, takie jak 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 wymagana jest minimalna wersja pakietu SDK 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ść, np. podczas zmiany rozmiaru panelu głównego, podłączania urządzeń peryferyjnych czy przełączania się między trybem jasnym a ciemnym. Jeśli napotkasz problemy z unieważnianiem sesji, możesz zastosować obejścia, takie jak ustawienie głównego panelu jako nierozmiarowego, 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ż urządzenie z Androidem 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ę jako zależnośćapi, 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 przechodnie. 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 rozwiązać ten problem, wyłącz ProGuard. Więcej informacji o włączaniu ProGuarda znajdziesz w tym przewodniku.