Jetpack SceneCore
| Letzte Aktualisierung | Stabile Release | Releasekandidat | Beta-Release | Alpha-Release |
|---|---|---|---|---|
| 21. Oktober 2026 | 1.0.0 | - | - | 1.1.0-alpha01 |
Abhängigkeiten deklarieren
Für eine Abhängigkeit von XR SceneCore musst du deinem 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 in der Datei build.gradle für Ihre App oder Ihr Modul hinzu:
Groovy
dependencies { implementation "androidx.xr.scenecore:scenecore:1.1.0-alpha01" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.1.0-alpha01" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.1.0-alpha01") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.1.0-alpha01") }
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.1
Version 1.1.0-alpha01
21. Oktober 2026
androidx.xr.scenecore:scenecore-*:1.1.0-alpha01 ist veröffentlicht. Version 1.1.0-alpha01 enthält diese Commits.
API-Änderungen
- Es wurden APIs für dynamische Mesh-Updates (
MeshBuffer.createDynamic,MeshBuffer.updateVertexData,MeshBuffer.updateIndexDataund ein dynamischerCustomMesh.BuilderFromMeshData-Konstruktor) hinzugefügt, um die Aktualisierung von Vertex- und Indexdaten zur Laufzeit zu unterstützen. (Ia1ecb) - Es wurden
VertexLayout.getBufferIndex-Hilfsmethoden hinzugefügt, mit denen sich der Pufferindex für eine bestimmteVertexAttributeoderVertexBufferLayoutganz einfach abrufen lässt. (I1a9e3) CustomMesh.boundswurde zu einer Variablen gemacht, damit der Begrenzungsrahmen zur Laufzeit dynamisch aktualisiert werden kann. (Ib0397)- Die
glTF-Animations-APIs (GltfAnimation,GltfModelEntity.getAnimationsundGltfModelEntity.stopAllAnimations) wurden auf „öffentlich/stabil“ hochgestuft, während derGltfAnimation.loop-Setter als experimentell undGltfAnimationStartOptionsund start(options) als experimentell und verworfen beibehalten wurden. (Iacdae) stopAllAnimations()wurde zuGltfModelEntityhinzugefügt,GltfAnimation.start()wurde parameterlos gemacht, die Attributeloopundspeedwurden zuGltfAnimationhinzugefügt undGltfAnimationStartOptions,start(options)undseekTo(Duration)wurden verworfen. (I53105)GltfModelEntity-APIs wurden aktualisiert, umIllegalStateException(insbesondereEntity.DisposedException) zu dokumentieren, wenn sie für verworfene Entitäten aufgerufen werden. I65a76f
Fehlerkorrekturen
- Die Abhängigkeit
androidx.lifecycle:lifecycle-runtimewurde auf 2.10.0 aktualisiert. Diese Version ist erforderlich, damit die gebündelten Lint-Prüfungen für die Lebenszyklus-Laufzeit mit AGP-Version 9.5.0-alpha04 oder höher ausgeführt werden können. (I99bfd, b/556807521) - Die kdocs im Zusammenhang mit
AudioOutputProviderwurden verbessert, um hervorzuheben, dass sie nicht mit mehrerenExoPlayer-Instanzen wiederverwendet werden sollten (I6b18e). - Unnötige Abhängigkeiten von
impresswurden aus verschiedenen XR-Modulen entfernt. I84636c
Version 1.0
Version 1.0.0
21. Oktober 2026
androidx.xr.scenecore:scenecore-*:1.0.0 ist veröffentlicht. Version 1.0.0 enthält diese Commits.
Wichtige Funktionen von 1.0.0:
- Jetpack XR SceneCore ist jetzt stabil. Mit SceneCore können Sie 3D-Inhalte, die durch Entitäten definiert sind, relativ zueinander und zu Ihrer Umgebung platzieren und anordnen. Mit SceneCore können Sie 2D-Panels und 3D-Modelle in virtuellen und Mixed-Reality-Szenen erstellen, platzieren und bearbeiten, räumliche Umgebungen und Spatial Audio-Quellen festlegen und virtuelle Inhalte in der realen Welt verankern.
- Weitere Informationen finden Sie auf der Übersichtsseite und in der API-Referenz.
Version 1.0.0-rc02
7. 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 refaktoriert wurde, dassPerceptionRuntimedirekt aus derSession-Instanz abgerufen wird. (Ie35b1) - Ein potenzielles Kontextleck wurde behoben, indem
applicationContextfür nativeOpenXR-Handles verwendet wurde, um sicherzustellen, dass die native Laufzeit keine Verweise auf einenActivity-Kontext enthält. (Ie35b1) - Race-Bedingungen in
XrInstanceManagerwurden durch die Einführung einer ordnungsgemäßen Synchronisierung und Initialisierungssperre behoben. (Ie35b1) ReferenceCleanerwurde korrigiert, um die Abmeldung 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 undScenerefaktoriert wurde, um die Instanz direkt aussessionConnectorsabzurufen. (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
xr:scenecore:scenecore-openxr-Bibliothek hinzugefügt. (Ic49f2)- Mehrere verworfene APIs wurden vor dem stabilen Release 1.0.0 entfernt.
Fehlerkorrekturen
- Ein Speicherleck-Fehler wurde behoben, bei dem der Verweis auf die Aktivität vom System beibehalten werden konnte, wenn die Aktivität gelöscht wurde. (I6dcd7)
Geändertes 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 durch die automatische Speicherbereinigung 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 Properties wurden in Getter umgewandelt. (I8d689, b/524771027) - Die öffentliche Factory-Methode
MovableComponent.createTrackingMovablewurde entfernt. (I00912, b/477169015) - „Session.create“ wurde in eine Sperrfunktion umgewandelt. (I5d27f)
ActivitySpaceundAnchorSpaceerweitern jetzt eine gemeinsameSpaceEntity-Klasse, die ein gemeinsames Verhalten für Entitäten enthält, deren Positionen vom System gesteuert werden (I506ec, b/513619219).AnchorEntitywurde inAnchorSpaceumbenannt (Ifa95e, b/513619219).- Stellt die öffentliche Test-API
SoundEffectPoolComponentTesterbereit. (I87df7, b/498104417) - Dem
SurfaceEntity.Shape.Quad-Konstruktor wurde ein optionalercornerRadius-Parameter hinzugefügt und diecornerRadius-Property wurde öffentlich gemacht. Entwickler können jetzt beim Erstellen einer Quad-Form einen Eckenradius angeben, umSurfaceEntity-Canvas mit abgerundeten Ecken zu rendern, und den Radius vorhandener Quads abfragen. (Ia7809, b/474681085) - Stellt öffentliche Test-API-Überladungen für
SpatialAudioTrackBuilderTester,SpatialAudioTrackTesterundSceneCoreTestRule.getTesterbereit. (I378c6, b/496333938) - Spezielle Überschreibungen von
toString()für eine Reihe von ARCore-Typen hinzufügen. Diese Typen sollen Entwicklern zusätzliche Informationen zur Fehlerbehebung 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,setIndexDataundaddSubsetwurden zuCustomMesh.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 wieByteBufferRegionoderMeshSubsetverpacken 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 entsprechend aktualisiert. (I45751)- Stellt die öffentlichen Test-APIs
PanelEntityTesterundMainPanelEntityTesterbereit (I961e4) - Attribut
pointSourceParamswird zuSoundEffectPoolComponenthinzugefügt (I4a750) - Stellt die öffentliche Test-API
MovableComponentTesterbereit (I0c972) - Stellt die öffentliche Test-API
PointerCaptureComponentTesterbereit (Ic0d4f) - Stellt die öffentliche Test-API
ActivityPanelEntityTesterbereit (I837c4) - Stellt die öffentliche Test-API
ResizableComponentTesterbereit (I0a3a4) - Stellt die öffentliche Test-API
BoundsComponentTester.bereit (Iefd53) - Stellt die öffentliche Test-API
SpatialMediaPlayerTesterbereit (Ia3e09) - Stellt die öffentliche Test-API
SpatialEnvironmentTesterbereit (Icf60f) - Stellt die öffentlichen Test-APIs
GltfModelTesterundSceneCoreTestRule.getGltfModelTesterbereit. (I33fcb) - Stellt die öffentliche Test-API
InteractableComponentTesterbereit. (Ia7096) - Stellt die öffentliche Test-API
SurfaceEntityTesterbereit. (Ic0740) - Stellt die öffentlichen Test-APIs
GltfModelEntityTester,TestGltfModelNodeundTestGltfAnimationbereit. (I72c4d) - Stellt die öffentlichen Test-APIs
SceneTesterundSceneCoreTestRule.sceneTesterbereit. (Ib4ec5) - Stellt die öffentlichen Test-APIs
PerceptionSpaceTesterundSceneCoreTestRule.perceptionSpaceTesterbereit. (Icf739) - Stellt die öffentliche Test-API
MeshEntityTesterbereit. (I63801) - Stellt öffentliche Test-API-Überladungen für
ImageBasedLightingAssetTesterundSceneCoreTestRule.getTesterbereit. (I57ec4) - Stellt die öffentliche Test-API
TextureTesterbereit (Ia865b) - Stellt die öffentliche Test-API
PositionalAudioComponentTesterbereit (Icd96e) - Stellt die öffentliche Test-API
SpatialSoundPoolTesterbereit (Ia3531) - Stellt die öffentliche Test-API
SoundEffectPoolTesterbereit (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 eine genaue Zuordnung der physischen Abmessungen inActivitySpacebereitzustellen. (I0e3ac) - Öffentliche APIs zum Erstellen und Rendern von benutzerdefinierten Meshes hinzugefügt. (I7ad2f)
- Die
VertexLayoutAPI wurde aktualisiert und verwendet jetzt eine Liste vonVertexBufferLayouts, wobei jedeVertexBufferLayoutdie Attribute innerhalb eines einzelnen Vertex-Puffers beschreibt. Dies ermöglicht flexiblere Anordnungen von Vertexdaten, einschließlich verschachtelter Attribute mit benutzerdefinierten Schrittweiten und Offsets. (Ic426b) - Stellt
MovableComponent.createTrackingMovablebereit, um ein ARCore-Trackable in eine Pose relativ zum Aktivitätsbereich 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 nun 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 räumlichen Umgebungsbeleuchtung 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 Parameter „geometry“ enthalten sein sollten. (I24d4a) - Räumliche Entitäten verwenden jetzt eine stabile Gerätedichte für Pixel-zu-Meter-Berechnungen auf den Spatial API-Ebenen 1 und 2. Dadurch wird eine einheitliche 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 bereinigbar machen, 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-
add/removeOnFooListener-Methoden wurden inadd/removeFooListenerumbenannt, wobeiOnaus dem Namen entfernt wurde. (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 für mehr Sicherheit und Erweiterbarkeit refaktoriert.
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
PlaneSemanticType-PlaneOrientation-Konstanten von SceneCore wurden 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 einen Satz dieser Typen anstelle eines einzelnen Werts. (Ib1033) - Unterstützung für Skelettanimation (Skinning) zur experimentellen Custom Mesh API hinzugefügt. Entwickler können jetzt benutzerdefinierte Meshes animieren, indem sie beim Erstellen eines
MeshEntityeinenboneCountangeben und die Animation in Echtzeit mitMeshEntity.setBoneTransforms()aktualisieren. (Id8ba2, b/496692490) - Die experimentelle
CustomMeshAPI wurde eingeführt. Entwickler können jetzt mitCustomMesh,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)- Spatial Audio-Komponenten werden hinzugefügt:
PositionalAudioComponent,SoundEffectPoolComponentundSoundFieldAudioComponent(Ieda89) AnchorEntity.getAnchorwurde durchAnchorEntity.anchorersetzt und gibt jetzt einAnchorzurück, wenn dieAnchorEntityaus einem ARCore-Anchorerstellt wurde (I5c7c8).- Der Standardwert für den Parameter
parentin den Factory-MethodenActivityPanelEntity,GltfModelEntity,GroupEntity,PanelEntityundSurfaceEntitywurde vonActivitySpaceinnullgeändert. Um eine Entität an den Szenengraphen anzuhängen und sichtbar zu machen, müssen Entwickler jetzt explizit das übergeordnete Element während der Instanziierung oder überEntity.parent = ...festlegen (Ie7cc1).
Fehlerkorrekturen
SceneCorefordert jetzt automatischEntity-Instanzen zurück, wenn sie als Phantom erreichbar werden. Entwickler müssendispose()also nicht mehr explizit aufrufen, um Ressourcen freizugeben. Damit eine [Entity]-Instanz ordnungsgemäß freigegeben wird, sollten Entwickler Folgendes tun:- Trennen Sie es vom Szenengraphen, indem Sie
parentaufnullsetzen. - Geben Sie alle starken Verweise auf die Instanz im Code auf.
- Hinweis zu speziellen Entitätstypen: Für Entitäten, die kein übergeordnetes Element haben können (z. B.
AnchorEntity), müssen Entwickler eine starke Referenz beibehalten, während die Instanz verwendet wird. Wenn alle Referenzen freigegeben werden, werden diese Instanzen als Phantom erreichbar und automatisch zurückgefordert. (I83fe4)
- Trennen Sie es vom Szenengraphen, indem Sie
- Eingeschränkte Proguard-Keep-Regeln für alle
SceneCore-Bibliotheken. (I98447)
Bekannte Probleme
- Wenn Sie eine
PositionalAudioComponentan eineEntitymit einer inaktivenExoPlayer-Instanz anhängen, führt dies zu einem Absturz. RufesetPointSourceParamsnicht auf und hänge die Spatial Audio-Komponenten nicht an oder ab, während ExoPlayer angehalten 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.runtimewurden verworfen. (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) HandJointTypeEnum-Werte wurden umbenannt. (Ifbc83, b/482670596)Component.onAttachundonDetachals öffentliche API verfügbar machen, um benutzerdefinierteComponent-Implementierungen zu ermöglichen. (I0ca1f)- Hinzufügen von Spatial Audio-Komponenten (I39ddd, b/489421980, b/436642086, b/436642499)
- Entität aus
PointSourceParamsentfernen. Stattdessen wird die Entität direkt mitSpatialAudioTrack,SpatialSoundPoolundSpatialMediaPlayerverwendet (Ib3685, b/489421980, b/436634048). DeviceTrackingMode.LAST_KNOWNwurde inSPATIAL_LAST_KNOWNumbenannt (mit einem verworfenen Fallback),INERTIAL_LAST_KNOWNwurde für das 3DoF-Tracking hinzugefügt undTRACKING_DEGRADEDwurde zuTrackingStatehinzugefügt. (Ie661c, b/445466590)GroupEntitywurde eingestellt. Wenn Sie eine Entität mit nur der grundlegenden Entitätsfunktion haben möchten, rufen SieEntity.createauf. Dadurch wird eine Entitätsschnittstelle zurückgegeben. (I4c450, b/473867483)XrLogAPI hinzugefügt. Setzen SieXrLog.isEnabledauftrue, um das Logging in JetpackXR zu aktivieren, und verwenden SieXrLog.Level, um die Logebene festzulegen. (I76a1f, b/463460895, b/487378441)
Fehlerkorrekturen
Scene.keyEntityist jetzt standardmäßig aufmainPanelEntityfestgelegt. (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 verworfenen Funktionen
setMaterialOverrideundclearMaterialOverridewurden ausGltfModelEntityentfernt. Sie werden jetzt für die einzelnenGltfModelNodeaufgerufen. (I2e5d2) transformPixelCoordinatesToLocalPositionundtransformNormalizedCoordinatesToLocalPositionwurden zuPanelEntityhinzugefügt und entsprechende experimentelle Methoden entfernt, die früher Posen anstelle vonVector3-Positionen zurückgegeben haben. (Ib6960, b/460123106, b/458333591)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 projizierten Laufzeit von Scenecore hinzugefügt (I9c4ab, b/476440158)
- Wenn Sie die Größe des Hauptbereichs ändern, wird er möglicherweise am Ursprung
ActivitySpaceneu positioniert. Es gibt keine andere Möglichkeit, als das Steuerfeld manuell oder programmatisch wieder an seine ursprüngliche Position zu verschieben. Dieser Fehler wird in einer zukünftigen Version behoben. (b/489427007). - In einigen Fällen wird die Option für
MovableComponentmöglicherweise nicht fürSurfaceEntityund andere Entitätstypen angezeigt, die keine Panels sind. 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 Entitäten können nach einigen Sekunden von ihrer verankerten Position zum Ursprung des Aktivitätsbereichs springen.
- Apps können beim Erstellen von
SurfaceEntity-Instanzen abstürzen. 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)- Die Property „Öffentlicher Name“ wurde zu
FakeEntityhinzugefügt und die Ansicht wurde amFakePanelEntityveröffentlicht. (Ifa1f9)
Fehlerkorrekturen
- Berechnungen der Pixeldichte bei neueren System-Images korrigiert (I57d04)
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
PerceivedResolutionResult.InvalidCameraViewwird inPerceivedResolutionResult.InvalidRenderViewpointumbenannt, da diegetPerceivedResolution-APIs jetzt dieRenderViewpointAPI von ARCore anstelle vonCameraViewScenePoseverwenden. Dieser Name spiegelt die neue Implementierung besser wider. (I8c967, b/446989745, b/419311998)- Die Methoden
PanelEntity/SurfaceEntity.getPerceivedResolutionverwenden jetzt ein vom Entwickler bereitgestelltesRenderViewpointals Argument. Zuvor hat die Laufzeit dieRenderViewpoint, die bei der Berechnung der wahrgenommenen Auflösung verwendet wurde, 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 eineScenePosezu erhalten, die dem Kopf oder dem linken oder rechten Auge des Nutzers entspricht, können EntwicklerPerceptionSpace.getScenePoseFromPerceptionPosemit der entsprechenden Pose verwenden, die über ARCore APIs abgerufen wird. (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)- Der
SceneCore-Laufzeit wurde die Hilfsklasse „Utils“ hinzugefügt, die auf der Logik inSceneCorebasiert (I570b9).
Fehlerkorrekturen
- Ein potenzieller Absturz, der auftreten kann, wenn die Sitzung beendet und ein
SpatialModeChangeEventempfangen wird, wurde behoben (If44e8). - Ein Fehler wurde behoben, der dazu führen konnte, dass beim Verlassen oder erneuten Aufrufen einer Aktivität eine
IllegalStateExceptionausgelöst wurde. (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 einer
ScenePosehinzu, die die Zusammensetzung der Ursprungspose des Wahrnehmungsbereichs und einer Pose in Bezug auf den Ursprung des Wahrnehmungsbereichs darstellt. (I5b50a) - Funktion
getGravityAlignedPosehinzugefügt. Bei der an der Schwerkraft ausgerichteten Pose werden die Neigung und das Rollen der Drehung ignoriert. (I5ae21) AnchorEntity.StateKonstantentypen wurden von Ganzzahlen in Statusuntertypen geändert. (Ib0c49)getChildren()wurde zur Entitätsschnittstelle hinzugefügt. Lebenszyklus vonMainPanelEntityaktualisiert. (Ia69d6)
API-Änderungen
PointerCaptureComponent.PointerCaptureStateKonstantentypen wurden von Ints inPointerCaptureState-Untertypen geändert. (Ic888a)Scene.spatialCapabilitiesist jetzt vom TypSet<SpatialCapability>und kein Int-Feld mehr. DieSpatialCapability-Konstanten wurden umbenannt. (I9c109)SurfaceEntity-Konstantentypen wurden umbenannt und von Ints inSurfaceEntity-Untertypen geändert. (I419ed)SpatializerConstant-Konstantentypen wurden umbenannt und von Ints inSpatializerConstant-Untertypen geändert. (Ia0e18)TextureSampler-Konstantentypen wurden umbenannt und von Ints inTextureSampler-Untertypen geändert. (I44078)SpatialVisibilityKonstantentypen wurden von Ints inSpatialVisibility-Untertypen geändert. (I70739)ResizeEvent.ResizeStateKonstantentypen wurden umbenannt und von Ints inResizeState-Untertypen geändert. (I384d5)InputEventKonstantentypen wurden umbenannt und von Ganzzahlen in Typen geändert, die von ihrem jeweiligen umschließenden Typ erben. (I82817)GltfModelEntity.AnimationStateKonstantentypen wurden von Ints inAnimationState-Untertypen geändert. (I24f4e)AlphaMode-Konstantentypen wurden umbenannt und von Ints inAlphaMode-Untertypen geändert. (I27b56)SpaceKonstantentypen wurden von Ganzzahlen in Untertypen von „Space“ geändert. (I9255b)ScenePose.hitTestund zugehörige Methoden geben jetztnullzurück, wenn keine Schnittmenge gefunden wurde, anstatt einesHitTestResultmit einem Null-hitPosition.HitTestResult.hitPositionkann nicht mehr null sein. (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-corewurden als Implementierungsabhängigkeit von:xr:scenecore:scenecorehinzugefügt (I6ab65, b/447000520)- Eine Ausnahme wird 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 in eine boolesche Property geändert (I5c4e8, b/440588971)Scenecore-Fakes befinden sich jetzt im Modulxr:scenecore:scenecore-testing. (Idd951)shouldAutoHideContentwurde inisAutoHideContentWhileResizingEnabledundshouldAlwaysShowOverlayinisAlwaysShowOverlayEnabledumbenannt (I97c36, b/432335421)- Die
TextureSampler-Konstanten vonSceneCorewurden zur besseren Lesbarkeit aktualisiert, z. B. istTextureSampler.MinFilter.LINEARjetztTextureSampler.MIN_FILTER_LINEAR(Ib159c). - Der Setter
setKeyEntityder Szene wurde mit der VariablekeyEntityzusammengeführt. Wenn SiekeyEntityauf eine nicht verschiebbare Entität wieAnchorEntityfestlegen, wird einIllegalArgumentExceptionausgegeben, anstatt den booleschen Wert „false“ zurückzugeben. (I62080, b/428721695, b/422215745) - Die Variable
SpatialModeChangeListenerder Szene wurde durchsetSpatialModeChangedListenerersetzt. Sie akzeptiert einConsumer<SpatialModeChangeEvent>anstelle einesSpatialModeChangedListener.setSpatialModeChangedListenerkann jetzt optional einen Executor verwenden. (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)- Konstante
SpatialSoundPool.PLAY_FAILEDhinzugefügt. (Ifc7fe, b/422215565) - Den
SpatialSoundPool.play-Methoden wurden Standardargumente hinzugefügt. (Ifc7fe, b/422215565) - Rückgabewert von Settern in
SpatialAudioTrackBuilderentfernt (Ifc7fe, b/422215565) - SurfaceEntity-Änderungen
SurfaceEntity.CanvasShapehatShapeumbenanntSurfaceEntity.CanvasShape.Vr180HemispherehatHemisphereumbenanntSurfaceEntity.CanvasShape.Vr360SpherehatSphereumbenanntSurfaceEntity.EdgeFeatheringParams.SmoothFeatherhatRectangleFeatherumbenanntSurfaceEntity.EdgeFeathingParams.SolidEdgehatNoFeatheringumbenanntSurfaceEntity.ContentSecurityLevelhatSurfaceProtectionumbenanntSurfaceEntity.ContentSecurityLevel.{values}hat das PräfixSURFACE_PROTECTION_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 increateBundleForFullSpaceModeLaunchbzw.createBundleForFullSpaceModeLaunchWithEnvironmentInheritedumbenannt, in die Datei „LaunchUtils.kt“ als Methoden auf oberster Ebene verschoben und verwenden „Session“ als ersten Parameter (I64a2c, b/437186050)- Die
GroupEntity-Factory gibt jetzt den TypGroupEntityanstelle von „Entity“ zurück. (I66042)
Fehlerkorrekturen
- Löst einen
IllegalStateExceptionaus, wenn eine Entitätsinstanz nach dem Löschen 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
BaseEntity- undBaseScenePose-APIs vonSceneCoreaufheben (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 Perceived Resolution API wurde zu Panel-Entitäten und
SurfaceEntitieshinzugefügt. (I118f6) PerceivedResolutionCallback-Methoden wurden zu Scene.kt hinzugefügt, um die wahrgenommene Auflösung des Hauptbereichs der Aktivität im HSM zu überwachen. (I58084)SurfaceEntity: Unterstützung für die Anwendung hinzugefügt, um Super-Sampling bei der Erstellung anzufordern. Dadurch können Anwendungen einen Super-Sampling-Filter für Anti-Aliasing verwenden. (I06913)- Das Attribut
recommendedContentBoxInFullSpacewurde zuActivitySpacehinzugefügt. Es wird eine empfohlene Box zurückgegeben, in der Inhalte im Modus „Gesamter Bereich“ platziert werden können. (I4cd6f) - Überladener Konstruktor für den Modifikator „movable“ 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. Wir gehen davon aus, dass es bis zur ersten Betaversion weitere funktionsgefährdende API-Änderungen geben wird, diese werden jedoch nicht so weitreichend oder zahlreich sein.
- Die folgenden Klassen und Schnittstellen wurden umbenannt und/oder verschoben:
androidx.xr.scenecore.PixelDimensionszuandroidx.xr.runtime.math.IntSize2d;androidx.xr.scenecore.Dimensionszuandroidx.xr.runtime.math.FloatSize3d;androidx.xr.scenecore.ActivityPosezuScenePose,androidx.xr.scenecore.ContentlessEntityzuGroupEntity,androidx.xr.scenecore.PlaneTypezuPlaneOrientation;androidx.xr.scenecore.PlaneSemanticzuPlaneSemanticType. (Ifd405)(I3b622) (If534d) - Eine Reihe von Settern für die Attribute von
Scenewurden als privat festgelegt. Sie waren nicht für die Änderung durchSceneCore-Clients vorgesehen:activitySpace,activitySpaceRoot,mainPanelEntity,perceptionSpace,spatialCapabilities,spatialEnvironmentundspatialUser. (I2f506) - In „Entity“: Die folgenden Properties wurden geändert:
get/setParent(),setContentDescription;Entity.is/setHidden()wurde verworfen, verwende stattdessenEntity.is/setEnabled. (Ibc4c6) - Die Klasse
androidx.xr.scenecore.BasePanelEntitywurde entfernt. Verwenden Sie stattdessen direktPanelEntity. Getter und Setter fürPanelEntitywurden durch Properties ersetzt. AttributPanelEntity.sizewurde vonFloat3dSizeinFloat2dSizegeändert. Die verworfene Methodeandroidx.xr.scenecore.PanelEntity.getPixelDimensionswurde entfernt. Verwenden Sie stattdessengetSizeInPixels. (Icc174) androidx.xr.scenecore.OnSpaceUpdatedListenerwurde durchRunnableersetzt. (I19308)SpatialUser.getCameraViews()wurde durch eine Property ersetzt. (Ib0cc5) FürExrImageundGltfModel:wurden diecreate-Methoden in Sperrfunktionen geändert. Die Erstellungsparameter wurden so geändert, dass sie anstelle vonStringeinenUrioderPathakzeptieren. (Id8883) (I0d247), (I25706)SpatialEnvironment.requestFullSpaceModeundSpatialEnvironment.requestHomeSpaceModewurden zu „Scene“ 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. Außerdem wurde die verworfene KlasseSpatialEnvironment.PassthroughModeentfernt (I927bd) (I927bd) (I927bd). - 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 Deckkraftpräferenz vorliegt. (I40107) - Der Parameter
windowBoundsPxwurde in der Erstellungsmethode 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). SpatialPointerIconinSpatialPointerComponentkann nicht mehr null sein. Verwenden SieSpatialPointerIcon.DEFAULTanstelle von null, um anzugeben, dass das Standardzeigersymbol des Systems verwendet werden soll. (I416d2)androidx.xr.scenecore.AnchorEntity.getState()wurde durch eine Eigenschaft mit Lesezugriff ersetzt. Parameter der MethodeAnchorEntity.create()wurden zur besseren Verständlichkeit umbenannt. In den Methoden vonAnchorEntityzum Festlegen und Hinzufügen von Listenern wurde der Listener in das letzte Argument verschoben, um nachgestellte Lambdas zu aktivieren.androidx.xr.scenecore.OnStateChangedListenerfürAnchorEntitywurde durchConsumer<AnchorEntity.State>ersetzt. (I472e0)GltfModelEntity.getAnimationState()ist jetzt eine Property. (I10b29)ActivitySpace.getBounds()wurde durch eine Property ersetzt.ActivitySpace.addBoundsChangedListenerwurde inActivitySpace.addOnBoundsChangedListenerumbenannt.ActivitySpace.setOnSpaceUpdatedListenerwurde durch Methoden zum Hinzufügen/Entfernen ersetzt. (I4c956)- „Für
AnchorPlacement: planeTypeFilter“ wurde in „anchorablePlaneOrientations“ umbenannt, „planeSemanticFilter“ wurde in „anchorablePlaneSemanticTypes“ umbenannt. Das Hinzufügen einesMovableComponentzu einemAnchorEntityoderActivitySpacegibt „false“ zurück,MoveListenerwurde inEntityMoveListener shouldDisposeParentAnchorumbenannt,disposeParentOnReAnchor systemMovablewurde aus der Funktioncreatezugunsten voncreeateCustomMovable,createSystemMovableundcreateAnchorableentfernt (If11c4) SurfaceEntity.featherRadiusX/Ywurde entfernt und einEdgeFeatheringParams-Klassenkonzept hinzugefügt. (Ic78fc)- Die Methode
PanelEntity.enablePanelDepthTest()wurde durch das AttributpanelClippingConfigersetzt. Legen SieScene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true)fest, um die Tiefenprüfung zu aktivieren, oderPanelClippingConfig(isDepthTestEnabled = false), um sie zu deaktivieren. (I0cbe0) Scene.mainPanelEntityist jetzt vom TypMainPanelEntitystattPanelEntity(I7125a)- Die Methode
setFullSpaceModevon Scene 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 bzw. 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 wurden 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()undEntity.isHidden()durchEntity.isEnabled()ersetzt.setHidden(false)entsprichtsetEnabled(true)undisHidden() == !isEnabled(). (Icf0de)- Der Typ von
Entity.contentDescriptionwurde von String inCharSequencegeändert. (Ie59be) Session.createundSession.configuregeben jetztSecurityExceptionaus, wenn nicht genügend Berechtigungen gewährt wurden, anstattSessionCreatePermissionsNotGrantedoderSessionConfigurePermissionsNotGrantedzurückzugeben. (I7c488)ResizableComponent.createerfordert jetzt einConsumer<ResizeEvent> ResizeEventListenerwurde durchConsumer<ResizeEvent> ResizableComponent.sizeersetzt wurde inResizableComponent.affordanceSize ResizableComponent.minimumSizeumbenannt wurde inResizableComponent.minimumEntitySize ResizableComponent.maximumSizeumbenannt wurde inResizableComponent.maximumEntitySizeumbenannt,ResizableComponent.autoHideContentwurde inResizableComponent.shouldAutoHideContentumbenanntResizableComponent.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 redundant, 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 die Bibliothekxr:scenecore:scenecore-guavaverwenden, 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. Beispiel:GuavaExrImageenthält die Guava-äquivalenten asynchronen Funktionen von ExrImage,GuavaScenePoseenthält die Guava-äquivalenten asynchronen Funktionen vonScenePose,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 Fehlerbehebungen zur Unterstützung der Proguard-Minimierung für Jetpack XR
SceneCore(I4f47e) - Es wurde ein Fehler behoben, durch den ein
InteractableComponentzu einem Absturz führen konnte, wenn diehitPositionin der HitInfo desInputEventabstürzte, wenn die vom System zurückgegebenehitPositionnull war (I7a695). - Die Werte für den Konfigurationsmodus wurden umbenannt, um ihr Verhalten widerzuspiegeln. (I6d247)
- Probleme mit dem Sichtfeld und
HitTestin derSceneCore-TestApp wurden behoben. (I2c51e) - 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, sodass die obere Karte dem linken Auge und die untere Karte dem rechten Auge zugeordnet ist. (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 Zurück-Geste funktioniert jetzt auch bei Panel-Entitäten ohne eingebettete Aktivitäten. Damit die Zurück-Schaltfläche 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.Entity.setPose,Entity.getPose,Entity.setScale,Entity.getScale,Entity.setAlphaundEntity.getAlphaverwenden jetzt den neuen ParameterrelativeTo, mit dem Werte relativ zu verschiedenen Bereichen abgerufen/festgelegt werden können. Die unterstützten Werte sind „Parent“, „Activity“ und „Real World“. Der Standardwert für diesen Parameter ist „Parent“.SessionExt.ktwurden Callback-Erweiterungsmethoden für die räumliche Sichtbarkeit hinzugefügt, um zu überwachen, wann sich der Szeneninhalt in das Sichtfeld des Nutzers oder daraus heraus bewegt.setPointSourceParamswurde zuSpatialAudioTrackhinzugefügt, sodass die Parameter nach dem Erstellen des Tracks aktualisiert werden können.- Es wurde eine neue Klasse „Scene“ mit Verweisen auf
Scenecore-APIs hinzugefügt. Auf die Szene kann als Erweiterungseigenschaft von „Session“ zugegriffen werden. Funktionen inSessionExtwurden in Scene verschoben, sodass Importe angepasst werden müssen, z. B.SessionExt.getScene(session).addSpatialCapababilitiesChangedListenergegenSessionExt.addSpatialCapabilitiesChangedListener. ActivityPose.hitTestAsyncwurde hinzugefügt, um einenhitTestfür virtuelle Inhalte zu ermöglichen.- Der neue Komponententyp
SpatialPointerComponentwurde hinzugefügt. Damit können Clients das für den Zeiger gerenderte Symbol angeben oder das Symbol deaktivieren. Diese Komponente kann derzeit nur anPanelEntity-Instanzen angehängt werden. - Neue
PanelEntity-Factory, die Panel-Abmessungen entweder in Metern oder Pixeln akzeptiert. Die älterePanelEntity-Factory, die zwei Parameter vom Typ „Dimension“ für das Steuerfeld verwendet, wurde entfernt.
API-Änderungen
- Die Einschränkung
RequiresApi(34)wurde für alle Jetpack XR-Pakete entfernt. Diese Einschränkung war redundant, 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)
- Der Kurs „
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-Klasse in der XR-Laufzeit gelöscht. - „
StereoSurfaceEntity“ wurde in „SurfaceEntity“ umbenannt. Entity.setSizeundEntity.getSizewurden entfernt und die entsprechenden Methoden wurden zuPanelEntityhinzugefügt.- „
PointSourceAttributes“ wurde in „PointSourceParams“ umbenannt. - „
SpatializerConstants.SOURCE\_TYPE\_BYPASS“ wurde in „SpatializerConstants.SOURCE\_TYPE\_DEFAULT“ umbenannt. - Die Entität „
PointSourceParams“ wurde von öffentlichem auf internen 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 Klasse „Fov“ 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 einemFrameLayoutübergeordnet. Dies erleichtert die Verwendung vonLayoutInspectormit räumlichen Bereichen. - Die aktuell verwendete
XrExtensions-Instanz ist jetzt nach dem Best-Effort-Prinzip auf der Plattform registriert, um das Debugging von Apps zu unterstützen.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem es zu einem Absturz kommen konnte, wenn ein
PanelEntitymitMovableComponentundAnchorPlacementverschoben wurde. - Ein Problem wurde behoben, bei dem
ResizableComponentimonResizeStart-Callback veraltete Größen bereitgestellt hat. - Ein Absturz wurde behoben, der auftrat, wenn
dispose()vonJxrPlatformAdapterAxrmehrmals 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
- Die Proguard-Minimierung wird jetzt für Jetpack XR-Code unterstützt.
Fehlerkorrekturen
- Zusätzliche Fehlerkorrekturen zur Unterstützung der Proguard-Minimierung 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 funktionsgefährdende Änderung, die sich auf Apps auswirkt, die vor 1.0.0-alpha02 erstellt wurden
- Factory-Methoden wurden von der Klasse
Sessionin eine Companion-Methode für den 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. Sie wurde durchgetSpatialCapabilities().hasCapability()ersetzt, um die Verfügbarkeit von räumlichen Funktionen auf stärker unterteilte Weise 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. Entwicklerdateien müssen die neuen Importe für den Zugriff hinzufügen:import androidx.xr.scenecore.setFullSpaceModeimport androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
Session.setPreferredAspectRatio(Activity, Float)wurde in eine Erweiterungsfunktion verschoben. Entwicklerdateien müssen den neuen Import für den Zugriff hinzufügen:import androidx.xr.scenecore.setPreferredAspectRatio
Session.getEntitiesOfType(Class<out T>)undSession.getEntityForRtEntity(RtEntity)wurden in Erweiterungsfunktionen verschoben. Entwickler müssen die neuen Importe für den Zugriff hinzufügen: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 Steuerfeld das nächste Mal bewegt wird. Dies kann umgangen werden, indem das Steuerfeld an seine aktuelle Position bewegt wird.- Wenn
BoundsChangedfürActivitySpaceaufgerufen wird, wurden einigeActivityPoses möglicherweise nicht richtig aktualisiert. Sie wird beim nächstenOnSpaceUpdated-Anruf amActivitySpaceaktualisiert.
Funktionsgefährdende und Verhaltensänderungen
PanelEntityundActivityPanelEntityhaben einen Standard-Eckenradius von 32 dp oder kleiner, wenn das Steuerfeld eine Breite oder Höhe von weniger als 32 dp hat.
Neue APIs und Funktionen
- Einführung von
StereoSurface.CanvasShape, mit demSpherical- undHemispherical-Canvas-Elemente zum Rendern immersiver Medien erstellt werden können. StereoSurfaceEntity.create()akzeptiert jetzt den ParameterCanvasShape. (Dieser Parameter wird derzeit ignoriert, wird aber in einer zukünftigen Version verwendet.)StereoSurfaceEntity.create()akzeptiert den ParameterDimensionsnicht mehr. Anwendungen sollten die Größe des Canvas über die EinstellungCanvasShapesteuern.StereoSurfaceEntityhat einCanvasShape-Mitglied, das dynamisch festgelegt werden kann.StereoSurfaceEntity.dimensionsist jetzt eine Eigenschaft mit Lesezugriff. Anwendungen solltenCanvasShapefestlegen, um die Dimensionen zu ändern.StereoSurfaceEntityermöglicht jetzt das Zurücksetzen vonStereoModenach der Erstellung.
Sonstige Änderungen
- Die minSDK zur Kompilierzeit wurde auf 24 reduziert. Für alle Jetpack XR APIs ist zur Laufzeit weiterhin API 34 erforderlich.
- Die Session Factory (
Session.create) vonSceneCorestartet 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 Erstellung von Ankern schlägt fehl, wenn der Nutzer die Berechtigung nicht erteilt.
Diverse Fehlerkorrekturen
getActivitySpacePose()wurde korrigiert, um dieActivitySpace-Skalierung zu berücksichtigen. Es werden jetzt Translationswerte in skalierten Metern zurückgegeben, anstatt immer nicht skalierte Meter zurückzugeben.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 gesetzt, wenn eine Null-Skybox-Einstellung mit
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom))übergeben wird. Wenn Sie die Standard-Skybox und -Geometrie des Systems wiederherstellen 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-Szenengrafikbibliothek zum Erstellen und Bearbeiten immersiver Szenen und Umgebungen. Mit dieser Bibliothek können Sie 3D-Modelle und Inhaltsbereiche relativ zueinander und zu Ihren virtuellen oder realen Umgebungen platzieren und anordnen.
- SpatialEnvironment: Erstellen Sie vollständig immersive Erlebnisse mit einem Skybox-Bild und/oder einer 3D-Modellgeometrie als Hintergrund für die XR-Szene Ihrer Umgebung. Oder aktiviere Passthrough, damit deine virtuelle Szene in die reale Umgebung des Nutzers integriert werden kann.
- PanelEntity: Sie können Ihren 3D-Szenen 2D-Inhalte hinzufügen, indem Sie Standard-Android-Layouts und -Aktivitäten in räumliche Bereiche einbetten, die schweben oder an realen Oberflächen verankert werden können.
- GltfModelEntity: 3D-Modelle in Ihrer Szene platzieren, animieren und mit ihnen interagieren. SceneCore unterstützt das glTF-Dateiformat, um die Einbindung in vorhandene Modelle zu vereinfachen.
- SpatialAudio: 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, für das linke und rechte 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, mit dem Sie Ihren XR-Inhalten Funktionen hinzufügen können, z. B. Möglichkeiten für Nutzer, Modelle und Bereiche zu verschieben, ihre Größe anzupassen 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 einbinden.
- Nutzerposition: Zugriff auf den Standort des Nutzers in der virtuellen Szene, um Ihre Inhalte an der Position des Nutzers auszurichten.
- SpatialCapabilities: Erstellen Sie vollständig adaptive Apps, die räumliche Funktionen nutzen, sofern verfügbar, 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 an die Verwendung des Android XR-Geräts durch den Nutzer anzupassen.
Bekannte Probleme
- Derzeit ist für die Verwendung von Jetpack SceneCore ein minSDK von 30 erforderlich. Fügen Sie als Problemumgehung den folgenden Manifesteintrag
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>hinzu, um mit einer minSDK-Version von 23 erstellen und ausführen zu können. - Die Sitzung kann 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 Ungültigkeit von Sitzungen auftreten, können Sie das Hauptfeld nicht mehr in der Größe veränderbar machen, eine dynamische Feldentität verwenden, die Neuerstellung von Aktivitäten für bestimmte Konfigurationsänderungen deaktivieren oder Änderungen am Design für den hellen/dunklen Modus deaktivieren.
- Verschiebbare und in der Größe veränderbare 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 der AndroidManifest-Datei 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 sie nicht wie dokumentiert als einfarbig schwarz angezeigt. Dies kann dazu führen, dass die Standard-Skybox des Systems verwendet wird oder die aktuelle Skybox nicht geändert wird.
- SceneCore-Clients sollten
implementation(“com.google.guava:listenablefuture-1.0”)in ihrer Gradle-Konfiguration für die Abhängigkeiten ihrer App hinzufügen. In einer zukünftigen Version wird scenecore diese Bibliothek alsapi-Abhängigkeit enthalten, 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 ab, wenn Sie eine Sitzung erstellen. Deaktivieren Sie ProGuard, um das Problem zu umgehen. Weitere Informationen zum Aktivieren von ProGuard finden Sie in diesem Leitfaden.