Jetpack SceneCore
| Letzte Aktualisierung | Stabile Release | Releasekandidat | Beta-Release | Alpha-Release |
|---|---|---|---|---|
| 07. Oktober 2026 | - | 1.0.0-rc02 | - | - |
Abhängigkeiten deklarieren
Wenn Sie eine Abhängigkeit von XR SceneCore hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Google-Repository bei Maven.
Fügen Sie die Abhängigkeiten für die benötigten Artefakte der Datei build.gradle für Ihre App oder Ihr Modul hinzu:
Cool
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-rc02" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-rc02" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-rc02") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-rc02") }
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Feedback
Ihr Feedback hilft uns, Jetpack zu verbessern. Wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben, lassen Sie es uns wissen. Bevor Sie ein neues Problem erstellen, sollten Sie sich jedoch die bereits gemeldeten Probleme in dieser Bibliothek ansehen. Wenn Sie sich einer Problemmeldung anschließen möchten, klicken Sie auf den Button mit dem Stern.
Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.
Version 1.0
Version 1.0.0-rc02
07. Oktober 2026
androidx.xr.scenecore:scenecore-*:1.0.0-rc02 ist veröffentlicht. Version 1.0.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Ein potenzielles Speicherleck wurde behoben, indem
perceptionRuntimeCacheinSessionExtentfernt und so umgestaltet wurde, dassPerceptionRuntimedirekt aus derSession-Instanz abgerufen wird. (Ie35b1) - Ein potenzielles Kontextleck wurde behoben, indem
applicationContextfürOpenXR-native Handles verwendet wurde, um sicherzustellen, dass die native Laufzeit keine Verweise auf einenActivity-Kontext enthält. (Ie35b1) - Es wurden Race-Bedingungen in
XrInstanceManagerbehoben, indem eine ordnungsgemäße Synchronisierung und Initialisierungssperre eingeführt wurde. (Ie35b1) ReferenceCleanerwurde korrigiert, um die Deregistrierung von Bereinigungsaktionen zu unterstützen. Außerdem wurde dafür gesorgt, dassEntity-Bereinigungsaktionen explizit währenddispose()ausgeführt werden, um eine doppelte Ausführung bei der automatischen Speicherbereinigung zu verhindern. (Ie35b1)- Ein Speicherleck in
Scenewurde behoben, indemsceneCacheinSessionExtentfernt undSceneso umgestaltet wurde, dass die Instanz direkt aussessionConnectorsabgerufen wird. (Ie35b1)
Version 1.0.0-rc01
9. September 2026
androidx.xr.scenecore:scenecore-*:1.0.0-rc01 ist veröffentlicht. Version 1.0.0-rc01 enthält diese Commits.
API-Änderungen
- Die
xr:scenecore:scenecore-openxr-Bibliothek wurde hinzugefügt. (Ic49f2) - Vor der stabilen Version 1.0.0 wurden mehrere eingestellte APIs entfernt.
Fehlerkorrekturen
- Ein Fehler mit einem Speicherleck wurde behoben, bei dem die Aktivitätsreferenz vom System beibehalten werden konnte, wenn die Aktivität beendet wurde. (I6dcd7)
Änderungen beim Verhalten
- Logcat-Ausgabe aus SceneCore entfernt. (I10c3c)
Version 1.0.0-beta02
12. August 2026
androidx.xr.scenecore:scenecore-*:1.0.0-beta02 ist veröffentlicht. Version 1.0.0-beta02 enthält diese Commits.
Diverse Fehlerkorrekturen
toMoveEvent()gibtnullzurück, wenn die übergeordnete Entität gelöscht wurde. (Ia7a1b)
Version 1.0.0-beta01
15. Juli 2026
androidx.xr.scenecore:scenecore-*:1.0.0-beta01 ist veröffentlicht. Version 1.0.0-beta01 enthält diese Commits.
API-Änderungen
- Die APIs
GltfAnimationundSpatialGltfModelAnimationwurden als experimentell gekennzeichnet. Einige Eigenschaften wurden in Getter umgewandelt. (I8d689, b/524771027) - Die öffentliche Factory-Methode
MovableComponent.createTrackingMovablewurde entfernt. (I00912, b/477169015) - „Session.create“ wurde in eine Suspend-Funktion umgewandelt. (I5d27f)
ActivitySpaceundAnchorSpaceerweitern jetzt eine gemeinsameSpaceEntity-Klasse, die gemeinsames Verhalten für Einheiten enthält, deren Positionen vom System gesteuert werden (I506ec, b/513619219).AnchorEntitywurde inAnchorSpaceumbenannt (Ifa95e, b/513619219)- Bietet die öffentliche Test-API
SoundEffectPoolComponentTester. (I87df7, b/498104417) - Dem
SurfaceEntity.Shape.Quad-Konstruktor wurde der optionale ParametercornerRadiushinzugefügt und diecornerRadius-Property wurde öffentlich gemacht. Entwickler können jetzt beim Erstellen einer Quad-Form einen Eckenradius angeben, umSurfaceEntity-Leinwände mit abgerundeten Ecken zu rendern, und den Radius vorhandener Quads abfragen. (Ia7809, b/474681085) - Bietet öffentliche Test-API-Überladungen für
SpatialAudioTrackBuilderTester,SpatialAudioTrackTesterundSceneCoreTestRule.getTester. (I378c6, b/496333938) - Spezielle Überschreibungen von
toString()für eine Reihe von ARCore-Typen hinzufügen. Diese Typen sollen Entwicklern zusätzliche Informationen für das Debugging liefern und sind nicht für die Verwendung in Produktions- oder ausgelieferten Anwendungen vorgesehen.
Version 1.0.0-alpha16
17. Juni 2026
androidx.xr.scenecore:scenecore-*:1.0.0-alpha16 ist veröffentlicht. Version 1.0.0-alpha16 enthält diese Commits.
API-Änderungen
- Überladungen für
addVertexData,setIndexDataundaddSubsetzuCustomMesh.BuilderFromMeshDataundCustomMesh.BuilderFromMeshBufferhinzugefügt. Mit diesen Überladungen können Entwickler Rohdaten und Parameter direkt übergeben (z.B.ByteBuffer,offset,size,topology,indexOffset,indexCount), ohne sie in Zwischenobjekte wieByteBufferRegionoderMeshSubseteinbetten zu müssen. (I84d5c) Scene.requestFullSpaceMode()undScene.requestHomeSpaceMode()wurden inrequestFullSpace()bzw.requestHomeSpace()umbenannt. Andere Methoden und Dokumentationen, die sich auf den „Home Space-Modus“ und den „Full Space-Modus“ beziehen, wurden ebenfalls aktualisiert. (I45751)- Stellt die öffentlichen Test-APIs
PanelEntityTesterundMainPanelEntityTester(I961e4) bereit. - Die Property
pointSourceParamswird zuSoundEffectPoolComponenthinzugefügt. (I4a750) - Stellt eine öffentliche Test-API
MovableComponentTester(I0c972) bereit. - Stellt die öffentliche Test-API
PointerCaptureComponentTester(Ic0d4f) bereit. - Stellt die öffentliche Test-API
ActivityPanelEntityTester(I837c4) bereit. - Stellt die öffentliche Test-API
ResizableComponentTester(I0a3a4) bereit. - Stellt die öffentliche Test-API
BoundsComponentTester.(Iefd53) bereit. - Stellt die öffentliche Test-API
SpatialMediaPlayerTester(Ia3e09) bereit. - Stellt die öffentliche Test-API
SpatialEnvironmentTester(Icf60f) bereit. - Bietet die öffentlichen Test-APIs
GltfModelTesterundSceneCoreTestRule.getGltfModelTester. (I33fcb) - Bietet die öffentliche Test-API
InteractableComponentTester. (Ia7096) - Bietet die öffentliche Test-API
SurfaceEntityTester. (Ic0740) - Stellt die öffentlichen Test-APIs
GltfModelEntityTester,TestGltfModelNodeundTestGltfAnimationbereit. (I72c4d) - Bietet die öffentlichen Test-APIs
SceneTesterundSceneCoreTestRule.sceneTester. (Ib4ec5) - Stellt die öffentlichen Test-APIs
PerceptionSpaceTesterundSceneCoreTestRule.perceptionSpaceTesterbereit. (Icf739) - Bietet die öffentliche Test-API
MeshEntityTester. (I63801) - Bietet öffentliche Test-API-Überladungen für
ImageBasedLightingAssetTesterundSceneCoreTestRule.getTester. (I57ec4) - Stellt die öffentliche Test-API
TextureTester(Ia865b) bereit. - Stellt die öffentliche Test-API
PositionalAudioComponentTester(Icd96e) bereit. - Stellt die öffentliche Test-API
SpatialSoundPoolTester(Ia3531) bereit. - Bietet eine öffentliche Test-API
SoundEffectPoolTester(If349a) - Stellt die öffentlichen Test-APIs
ActivitySpaceTesterundSceneCoreTestRule.activitySpaceTesterbereit. (I2d5c2) - Stellt die öffentliche Test-API
SpatialWindowTesterbereit (I41837) - Stellt die öffentliche Test-API
AnchorEntityTesterbereit (I68404) - Stellt die öffentliche Test-API-Schnittstelle
SceneCoreTestRulebereit. (Ic72d3) - Die Klasse
PixelDensitywurde hinzugefügt und überScene#virtualPixelDensityverfügbar gemacht, um ein hardwarebasiertes Pixel-pro-Meter-Verhältnis für die genaue Zuordnung physischer Dimensionen inActivitySpacebereitzustellen. (I0e3ac) - Es wurden öffentliche APIs zum Erstellen und Rendern benutzerdefinierter Meshes hinzugefügt. (I7ad2f)
- Die
VertexLayoutAPI wurde aktualisiert und verwendet jetzt eine Liste vonVertexBufferLayouts, wobei jedesVertexBufferLayoutdie Attribute in einem einzelnen Vertex-Puffer beschreibt. Dies ermöglicht flexiblere Anordnungen von Vertex-Daten, einschließlich verschachtelter Attribute mit benutzerdefinierten Strides und Offsets. (Ic426b) - Bietet
MovableComponent.createTrackingMovable, um ein ARCore-Trackable in eine Pose relativ zum Activity Space zu transformieren. (I12249) - Der Standardwert für das übergeordnete Element in
Entity.createwurde auf „null“ aktualisiert. (Ic3145) Entitywurde aktualisiert und ist jetzt eine Klasse statt einer Schnittstelle. Sie ist jetzt die Basisklasse für alle Entitätstypen. Im Rahmen dieser Änderung wurdeBaseEntityentfernt. (I7fbc9)GltfModel,ExrImageundImageBasedLightingAssetimplementieren jetztAutoCloseable, um eine idiomatische Ressourcenverwaltung mit demuse-Block von Kotlin zu ermöglichen. (I1ac79)- Die Klasse
ImageBasedLightingAssetwurde eingeführt, umExrImagezum Definieren der Beleuchtung der räumlichen Umgebung zu ersetzen.ExrImagewurde eingestellt und aus der öffentlichen API entfernt.SpatialEnvironmentPreferencewurde aktualisiert und verwendet jetztImageBasedLightingAsset. (I6c92a) - Der Parameter
skyboxinSpatialEnvironmentwurde inimageBasedLightingAssetumbenannt, um seinen Zweck besser widerzuspiegeln. Außerdem wurde klargestellt, dass visuelle Skybox-Texturen im Geometrieparameter enthalten sein sollten. (I24d4a) - Für räumliche Einheiten wird jetzt eine stabile Gerätedichte für die Berechnung von Pixeln in Metern auf den Spatial API-Ebenen 1 und 2 verwendet. So wird eine konsistente Größe unabhängig von Änderungen der Systemanzeigedichte gewährleistet. (I37051)
Version 1.0.0-alpha15
19. Mai 2026
androidx.xr.scenecore:scenecore-*:1.0.0-alpha15 ist veröffentlicht. Version 1.0.0-alpha15 enthält diese Commits.
API-Änderungen
Entity.dispose()wurde als öffentliche API entfernt. Anstattdispose()für Entity-Instanzen aufzurufen, können Apps Instanzen bereinigen, indem sieparentaufnullsetzen und alle starken Verweise auf diese Instanzen löschen. (I396c9)- Die
set/clearOnLoadCompleteListener-Methoden vonSoundEffectPoolwurden gelöscht. Verwenden Sie stattdessenadd/removeLoadCompleteListener. (Iae78d) set/clearSpatialVisibilityChangedListenerder Szene wurde durchadd/removeSpatialVisibilityChangedListenerersetzt. (I67dff)- Alle SceneCore-Methoden
add/removeOnFooListenerwurden inadd/removeFooListenerumbenannt.Onwurde aus dem Namen entfernt. (Ibe50b) - Die Methoden
AnchorEntity.setOnOriginChangedListenerundAnchorEntity.setOnStateChangedListenerwurden durchadd/removeFooListener-Methoden ersetzt, um mehrere gleichzeitige Listener zu unterstützen. (I13749) AnchorEntity.State.TIMEDOUTwurde inState.TIMED_OUTumbenannt. (Id2b8d)- Die Component API wurde überarbeitet, um die Sicherheit und Erweiterbarkeit zu verbessern.
Componentist jetzt eine abstrakte Klasse. Die MethodenonAttach()undonDetach()sind jetztprotected, um direkte Aufrufe zu verhindern. Verwenden SieEntity.addComponent()undEntity.removeComponent(), um den Lebenszyklus von Komponenten zu verwalten. (Id04e8) - Die SceneCore-Konstanten
PlaneSemanticTypePlaneOrientationwurden von „Ints“ zu benutzerdefinierten Typen migriert. DieANY-Konstanten werden entfernt. Clients sollten stattdessen alle gewünschten Konstanten explizit aufzählen oder die neuen unveränderlichen.ALL-Set-Konstanten verwenden. Die Factory-MethodeAnchorEntityakzeptiert jetzt eine Menge dieser Typen anstelle eines einzelnen Werts. (Ib1033) - Die experimentelle Custom Mesh API unterstützt jetzt Skelettanimation (Skinning). Entwickler können jetzt benutzerdefinierte Meshes animieren, indem sie beim Erstellen eines
MeshEntityeinboneCountangeben und die Animation in Echtzeit mitMeshEntity.setBoneTransforms()aktualisieren. (Id8ba2, b/496692490) - Die experimentelle
CustomMeshAPI wurde eingeführt. Entwickler können jetzt mithilfe vonCustomMesh,MeshBufferundMeshEntityprogrammatisch 3D-Geometrie in ihren Szenen erstellen und rendern. (I94617) androidx.xr.scenecore.SpatializerConstants.SourceType.SOURCE_TYPE_SOUND_FIELDwurde entfernt. Verwenden Sie stattdessenSourceType.SOUND_FIELD. (Ia68b9)- Hinzufügen von Spatial Audio-Komponenten:
PositionalAudioComponent,SoundEffectPoolComponentundSoundFieldAudioComponent(Ieda89) AnchorEntity.getAnchorwurde durchAnchorEntity.anchorersetzt und gibt jetztAnchorzurück, wennAnchorEntityaus einem ARCore-Anchor(I5c7c8) erstellt wurde.- Der Standardwert für den Parameter
parentin den Factory-MethodenActivityPanelEntity,GltfModelEntity,GroupEntity,PanelEntityundSurfaceEntitywurde vonActivitySpacezunullgeändert. Damit ein Objekt an den Szenengraphen angehängt und sichtbar gerendert werden kann, müssen Entwickler jetzt explizit das übergeordnete Element bei der Instanziierung oder überEntity.parent = ...(Ie7cc1) festlegen.
Fehlerkorrekturen
SceneCorefordert jetzt automatischEntity-Instanzen zurück, wenn sie phantomreichbar werden. Entwickler müssendispose()nicht mehr explizit aufrufen, um Ressourcen freizugeben. Damit eine [Entity]-Instanz ordnungsgemäß zurückgefordert wird, sollten Entwickler Folgendes tun:- Trennen Sie sie vom Szenengraphen, indem Sie
parentaufnullsetzen. - Alle starken Verweise auf die Instanz in ihrem Code aufgeben.
- Hinweis zu speziellen Entitätstypen: Für Entitäten, die nicht übergeordnet werden können (z. B.
AnchorEntity), müssen Entwickler eine starke Referenz beibehalten, solange die Instanz verwendet wird. Wenn alle Verweise freigegeben werden, werden diese Instanzen zu Phantom-Reaches und werden automatisch zurückgefordert. (I83fe4)
- Trennen Sie sie vom Szenengraphen, indem Sie
- Die ProGuard-Regeln für alle
SceneCore-Bibliotheken wurden eingeschränkt. (I98447)
Bekannte Probleme
- Wenn Sie ein
PositionalAudioComponentan einEntitymit einer inaktivenExoPlayer-Instanz anhängen, kommt es zu einem Absturz. Rufen SiesetPointSourceParamsnicht auf und hängen Sie die Spatial Audio-Komponenten nicht an oder ab, wenn ExoPlayer gestoppt ist. Dieses Problem wird mit dem nächsten Release behoben.
Version 1.0.0-alpha14
6. Mai 2026
androidx.xr.scenecore:scenecore-*:1.0.0-alpha14 ist veröffentlicht. Version 1.0.0-alpha14 enthält diese Commits.
API-Änderungen
TrackingStateundVpsAvailabilityResultwurden inandroidx.xr.arcore packageverschoben und die Typen inandroidx.xr.runtimesind jetzt veraltet. (Ic7930, b/480462213)Plane.Typewurde inPlaneTypeumbenannt. (I8c90c, b/482675376)Plane.Labelwurde inPlaneLabelumbenannt. (Ic6b67, b/482675376)androidx.xr.runtime.FieldOfViewwurde verworfen. Verwenden Sie stattdessenandroidx.xr.runtime.math.FieldOfView. (Ia01a0, b/480233045)- „
Matrix4.pose“ wurde in „Matrix4.toPose()“ umbenannt. Das Attribut „pose“ wird nicht mehr unterstützt. (I329b4, b/493383490) - Die Enum-Werte
HandJointTypewurden umbenannt. (Ifbc83, b/482670596) Component.onAttachundonDetachals öffentliche API verfügbar machen, um benutzerdefinierteComponent-Implementierungen zu ermöglichen. (I0ca1f)- Spatial Audio-Komponenten hinzufügen (I39ddd, b/489421980, b/436642086, b/436642499)
- Entfernen Sie die Entität aus
PointSourceParams. Stattdessen wird die Entität direkt mitSpatialAudioTrack,SpatialSoundPoolundSpatialMediaPlayerverwendet (Ib3685, b/489421980, b/436634048). DeviceTrackingMode.LAST_KNOWNwurde inSPATIAL_LAST_KNOWNumbenannt (mit einem eingestellten Fallback),INERTIAL_LAST_KNOWNfür das 3DoF-Tracking wurde hinzugefügt undTRACKING_DEGRADEDwurdeTrackingStatehinzugefügt. (Ie661c, b/445466590)GroupEntityeingestellt. Wenn Sie eine Entity mit nur der grundlegenden Entity-Funktionalität haben möchten, rufen SieEntity.createauf. Dadurch wird eine Entity-Schnittstelle zurückgegeben. (I4c450, b/473867483)- Die
XrLogAPI wurde hinzugefügt. Legen SieXrLog.isEnabledauftruefest, um das Logging in JetpackXR zu aktivieren, und verwenden SieXrLog.Level, um die Protokollierungsebene festzulegen. (I76a1f, b/463460895, b/487378441)
Fehlerkorrekturen
- Der Standardwert für
Scene.keyEntityist jetztmainPanelEntity. (I6a3ef)
Version 1.0.0-alpha13
25. März 2026
androidx.xr.scenecore:scenecore-*:1.0.0-alpha13 ist veröffentlicht. Version 1.0.0-alpha13 enthält diese Commits.
API-Änderungen
- Das Flag
unscaledGravityAlignedActivitySpacewurde ausSession.createentfernt.ActivitySpaceist jetzt immer unskaliert und an der Schwerkraft ausgerichtet. (If6f11, b/458173423) - Die eingestellten Funktionen
setMaterialOverrideundclearMaterialOverridewurden ausGltfModelEntityentfernt. Sie werden jetzt für die einzelnenGltfModelNodeaufgerufen. (I2e5d2) transformPixelCoordinatesToLocalPositionundtransformNormalizedCoordinatesToLocalPositionwurden zuPanelEntityhinzugefügt. Entsprechende experimentelle Methoden, die bisher Posen anstelle vonVector3-Positionen zurückgegeben haben, wurden entfernt. (Ib6960, b/460123106, b/458333591)- Es wurden
GltfAnimation-APIs zum Steuern von glTF-Animationen inSceneCorehinzugefügt. (I2c172, b/466065486, b/465819070, b/465818617) ScenePose.activitySpacePosewurde inScenePose.poseInActivitySpaceumbenannt. (I8f175, b/427822261)- Implementierung der geschätzten Laufzeit für Scenecore hinzugefügt (I9c4ab, b/476440158)
- Wenn Sie die Größe der Hauptbereichsentität ändern, wird sie möglicherweise an der Position
ActivitySpaceneu positioniert. Es gibt keine andere Lösung als das manuelle oder programmatische Zurücksetzen des Panels an seinen ursprünglichen Speicherort. Dieser Fehler wird in einer zukünftigen Version behoben. (b/489427007). - In einigen Fällen wird die Schaltfläche für
MovableComponentfürSurfaceEntityund andere Entitätstypen, die nicht in einem Infofeld angezeigt werden, möglicherweise nicht angezeigt. Wenn SieMovableComponent.sizeexplizit festlegen, wird die Aufforderung angezeigt. Dieser Fehler wird in einer zukünftigen Version behoben (b/490983469).
Version 1.0.0-alpha12
25. Februar 2026
androidx.xr.scenecore:scenecore-*:1.0.0-alpha12 ist veröffentlicht. Version 1.0.0-alpha12 enthält diese Commits.
Bekannte Probleme
- Verankerte Objekte können nach einigen Sekunden von ihrer verankerten Position zum Ursprung des Aktivitätsbereichs springen.
- Apps stürzen möglicherweise beim Erstellen von
SurfaceEntity-Instanzen ab. Dieses Problem wurde inandroidx.xr.scenecore:scenecore-*:1.0.0-alpha13und nachfolgenden Releases behoben. Betroffene Apps sollten auf die neuesten Versionen aktualisiert werden.
API-Änderungen
ActivitySpace.addOnSpaceUpdatedListenerundActivitySpace.removeOnSpaceUpdatedListenerwurden inaddOnOriginChangedListenerundremoveOnOriginChangedListenerumbenannt.AnchorEntity.setOnSpaceUpdatedListenerwurde insetOnOriginChangedListenerumbenannt. (I5d8fb)- Der Eigenschaft
FakeEntitywurde der öffentliche Name hinzugefügt und die Ansicht wurde inFakePanelEntityöffentlich gemacht. (Ifa1f9)
Fehlerkorrekturen
- Die Berechnung der Pixeldichte wurde in neueren System-Images (I57d04) korrigiert.
Version 1.0.0-alpha11
28. Januar 2026
androidx.xr.scenecore:scenecore-*:1.0.0-alpha11 ist veröffentlicht. Version 1.0.0-alpha11 enthält diese Commits.
API-Änderungen
- Benennt
PerceivedResolutionResult.InvalidCameraViewinPerceivedResolutionResult.InvalidRenderViewpointum, da diegetPerceivedResolutionAPIs jetzt auf derRenderViewpointAPI von ARCore anstelle vonCameraViewScenePosebasieren. Dieser Name spiegelt die neue Implementierung besser wider. (I8c967, b/446989745, b/419311998) - Die Methoden
PanelEntity/SurfaceEntity.getPerceivedResolutionakzeptieren jetzt ein vom Entwickler bereitgestelltesRenderViewpointals Argument. Bisher wurde dieRenderViewpoint, die für die Berechnung der wahrgenommenen Auflösung verwendet wurde, von der Laufzeitumgebung willkürlich ausgewählt. (I8c967, b/446989745, b/419311998) SpatialUser,ScenePose.HeadundScenePose.CameraViewwurden entfernt. Die Funktionen dieser APIs werden von den APIsArDeviceundRenderViewpointin ARCore für Jetpack XR abgedeckt. Um einenScenePosezu erhalten, der dem Kopf oder dem linken oder rechten Auge des Nutzers entspricht, können EntwicklerPerceptionSpace.getScenePoseFromPerceptionPosemit der entsprechenden Pose verwenden, die mit ARCore-APIs abgerufen wurde. (I2f69c, b/446989745)
Version 1.0.0-alpha10
3. Dezember 2025
androidx.xr.scenecore:scenecore-*:1.0.0-alpha10 ist veröffentlicht. Version 1.0.0-alpha10 enthält diese Commits.
API-Änderungen
transformPixelCoordinatesToPoseundtransformNormalizedCoordinatesToPosewurden zuPanelEntityhinzugefügt (I462b3)- Eine Hilfsklasse namens „Utils“ wurde der
SceneCore-Laufzeit basierend auf der Logik inSceneCorehinzugefügt (I570b9).
Fehlerkorrekturen
- Ein potenzieller Absturz, der auftreten kann, wenn die Sitzung beendet wird und ein
SpatialModeChangeEventempfangen wird, wurde behoben (If44e8). - Ein Fehler wurde behoben, der beim Verlassen oder erneuten Aufrufen einer Aktivität zu einem
IllegalStateExceptionführen konnte. (Ibff1c)
Version 1.0.0-alpha09
19. November 2025
androidx.xr.scenecore:scenecore-*:1.0.0-alpha09 ist veröffentlicht. Version 1.0.0-alpha09 enthält diese Commits.
Neue Funktionen
- Fügt eine API zum Abrufen eines
ScenePosehinzu, der die Zusammensetzung der Ursprungspose des Wahrnehmungsbereichs und einer Pose in Bezug auf den Ursprung des Wahrnehmungsbereichs darstellt. (I5b50a) - Die Funktion
getGravityAlignedPosewurde hinzugefügt. Bei der schwerkraftorientierten Ausrichtung werden die Neigung und die Drehung ignoriert. (I5ae21) - Die
AnchorEntity.State-Konstantentypen wurden von „Ints“ in „State“-Untertypen geändert. (Ib0c49) getChildren()wurde der Entitätsschnittstelle hinzugefügt. DerMainPanelEntity-Lebenszyklus wurde aktualisiert. (Ia69d6)
API-Änderungen
- Die
PointerCaptureComponent.PointerCaptureState-Konstantentypen wurden von „Ints“ inPointerCaptureState-Untertypen geändert. (Ic888a) Scene.spatialCapabilitiesist jetzt vom TypSet<SpatialCapability>anstelle eines Int-Felds. DieSpatialCapability-Konstanten wurden umbenannt. (I9c109)- Die
SurfaceEntity-Konstantentypen wurden umbenannt und von „Ints“ inSurfaceEntity-Untertypen geändert. (I419ed) - Die
SpatializerConstant-Konstantentypen wurden umbenannt und von „Ints“ inSpatializerConstant-Untertypen geändert. (Ia0e18) - Die
TextureSampler-Konstantentypen wurden umbenannt und von „Ints“ inTextureSampler-Untertypen geändert. (I44078) - Die
SpatialVisibility-Konstantentypen wurden von „Ints“ inSpatialVisibility-Untertypen geändert. (I70739) ResizeEvent.ResizeState-Konstantentypen wurden umbenannt und von „Ints“ inResizeState-Untertypen geändert. (I384d5)InputEvent-Konstantentypen wurden umbenannt und von „Ints“ in den jeweiligen einschließenden Typ geändert. (I82817)- Die
GltfModelEntity.AnimationState-Konstantentypen wurden von „Ints“ inAnimationState-Untertypen geändert. (I24f4e) - Die
AlphaMode-Konstantentypen wurden umbenannt und von „Ints“ inAlphaMode-Untertypen geändert. (I27b56) - Die
Space-Konstantentypen wurden von „Ints“ zu „Space“-Untertypen geändert. (I9255b) ScenePose.hitTestund zugehörige Methoden geben jetztnullzurück, wenn keine Überschneidung gefunden wurde, anstattHitTestResultmit einem Nullwert fürhitPosition.HitTestResult.hitPositionist nicht mehr nullable. (I1400a)- Verweise auf
ActivityPosewurden inScenePosegeändert. (I7fe43)
Version 1.0.0-alpha08
22. Oktober 2025
androidx.xr.scenecore:scenecore-*:1.0.0-alpha08 ist veröffentlicht. Version 1.0.0-alpha08 enthält diese Commits.
API-Änderungen
ActivityPanelEntity.moveActivitywurde intransferActivityumbenannt (I273c5, b/430332856)
Fehlerkorrekturen
:xr:scenecore:scenecore-spatial-renderingund:xr:scenecore:scenecore-spatial-coreals Implementierungsabhängigkeit von:xr:scenecore:scenecorehinzugefügt (I6ab65, b/447000520)- Es wird eine Ausnahme ausgelöst, wenn nach dem Beenden der Sitzung auf
session.scenezugegriffen wird. (I77e6f)
Version 1.0.0-alpha07
24. September 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha07, androidx.xr.scenecore:scenecore-guava:1.0.0-alpha07 und androidx.xr.scenecore:scenecore-testing:1.0.0-alpha07 sind veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.
API-Änderungen
fixedAspectRatiowurde inisFixedAspectRatioEnabledumbenannt und ist jetzt eine boolesche Property (I5c4e8, b/440588971).Scenecore-Fakes befinden sich jetzt im Modulxr:scenecore:scenecore-testing. (Idd951)shouldAutoHideContentwurde inisAutoHideContentWhileResizingEnabledundshouldAlwaysShowOverlayinisAlwaysShowOverlayEnabledumbenannt (I97c36, b/432335421)- Die Konstanten
SceneCoreTextureSamplerwurden zur besseren Lesbarkeit aktualisiert.TextureSampler.MinFilter.LINEARist jetzt beispielsweiseTextureSampler.MIN_FILTER_LINEAR(Ib159c). - Der Setter für
setKeyEntityder Szene wurde in die VariablekeyEntityzusammengeführt. Wenn SiekeyEntityauf eine nicht verschiebbare Entität wieAnchorEntityfestlegen, wird eineIllegalArgumentExceptionausgelöst, anstatt „false“ zurückzugeben. (I62080, b/428721695, b/422215745) - Die Variable
SpatialModeChangeListenerder Szene wurde durchsetSpatialModeChangedListenerersetzt. Es wird einConsumer<SpatialModeChangeEvent>anstelle einesSpatialModeChangedListenerverwendet.setSpatialModeChangedListenerkann jetzt optional einen Executor entgegennehmen. (I62080, b/428721695, b/422215745) - Der Parameter
bundlewurde ausActivityPanelEntity.startActivityentfernt (I64344, b/430332856, b/430333040). SpatializerConstants.SOURCE_TYPE_BYPASSwurde inSpatializerConstants.SOURCE_TYPE_DEFAULTumbenannt. (Ifc7fe, b/422215565)- Die Konstante
SpatialSoundPool.PLAY_FAILEDwurde hinzugefügt. (Ifc7fe, b/422215565) - Den
SpatialSoundPool.play-Methoden wurden Standardargumente hinzugefügt. (Ifc7fe, b/422215565) - Rückgabewert von Settern in
SpatialAudioTrackBuilderentfernt (Ifc7fe, b/422215565) - Änderungen an SurfaceEntity
SurfaceEntity.CanvasShapewurde inShapeumbenanntSurfaceEntity.CanvasShape.Vr180Hemispherewurde inHemisphereumbenanntSurfaceEntity.CanvasShape.Vr360Spherewurde inSphereumbenanntSurfaceEntity.EdgeFeatheringParams.SmoothFeatherwurde inRectangleFeatherumbenanntSurfaceEntity.EdgeFeathingParams.SolidEdgewurde inNoFeatheringumbenanntSurfaceEntity.ContentSecurityLevelwurde inSurfaceProtectionumbenanntSurfaceEntity.ContentSecurityLevel.{values}hat einSURFACE_PROTECTION_-Präfix hinzugefügt.SurfaceEntity.SuperSampling.{$values}hat einSUPER_SAMPLING_-Präfix hinzugefügtSurfaceEntity.StereoMode.{values}hat einSTEREO_MODE_-Präfix hinzugefügtSurfaceEntity.ContentColorMetadata.maxCLLwurde inmaxContentLightLevelumbenannt (I7eb5f, b/422216050, b/427529950)
launchActivitywurde instartActivityumbenannt (I7db90, b/430332856)Scene.activitySpaceRootwurde entfernt. Verwenden Sie stattdessenScene.activitySpace. (I05ee8, b/378706624, b/422215745)configureBundleForFullSpaceModeLaunchundconfigureBundleForFullSpaceModeLaunchWithEnvironmentInheritedwurden increateBundleForFullSpaceModeLaunchundcreateBundleForFullSpaceModeLaunchWithEnvironmentInheritedumbenannt und als Methoden der obersten Ebene in die Datei LaunchUtils.kt verschoben. Außerdem wird „Session“ als erster Parameter verwendet (I64a2c, b/437186050).- Die
GroupEntity-Factory gibt jetzt den TypGroupEntityanstelle von „Entity“ zurück. (I66042)
Fehlerkorrekturen
- Lösen Sie eine
IllegalStateExceptionaus, wenn eine Entitätsinstanz nach dem Schließen verwendet wird. (I90990, b/427314036, b/432063442)
Version 1.0.0-alpha06
13. August 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha06, androidx.xr.scenecore:scenecore-guava:1.0.0-alpha06 und androidx.xr.scenecore:scenecore-testing:1.0.0-alpha06 sind veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.
API-Änderungen
- Einschränkung der
SceneCore-BaseEntity- undBaseScenePose-APIs aufheben (88c0ff6)
Version 1.0.0-alpha05
30. Juli 2025
androidx.xr.scenecore:scenecore-guava:1.0.0-alpha05, androidx.xr.scenecore:scenecore-testing:1.0.0-alpha05 und androidx.xr.scenecore:scenecore:1.0.0-alpha05 sind veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.
Neue Funktionen
- Die API für die wahrgenommene Auflösung wurde den Panel-Entitäten und
SurfaceEntitieshinzugefügt. (I118f6) PerceivedResolutionCallback-Methoden, die Scene.kt hinzugefügt wurden, um die wahrgenommene Auflösung des Hauptbereichs der Aktivität im HSM zu überwachen. (I58084)SurfaceEntity– Unterstützung für Anwendungen, die beim Erstellen von Inhalten Super-Sampling anfordern. Dadurch können Anwendungen den Super-Sampling-Filter für das Anti-Aliasing verwenden. (I06913)- Die Property
recommendedContentBoxInFullSpacewurde zuActivitySpacehinzugefügt. Gibt ein empfohlenes Feld für Inhalte zurück, die im Full Space Modus platziert werden sollen. (I4cd6f) - Es wurde ein überladener Konstruktor für den beweglichen Modifikator bereitgestellt, der das Verankern ermöglicht. (Ic0c70)
API-Änderungen
Für diesen Release wurden umfangreiche API-Änderungen an SceneCore vorgenommen. Mehrere Klassen wurden umbenannt und/oder in andere Module verschoben. Die meisten Getter-/Setter-Methoden wurden durch Kotlin-Properties ersetzt. Bis zur ersten Beta-Version werden voraussichtlich noch einige wichtige API-Änderungen vorgenommen, die jedoch nicht so störend oder zahlreich sein werden.
- Die folgenden Klassen und Schnittstellen wurden umbenannt und/oder verschoben:
androidx.xr.scenecore.PixelDimensionsinandroidx.xr.runtime.math.IntSize2d,androidx.xr.scenecore.Dimensionsinandroidx.xr.runtime.math.FloatSize3d,androidx.xr.scenecore.ActivityPoseinScenePose,androidx.xr.scenecore.ContentlessEntityinGroupEntity,androidx.xr.scenecore.PlaneTypeinPlaneOrientation,androidx.xr.scenecore.PlaneSemanticinPlaneSemanticType. (Ifd405)(I3b622) (If534d) - Eine Reihe von Settern für die Eigenschaften von
Scenewurde privat gemacht. Sie sollten nicht vonSceneCore-Clients geändert werden:activitySpace,activitySpaceRoot,mainPanelEntity,perceptionSpace,spatialCapabilities,spatialEnvironmentundspatialUser. (I2f506) - In Entity: Die folgenden Elemente wurden in Properties geändert:
get/setParent(),setContentDescription;Entity.is/setHidden()wurde eingestellt, verwenden Sie stattdessenEntity.is/setEnabled. (Ibc4c6) - Die Klasse
androidx.xr.scenecore.BasePanelEntitywurde entfernt. Verwenden Sie stattdessen direktPanelEntity. Getter und Setter fürPanelEntitywurden durch Attribute ersetzt. DiePanelEntity.size-Eigenschaft wurde vonFloat3dSizeinFloat2dSizegeändert. Die verworfene Methodeandroidx.xr.scenecore.PanelEntity.getPixelDimensionswurde entfernt. Verwenden Sie stattdessengetSizeInPixels. (Icc174) androidx.xr.scenecore.OnSpaceUpdatedListenerwurde durchRunnableersetzt. (I19308)SpatialUser.getCameraViews()wurde durch ein Attribut ersetzt. (Ib0cc5) FürExrImageundGltfModel:: Diecreate-Methoden wurden in Suspend-Funktionen geändert. Die Erstellungsparameter wurden so geändert, dass sie anstelle vonStringeinUrioderPathakzeptieren. (Id8883) (I0d247), (I25706)SpatialEnvironment.requestFullSpaceModeundSpatialEnvironment.requestHomeSpaceModewurden in „Szene“ verschoben. Verwenden Sie beispielsweisesession.scene.requestFullSpaceMode()anstelle vonsession.scene.spatialEnvironment.requestFullSpaceMode().addOnPassthroughOpacityChangedListenerundaddOnSpatialEnvironmentChangedListenerhaben jetzt Überschreibungen, die optionale Executors akzeptieren. (I12fe0) (I6b21e)- Die folgenden verworfenen
SpatialEnvironment-Methoden wurden entfernt:togglePassthrough,setPassthrough,setPassthroughOpacity,getPassthroughMode,getPassthroughOpacity,setSkyboxundsetGeometry. Die verworfene KlasseSpatialEnvironment.PassthroughMode(I927bd) (I927bd) (I927bd) wurde ebenfalls entfernt. - Die folgenden
SpatialEnvironment-Getter und ‑Setter wurden durch Kotlin-Properties ersetzt:getCurrentPassthroughOpacity(),get/setPassthroughOpacityPreference(),get/setSpatialEnvironmentPreference(),isSpatialEnvironmentPreferenceActive()(I33a7b) (Ie06e2) (Ie06e2) - Der Typ von
SpatialEnvironmentPreference.preferredPassthroughOpacitywurde vonFloat?inFloatgeändert. Nullwerte werden nicht mehr akzeptiert. Stattdessen wirdSpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCEverwendet, um anzugeben, dass keine Deckkraft bevorzugt wird. (I40107) - Der Parameter
windowBoundsPxwurde in der Methode „create“ inpixelDimensionsund sein Typ von „Rect“ inIntSize2dgeändert. (I1926e) - Der
SpatialEnvironment-Konstruktor ist jetzt intern (I75a51) - Die Klassen
SpatialPointerIconNoneundSpatialPointerIconCirclewurden durch die Companion-ObjekteSpatialPointerIcon.NONEundSpatialPointerIcon.CIRCLEersetzt (I416d2). SpatialPointerIconinSpatialPointerComponentist nicht mehr nullable. Verwenden SieSpatialPointerIcon.DEFAULTanstelle von „null“, um anzugeben, dass das Standardzeigersymbol des Systems verwendet werden soll. (I416d2)androidx.xr.scenecore.AnchorEntity.getState()wurde durch ein schreibgeschütztes Attribut ersetzt. Die Parameter der MethodeAnchorEntity.create()wurden zur besseren Übersichtlichkeit umbenannt. In den Methoden vonAnchorEntityzum Festlegen und Hinzufügen von Listenern wurde der Listener zum Aktivieren von nachgestellten Lambdas in das letzte Argument verschoben.androidx.xr.scenecore.OnStateChangedListenerfürAnchorEntitywurde durchConsumer<AnchorEntity.State>ersetzt. (I472e0)GltfModelEntity.getAnimationState()ist jetzt eine Property. (I10b29)ActivitySpace.getBounds()wurde durch ein Attribut ersetzt.ActivitySpace.addBoundsChangedListenerwurde inActivitySpace.addOnBoundsChangedListenerumbenannt.ActivitySpace.setOnSpaceUpdatedListenerdurch Methoden zum Hinzufügen/Entfernen ersetzt. (I4c956)- „
AnchorPlacement: planeTypeFilter“ wurde in „anchorablePlaneOrientations“ umbenannt, „planeSemanticFilter“ wurde in „anchorablePlaneSemanticTypes“ umbenannt. Wenn Sie einerAnchorEntityoderActivitySpaceeineMovableComponenthinzufügen, wird „false“ zurückgegeben.MoveListenerwurde inEntityMoveListener shouldDisposeParentAnchorumbenannt, wurde indisposeParentOnReAnchor systemMovableumbenannt und wurde aus der Funktioncreateentfernt und durchcreeateCustomMovable,createSystemMovableundcreateAnchorableersetzt (If11c4). SurfaceEntity.featherRadiusX/Ywurde entfernt und einEdgeFeatheringParams-Klassenkonzept wurde hinzugefügt. (Ic78fc)- Die
PanelEntity.enablePanelDepthTest()-Methode wurde durch das AttributpanelClippingConfigersetzt. Legen SieScene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true)fest, um den Tiefentest zu aktivieren, oderPanelClippingConfig(isDepthTestEnabled = false), um ihn zu deaktivieren. (I0cbe0) Scene.mainPanelEntityhat jetzt den TypMainPanelEntityanstelle vonPanelEntity(I7125a)- Die Methode
setFullSpaceModeder Szene wurde inconfigureBundleForFullSpaceModeLaunchund die MethodesetFullSpaceModeWithEnvironmentInheritedinconfigureBundleForFullSpaceModeLaunchWithEnvironmentInheritedumbenannt. (I0cbe0) (I0cbe0) - Die Werte UNKNOWN, OUTSIDE_FOV, PARTIALLY_WITHIN_FOV und WITHIN_FOV von
SpatialVisibilitywurden in SPATIAL_VISIBILITY_UNKNOWN, SPATIAL_VISIBILITY_OUTSIDE_FIELD_OF_VIEW, SPATIAL_VISIBILITY_PARTIALLY_WITHIN_FIELD_OF_VIEW und SPATIAL_VISIBILITY_WITHIN_FIELD_OF_VIEW umbenannt (Ie7e8c). - Die Klasse
SpatialVisibilitywurde durch ein öffentliches Objekt mit konstanten Int-Werten ersetzt.setSpatialVisibilityChangedListenerakzeptiert jetztConsumer<Int>anstelle vonConsumer<SpatialVisibility>(Ie7e8c) PointerCaptureComponent-Konstanten umbenannt und in dasPointerCaptureComponent.PointerCaptureState-Objekt verschoben (I9c7ac)PointerCaptureComponents' StateListenerwurde durchConsumer<Int>ersetzt. (I9c7ac)InputEventListenerwurde durchConsumer<InputEvent>ersetzt (I9c7ac)setPreferredAspectRatiowurde von der Scene-Klasse in dasSpatialWindow-Objekt verschoben und verwendet „Session“ als ersten Parameter. (I7b717)Entity.setHidden()wurde durchEntity.setEnabled()ersetzt undEntity.isHidden()durchEntity.isEnabled().setHidden(false)entsprichtsetEnabled(true)undisHidden() == !isEnabled(). (Icf0de)- Der Typ von
Entity.contentDescriptionwurde von „String“ in „CharSequence“ geändert. (Ie59be) - Bei
Session.createundSession.configurewird jetztSecurityExceptionausgegeben, wenn nicht genügend Berechtigungen erteilt wurden, anstattSessionCreatePermissionsNotGrantedoderSessionConfigurePermissionsNotGrantedzurückzugeben. (I7c488) - Für
ResizableComponent.createist jetzt einConsumer<ResizeEvent> ResizeEventListenererforderlich.Consumer<ResizeEvent> ResizableComponent.sizewurde durchResizableComponent.affordanceSize ResizableComponent.minimumSizeersetzt.ResizableComponent.minimumEntitySize ResizableComponent.maximumSizewurde inResizableComponent.maximumEntitySizeumbenannt.ResizableComponent.autoHideContentwurde inResizableComponent.shouldAutoHideContentumbenannt.ResizableComponent.forceShowResizeOverlaywurde inResizableComponent.shouldAlwaysShowOverlayumbenannt. (I97a2d) minSDKwurde fürandroidx.xr.scenecoreundandroidx.xr.composeauf 24 reduziert. Für XR-Pakete ist zur Laufzeit weiterhin API 34 erforderlich. (I17224)- Die Einschränkung
RequiresApi(34)wurde für alle Jetpack XR-Pakete entfernt. Diese Einschränkung war überflüssig, da Jetpack XR derzeit nur auf Geräten mit API‑Level 34 oder höher verfügbar ist. (Iae0f8) - Das Hauptartefakt
SceneCore(xr:scenecore:scenecore) enthält nur asynchrone APIs im Kotlin-Stil. Java-Entwickler können diexr:scenecore:scenecore-guava-Bibliothek verwenden, um auf kompatible APIs zuzugreifen. (If221b) - Für Projekte, die mit Kotlin 2.0 veröffentlicht wurden, ist KGP 2.0.0 oder höher erforderlich (Idb6b5).
- In dieser Bibliothek werden jetzt JSpecify-Annotationen für Nullsicherheit verwendet, die typbezogen sind. Kotlin-Entwickler sollten das folgende Compiler-Argument verwenden, um die korrekte Verwendung zu erzwingen:
-Xjspecify-annotations=strict(dies ist die Standardeinstellung ab Version 2.1.0 des Kotlin-Compilers) (Ia8420) - Alle asynchronen Methoden, die
ListenableFuturezurückgeben, wurden durch Kotlin-Suspend-Funktionen ersetzt. Java-Entwickler, dieListenableFuture-basierte asynchrone Methoden anstelle von Kotlin-Suspend-Funktionen verwenden möchten, müssen jetzt Erweiterungsfunktionen in:xr:scenecore-scenecore-guavaverwenden.GuavaExrImageenthält beispielsweise die asynchronen Funktionen von ExrImage, die Guava entsprechen,GuavaScenePoseenthält die asynchronen Funktionen vonScenePose, die Guava entsprechen,GuavaGltfModelenthält die asynchronen Funktionen vonGuava-equivalent GltfModelusw. (If7283) (I0af60) (If7283) (Ia8515) (I4efdf) (I54bbf) (I3467a) (I82a33)
Fehlerkorrekturen
- Die Jetpack XR Scenecore-Regel
ProGuardwurde aktualisiert, umAbstractMethodErrorfür minimierte Clients zu verhindern. (I91a01) - Zusätzliche Korrekturen zur Unterstützung der Proguard-Minifizierung für Jetpack XR
SceneCore(I4f47e) - Es wurde ein Fehler behoben, bei dem ein
InteractableComponentzu einem Absturz führen konnte, wenn diehitPositionfür die HitInfo desInputEventabstürzen konnte, wenn die vom System zurückgegebenehitPositionnull war (I7a695). - Die Werte für den Konfigurationsmodus wurden umbenannt, um ihr Verhalten besser widerzuspiegeln. (I6d247)
- Probleme mit dem Sichtfeld und
HitTestin derSceneCore-Test-App wurden behoben. (I2c51e) - Es wurde ein Fehler in
SpatialCapabilities.hasCapability()behoben, bei dem „true“ zurückgegeben wurde, wenn eine der mit einem bitweisen ODER übergebenen Funktionen „true“ war, anstatt nur dann „true“ zurückzugeben, wenn alle „true“ waren. (I2cd40) SurfaceEntity.StereoMode.TOP_BOTTOMwurde aktualisiert. Die obere Karte ist für das linke Auge und die untere Karte für das rechte Auge. (I4ae68)
Version 1.0.0-alpha04
7. Mai 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha04 und androidx.xr.scenecore:scenecore-testing:1.0.0-alpha04 sind veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.
Neue Funktionen
- Die Rückbearbeitung funktioniert jetzt auch für Bildbereichsentitäten ohne eingebettete Aktivitäten. Damit die Rücktaste funktioniert, müssen Sie
android:enableOnBackInvokedCallback= "true"im Android-Manifest angeben. StereoSurfaceEntityunterstützt jetzt die MV-HEVC-Wiedergabe über zwei neueStereoMode-Werte: MULTIVIEW_LEFT_PRIMARY und MULTIVIEW_RIGHT_PRIMARY.PanelEntity.setSizeundPanelEntity.getSizegeben jetzt Größen im übergeordneten Bereich zurück.- Die Funktionen
Entity.setPose,Entity.getPose,Entity.setScale,Entity.getScale,Entity.setAlphaundEntity.getAlphahaben jetzt einen neuen ParameterrelativeTo, mit dem Werte relativ zu verschiedenen Bereichen abgerufen und festgelegt werden können. Die unterstützten Werte sind „Parent“, „Activity“ und „Real World“. Der Standardwert für diesen Parameter ist „Parent“. SessionExt.ktwurden Erweiterungsmethoden für den Callback zur räumlichen Sichtbarkeit hinzugefügt, um zu überwachen, wann sich die Inhalte der Szene innerhalb oder außerhalb des Sichtfelds des Nutzers bewegen.setPointSourceParamswurdeSpatialAudioTrackhinzugefügt. Dadurch können die Parameter aktualisiert werden, nachdem der Track erstellt wurde.- Es wurde eine neue Klasse „Scene“ mit Verweisen auf
Scenecore-APIs hinzugefügt. Die Szene ist als Erweiterungseigenschaft der Sitzung verfügbar. Funktionen inSessionExtwurden in „Scene“ verschoben. Daher müssen Importe angepasst werden, z. B.SessionExt.getScene(session).addSpatialCapababilitiesChangedListenerim Vergleich zuSessionExt.addSpatialCapabilitiesChangedListener. ActivityPose.hitTestAsyncwurde hinzugefügt, wodurch einehitTestfür virtuelle Inhalte möglich ist.- Es wurde der neue Komponententyp
SpatialPointerComponenthinzugefügt, mit dem Kunden das für den Zeiger gerenderte Symbol angeben oder das Symbol deaktivieren können. Diese Komponente kann derzeit nur anPanelEntity-Instanzen angehängt werden. - Wir führen die neue
PanelEntity-Factory ein, die die Abmessungen des Panels entweder in Metern oder Pixeln entgegennimmt. Die altePanelEntity-Factory, die zwei Parameter vom Typ „Dimension“ für den Bereich verwendet, wurde entfernt.
API-Änderungen
- Die Einschränkung
RequiresApi(34)wurde für alle Jetpack XR-Pakete entfernt. Diese Einschränkung war überflüssig, da Jetpack XR derzeit nur auf Geräten mit API‑Level 34 oder höher verfügbar ist. (Iae0f8) - Für Projekte, die mit Kotlin 2.0 veröffentlicht wurden, ist KGP 2.0.0 oder höher erforderlich (Idb6b5).
- Die Klasse „
PermissionHelper“ wurde entfernt. PanelEntity.getPixelDensitywurde verworfen.PanelEntity.setPixelDimensionsundPanelEntity.getPixelDimensionwurden entfernt und durchsetSizeInPixelsundgetSizeInPixelsersetzt.Entity.getActivitySpaceAlphaentfernt. Kann durchEntity.getAlpha(Space.Activity)ersetzt werden.Entity.getWorldSpaceScaleentfernt. Kann durchEntity.getScale(Space.REAL\_WORLD)ersetzt werden.- Die Session-Klasse in
SceneCorewurde zugunsten der Session in XR Runtime gelöscht. - „
StereoSurfaceEntity“ wurde in „SurfaceEntity“ umbenannt. Entity.setSizeundEntity.getSizewurden entfernt und dieselben Methoden wurdenPanelEntityhinzugefügt.- „
PointSourceAttributes“ wurde in „PointSourceParams“ umbenannt. - „
SpatializerConstants.SOURCE\_TYPE\_BYPASS“ wurde in „SpatializerConstants.SOURCE\_TYPE\_DEFAULT“ umbenannt. - Die Entität „
PointSourceParams“ wurde von „öffentlich“ zu „interner Zugriff“ geändert. - Für
AnchorEntity.createmuss jetztPlaneTrackingModeinSession.configure()konfiguriert werden. - Für
SpatialUser-APIs muss jetztHeadTrackingModeinSession.configure()konfiguriert werden. - Wenn
ResizableComponentnicht angehängt ist, wird ein Log auf INFO-Ebene anstelle eines Logs auf ERROR-Ebene ausgegeben. - Die Fov-Klasse ist jetzt eine reguläre Kotlin-Klasse.
- Teilen Sie
Entity.ktauf, um jeden konkreten Entitätstyp in einer eigenen Datei zu platzieren. - Wenn Sie ein neues
PanelEntityerstellen, werden die meisten Ansichten demFrameLayoutuntergeordnet. Dadurch wird die Verwendung vonLayoutInspectormit räumlichen Bereichen erleichtert. - Die derzeit verwendete
XrExtensions-Instanz wird jetzt nach bestem Wissen und Gewissen auf der Plattform registriert, um das Debuggen von Apps zu erleichtern.
Fehlerkorrekturen
- Es wurde eine Korrektur hinzugefügt, um einen Absturz zu verhindern, der auftreten konnte, wenn ein
PanelEntitymitMovableComponentundAnchorPlacementverschoben wurde. - Ein Problem wurde behoben, bei dem
ResizableComponentveraltete Größen imonResizeStart-Callback bereitstellte. - Ein Absturz wurde behoben, der auftrat, wenn
JxrPlatformAdapterAxrsdispose()mehrmals aufgerufen wurde.
Version 1.0.0-alpha03
26. Februar 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha03 und androidx.xr.scenecore:scenecore-testing:1.0.0-alpha03 sind veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.
Neue Funktionen
- Proguard-Minifizierung wird jetzt für Jetpack XR-Code unterstützt
Fehlerkorrekturen
- Zusätzliche Korrekturen zur Unterstützung der Proguard-Minifizierung für Jetpack XR SceneCore (I4f47e)
- Die Jetpack XR Scenecore-Regel
ProGuardwurde aktualisiert, umAbstractMethodErrorfür minimierte Clients zu verhindern. (I91a01)
Version 1.0.0-alpha02
12. Februar 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha02 und androidx.xr.scenecore:scenecore-testing:1.0.0-alpha02 sind veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.
Anstehende wichtige Änderung für Apps, die vor Version 1.0.0-alpha02 erstellt wurden
- Die Factory-Methoden wurden aus der Klasse
Sessionin eine Companion-Methode für jeden jeweiligen Typ verschoben:Session.createActivityPanelEntity(Dimensions, String, Activity, Pose)wurde gelöscht und durchActivityPanelEntity.create(Session, Dimensions, String, Pose)ersetztSession.createAnchorEntity(Anchor)wurde gelöscht und durchAnchorEntity.create(Session, Anchor)ersetztSession.createAnchorEntity(Dimensions, Int, Int, Duration)wurde gelöscht und durchAnchorEntity.create(Session, Dimensions, Int, Int, Duration)ersetztSession.createEntity(String, Pose)wurde gelöscht und durchContentlessEntity.create(Session, String, Pose)ersetztSession.createExrImageResource(String)wurde gelöscht und durchExrImage.create(Session, String)ersetztSession.createGltfEntity(GltfModel, Pose)wurde gelöscht und durchGltfModelEntity.create(Session, GltfModel, Pose)ersetztSession.createGltfModelResource(String)wurde gelöscht und durchGltfModel.create(Session, String)ersetztSession.createInteractableComponent(Executor, InputEventListener)wurde gelöscht und durchInteractableComponent.create(Session, Executor, InputEventListener)ersetztSession.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean)wurde gelöscht und durchMovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean)ersetztSession.createPanelEntity(View, Dimensions, Dimensions, String, Pose)wurde gelöscht und durchPanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose)ersetztSession.createResizableComponent(Dimensions, Dimensions)wurde gelöscht und durchResizableComponent.create(Session, Dimensions, Dimensions)ersetztSession.createStereoSurfaceEntity(Int, Dimensions, Pose)wurde gelöscht und durchStereoSurface.create(Session, Int, Dimensions, Pose)ersetzt
- Die folgenden veralteten Methoden wurden entfernt:
Session.canEmbedActivityPanel(Activity)wurde gelöscht. Verwenden Sie stattdessengetSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY).Session.hasSpatialCapability(Int)wurde gelöscht. Es wurde durchgetSpatialCapabilities().hasCapability()ersetzt, da dies eine besser abgegrenzte Möglichkeit ist, das Vorhandensein von räumlichen Funktionen zu prüfen, dagetSpatialCapabilities()einSpatialCapabilities-Objekt zurückgibt.Session.requestFullSpaceMode()wurde gelöscht und durchSpatialEnvironment.requestFullSpaceMode()ersetztSession.requestHomeSpaceMode()wurde gelöscht und durchSpatialEnvironment.requestHomeSpaceMode()ersetzt
Session.setFullSpaceMode(Bundle)undSession.setFullSpaceModeWithEnvironmentInherited(Bundle)wurden in Erweiterungsfunktionen verschoben. In Entwicklerdateien müssen die neuen Importe für den Zugriff hinzugefügt werden:import androidx.xr.scenecore.setFullSpaceModeimport androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
Session.setPreferredAspectRatio(Activity, Float)wurde in eine Erweiterungsfunktion verschoben. In Entwicklerdateien muss der neue Import für den Zugriff hinzugefügt werden:import androidx.xr.scenecore.setPreferredAspectRatio
Session.getEntitiesOfType(Class<out T>)undSession.getEntityForRtEntity(RtEntity)wurden in Erweiterungsfunktionen verschoben. In Entwicklerdateien müssen die neuen Importe für den Zugriff hinzugefügt werden:import androidx.xr.scenecore.getEntitiesOfTypeimport androidx.xr.scenecore.getEntityForRtEntity
- „
Session.unpersistAnchor(Anchor)“ wurde gelöscht - „
Session.createPersistedAnchorEntity(UUID)“ wurde gelöscht
Bekannte Probleme
PanelEntity.setCornerRadius()undActivityPanelEntity.setCornerRadius()werden möglicherweise erst wirksam, wenn das Feld das nächste Mal verschoben wird. Sie können das Problem beheben, indem Sie das Feld an seine aktuelle Position verschieben.- Wenn
BoundsChangedfür dieActivitySpaceaufgerufen wird, wurden einigeActivityPoses möglicherweise nicht richtig aktualisiert. Sie wird beim nächstenOnSpaceUpdated-Anruf amActivitySpaceaktualisiert.
Funktionsgefährdende Änderungen und Änderungen beim Verhalten
PanelEntityundActivityPanelEntityhaben einen Standard-Eckenradius von 32 dp oder weniger, wenn der Bereich eine Breite oder Höhe von weniger als 32 dp hat.
Neue APIs und Funktionen
- Mit
StereoSurface.CanvasShapekönnenSpherical- undHemispherical-Arbeitsbereiche zum Rendern immersiver Medien erstellt werden. StereoSurfaceEntity.create()akzeptiert jetzt einenCanvasShape-Parameter. Dieser Parameter wird derzeit ignoriert, wird aber in einem zukünftigen Release verwendet.StereoSurfaceEntity.create()akzeptiert keinenDimensions-Parameter mehr. Anwendungen sollten die Größe des Canvas durch Festlegen vonCanvasShapesteuern.StereoSurfaceEntityhat einCanvasShape-Element, das dynamisch festgelegt werden kann.StereoSurfaceEntity.dimensionsist jetzt eine schreibgeschützte Eigenschaft. Anwendungen solltenCanvasShapefestlegen, um die Abmessungen zu ändern.- Mit
StereoSurfaceEntitykannStereoModejetzt nach der Erstellung zurückgesetzt werden.
Sonstige Änderungen
- Die compile-time-minSDK wurde auf 24 reduziert. Für alle Jetpack XR-APIs ist weiterhin API 34 zur Laufzeit erforderlich.
- Die Sitzungsfactory von
SceneCore(Session.create) startet keinen Intent mehr, um die BerechtigungSCENE_UNDERSTANDINGzu erhalten. Stattdessen muss die Clientanwendung die Berechtigungen explizit vom Nutzer anfordern, bevor sie versucht, die Anker zu erstellen. Die Ankererstellung schlägt fehl, wenn der Nutzer die Berechtigung nicht erteilt.
Diverse Fehlerkorrekturen
- Der Fehler in
getActivitySpacePose()wurde behoben. Die Funktion berücksichtigt jetzt dieActivitySpace-Skalierung und gibt Übersetzungs-Werte in skalierten Metern zurück, anstatt immer nicht skalierte Meter zu verwenden.transformPoseToverwendet jetzt auch die richtigen Einheiten, um Koordinatenänderungen zu berechnen, wennActivitySpacein der Quelle oder im Ziel enthalten ist. - Die Skybox wird jetzt auf eine komplett schwarze Skybox festgelegt, wenn mit
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom))eine Null-Skybox-Einstellung übergeben wird. Wenn Sie zur Standard-Skybox und ‑Geometrie des Systems zurückkehren möchten, verwenden SiesetSpatialEnvironmentPreference(null)..
Version 1.0.0-alpha01
12. Dezember 2024
androidx.xr.scenecore:scenecore-* 1.0.0-alpha01 ist veröffentlicht.
Funktionen der ersten Version Erste Entwicklerversion von Jetpack SceneCore, einer 3D-Szenengraph-Bibliothek zum Erstellen und Bearbeiten immersiver Szenen und Umgebungen. Mit dieser Bibliothek können Sie 3D-Modelle und Inhaltsbereiche relativ zueinander und zu Ihrer virtuellen oder realen Umgebung platzieren und anordnen.
- SpatialEnvironment: Mit einem Skybox-Bild und/oder einer 3D-Modellgeometrie als Kulisse für Ihre XR-Szene können Sie vollständig immersive Erlebnisse schaffen. Oder Sie aktivieren den Passthrough-Modus, damit sich die virtuelle Szene in die reale Umgebung des Nutzers einfügen kann.
- PanelEntity: Sie können Ihren 3D-Szenen 2D-Inhalte hinzufügen, indem Sie Standard-Android-Layouts und ‑Aktivitäten in räumlich angeordnete Bereiche einbetten, die frei schweben oder an Oberflächen in der realen Welt verankert werden können.
- GltfModelEntity: Mit dieser Funktion können Sie 3D-Modelle in Ihrer Szene platzieren, animieren und mit ihnen interagieren. SceneCore unterstützt das glTF-Dateiformat, um die Integration mit vorhandenen Modellen zu vereinfachen.
- Spatial Audio: Fügen Sie Ihrer 3D-Szene Umgebungs- und Punkt-Audioquellen hinzu, um einen vollständig immersiven, räumlichen Klang zu erzielen.
- StereoSurfaceEntity: SceneCore unterstützt das Routing von Inhalten, die auf einer Android-Oberfläche gerendert werden, zum linken und rechten Auge. Damit können stereoskopische Inhalte im Side-by-Side- oder Top-Bottom-Format gerendert werden, z. B. Stereofotos, 3D-Videos oder andere dynamisch gerenderte Benutzeroberflächen. Anwendungen sollten MediaPlayer oder ExoPlayer für die Videodecodierung verwenden.
- Komponentensystem: SceneCore bietet ein robustes und flexibles Komponentensystem zum Hinzufügen von Funktionen zu Ihren XR-Inhalten, einschließlich Affordanzen für Nutzer, um Modelle und Bereiche zu verschieben, ihre Größe zu ändern und mit ihnen zu interagieren.
- Anker: Wenn Passthrough aktiviert ist, können Sie Panels und Modelle an realen Oberflächen anbringen. So können Nutzer virtuelle Inhalte nahtlos in ihre reale Umgebung einfügen.
- Nutzerposition: Ermöglicht den Zugriff auf den Standort des Nutzers in der virtuellen Szene, um Inhalte an der Position des Nutzers auszurichten.
- SpatialCapabilities: Entwickeln Sie vollständig adaptive Apps, die räumliche Funktionen nutzen, wenn sie verfügbar sind, z. B. die 3D-Positionierung von UI-Inhalten. Außerdem kann Ihre App während der Ausführung auf Änderungen der Funktionen achten, um die Nutzung basierend darauf anzupassen, wie der Nutzer sein Android XR-Gerät verwendet.
Bekannte Probleme
- Derzeit ist ein minSDK von 30 erforderlich, um Jetpack SceneCore zu verwenden. Als Workaround fügen Sie den folgenden Manifesteintrag
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>hinzu, um mit einem minSDK von 23 erstellen und ausführen zu können. - Sitzungen können in verschiedenen Situationen ungültig werden, in denen die Aktivität automatisch neu erstellt wird, z. B. beim Ändern der Größe eines Hauptbereichs, beim Anschließen von Peripheriegeräten und beim Wechseln zwischen hellem und dunklem Modus. Wenn Probleme mit der Sitzungsungültigkeit auftreten, können Sie das Hauptfenster nicht in der Größe ändern, eine dynamische Fensterentität verwenden, die Neuerstellung von Aktivitäten für bestimmte Konfigurationsänderungen deaktivieren oder Änderungen am hellen/dunklen Design deaktivieren.
- Verschiebbare und in der Größe anpassbare Komponenten werden für GltfEntity nicht unterstützt.
- Entity.getSize() wird für GltfEntity nicht unterstützt.
- Jetpack XR-Apps müssen die Berechtigung
android.permission.SCENE_UNDERSTANDINGin AndroidManifest anfordern. - Das Erstellen einer Sitzung wird nur auf Android XR-Geräten unterstützt. Wenn Sie derzeit eine Sitzung erstellen und versuchen, sie auf einem Gerät zu verwenden, das kein Android XR-Gerät ist, erhalten Sie eine RuntimeException.
- Wenn die Skybox über `SpatialEnvironment.setSpatialEnvironmentPreference()` auf „null“ gesetzt wird, wird nicht wie dokumentiert eine einfarbig schwarze Skybox angezeigt. Das kann dazu führen, dass die Standard-Skybox des Systems angezeigt wird oder sich die aktuelle Skybox nicht ändert.
- SceneCore-Clients sollten
implementation(“com.google.guava:listenablefuture-1.0”)in die Gradle-Konfiguration für die Abhängigkeiten ihrer App einfügen. In einer zukünftigen Version wird diese Bibliothek alsapi-Abhängigkeit in „scenecore“ enthalten sein, sodass Clients sie nicht explizit deklarieren müssen. - SceneCore enthält fälschlicherweise
com.google.guava:guava-31.1-androidundcom.google.protobuf:protobuf-javaliteals transitive Abhängigkeiten. Wenn dies zu Fehlern aufgrund doppelter Klassen in Ihrem Build führt, können diese beiden Abhängigkeiten problemlos ausgeschlossen werden. - Wenn Ihre App SceneCore verwendet und ProGuard aktiviert ist, stürzt sie beim Erstellen einer Sitzung ab. Als Workaround können Sie ProGuard deaktivieren. In diesem Leitfaden finden Sie weitere Informationen zum Aktivieren von ProGuard.