Jetpack SceneCore

Android XR-Szenengraf mit 3D-Inhalten erstellen und bearbeiten
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.

Neues Problem melden

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.updateIndexData und ein dynamischer CustomMesh.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 bestimmte VertexAttribute oder VertexBufferLayout ganz einfach abrufen lässt. (I1a9e3)
  • CustomMesh.bounds wurde zu einer Variablen gemacht, damit der Begrenzungsrahmen zur Laufzeit dynamisch aktualisiert werden kann. (Ib0397)
  • Die glTF-Animations-APIs (GltfAnimation, GltfModelEntity.getAnimations und GltfModelEntity.stopAllAnimations) wurden auf „öffentlich/stabil“ hochgestuft, während der GltfAnimation.loop-Setter als experimentell und GltfAnimationStartOptions und start(options) als experimentell und verworfen beibehalten wurden. (Iacdae)
  • stopAllAnimations() wurde zu GltfModelEntity hinzugefügt, GltfAnimation.start() wurde parameterlos gemacht, die Attribute loop und speed wurden zu GltfAnimation hinzugefügt und GltfAnimationStartOptions, start(options) und seekTo(Duration) wurden verworfen. (I53105)
  • GltfModelEntity-APIs wurden aktualisiert, um IllegalStateException (insbesondere Entity.DisposedException) zu dokumentieren, wenn sie für verworfene Entitäten aufgerufen werden. I65a76f

Fehlerkorrekturen

  • Die Abhängigkeit androidx.lifecycle:lifecycle-runtime wurde 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 AudioOutputProvider wurden verbessert, um hervorzuheben, dass sie nicht mit mehreren ExoPlayer-Instanzen wiederverwendet werden sollten (I6b18e).
  • Unnötige Abhängigkeiten von impress wurden 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 perceptionRuntimeCache in SessionExt entfernt und so refaktoriert wurde, dass PerceptionRuntime direkt aus der Session-Instanz abgerufen wird. (Ie35b1)
  • Ein potenzielles Kontextleck wurde behoben, indem applicationContext für native OpenXR-Handles verwendet wurde, um sicherzustellen, dass die native Laufzeit keine Verweise auf einen Activity-Kontext enthält. (Ie35b1)
  • Race-Bedingungen in XrInstanceManager wurden durch die Einführung einer ordnungsgemäßen Synchronisierung und Initialisierungssperre behoben. (Ie35b1)
  • ReferenceCleaner wurde korrigiert, um die Abmeldung von Bereinigungsaktionen zu unterstützen. Außerdem wurde dafür gesorgt, dass Entity-Bereinigungsaktionen explizit während dispose() ausgeführt werden, um eine doppelte Ausführung bei der automatischen Speicherbereinigung zu verhindern. (Ie35b1)
  • Ein Speicherleck in Scene wurde behoben, indem sceneCache in SessionExt entfernt und Scene refaktoriert wurde, um die Instanz direkt aus sessionConnectors abzurufen. (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() gibt null zurü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 GltfAnimation und SpatialGltfModelAnimation wurden als experimentell gekennzeichnet. Einige Properties wurden in Getter umgewandelt. (I8d689, b/524771027)
  • Die öffentliche Factory-Methode MovableComponent.createTrackingMovable wurde entfernt. (I00912, b/477169015)
  • „Session.create“ wurde in eine Sperrfunktion umgewandelt. (I5d27f)
  • ActivitySpace und AnchorSpace erweitern jetzt eine gemeinsame SpaceEntity-Klasse, die ein gemeinsames Verhalten für Entitäten enthält, deren Positionen vom System gesteuert werden (I506ec, b/513619219).
  • AnchorEntity wurde in AnchorSpace umbenannt (Ifa95e, b/513619219).
  • Stellt die öffentliche Test-API SoundEffectPoolComponentTester bereit. (I87df7, b/498104417)
  • Dem SurfaceEntity.Shape.Quad-Konstruktor wurde ein optionaler cornerRadius-Parameter hinzugefügt und die cornerRadius-Property wurde öffentlich gemacht. Entwickler können jetzt beim Erstellen einer Quad-Form einen Eckenradius angeben, um SurfaceEntity-Canvas mit abgerundeten Ecken zu rendern, und den Radius vorhandener Quads abfragen. (Ia7809, b/474681085)
  • Stellt öffentliche Test-API-Überladungen für SpatialAudioTrackBuilderTester, SpatialAudioTrackTester und SceneCoreTestRule.getTester bereit. (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, setIndexData und addSubset wurden zu CustomMesh.BuilderFromMeshData und CustomMesh.BuilderFromMeshBuffer hinzugefügt. Mit diesen Überladungen können Entwickler Rohdaten und Parameter direkt übergeben (z.B. ByteBuffer, offset, size, topology, indexOffset, indexCount), ohne sie in Zwischenobjekte wie ByteBufferRegion oder MeshSubset verpacken zu müssen. (I84d5c)
  • Scene.requestFullSpaceMode() und Scene.requestHomeSpaceMode() wurden in requestFullSpace() 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 PanelEntityTester und MainPanelEntityTester bereit (I961e4)
  • Attribut pointSourceParams wird zu SoundEffectPoolComponent hinzugefügt (I4a750)
  • Stellt die öffentliche Test-API MovableComponentTester bereit (I0c972)
  • Stellt die öffentliche Test-API PointerCaptureComponentTester bereit (Ic0d4f)
  • Stellt die öffentliche Test-API ActivityPanelEntityTester bereit (I837c4)
  • Stellt die öffentliche Test-API ResizableComponentTester bereit (I0a3a4)
  • Stellt die öffentliche Test-API BoundsComponentTester. bereit (Iefd53)
  • Stellt die öffentliche Test-API SpatialMediaPlayerTester bereit (Ia3e09)
  • Stellt die öffentliche Test-API SpatialEnvironmentTester bereit (Icf60f)
  • Stellt die öffentlichen Test-APIs GltfModelTester und SceneCoreTestRule.getGltfModelTester bereit. (I33fcb)
  • Stellt die öffentliche Test-API InteractableComponentTester bereit. (Ia7096)
  • Stellt die öffentliche Test-API SurfaceEntityTester bereit. (Ic0740)
  • Stellt die öffentlichen Test-APIs GltfModelEntityTester, TestGltfModelNode und TestGltfAnimation bereit. (I72c4d)
  • Stellt die öffentlichen Test-APIs SceneTester und SceneCoreTestRule.sceneTester bereit. (Ib4ec5)
  • Stellt die öffentlichen Test-APIs PerceptionSpaceTester und SceneCoreTestRule.perceptionSpaceTester bereit. (Icf739)
  • Stellt die öffentliche Test-API MeshEntityTester bereit. (I63801)
  • Stellt öffentliche Test-API-Überladungen für ImageBasedLightingAssetTester und SceneCoreTestRule.getTester bereit. (I57ec4)
  • Stellt die öffentliche Test-API TextureTester bereit (Ia865b)
  • Stellt die öffentliche Test-API PositionalAudioComponentTester bereit (Icd96e)
  • Stellt die öffentliche Test-API SpatialSoundPoolTester bereit (Ia3531)
  • Stellt die öffentliche Test-API SoundEffectPoolTester bereit (If349a)
  • Stellt die öffentlichen Test-APIs ActivitySpaceTester und SceneCoreTestRule.activitySpaceTester bereit. (I2d5c2)
  • Stellt die öffentliche Test-API SpatialWindowTester bereit (I41837)
  • Stellt die öffentliche Test-API AnchorEntityTester bereit (I68404)
  • Stellt die öffentliche Test-API-Schnittstelle SceneCoreTestRule bereit. (Ic72d3)
  • Die Klasse PixelDensity wurde hinzugefügt und über Scene#virtualPixelDensity verfügbar gemacht, um ein hardwarebasiertes Pixel-pro-Meter-Verhältnis für eine genaue Zuordnung der physischen Abmessungen in ActivitySpace bereitzustellen. (I0e3ac)
  • Öffentliche APIs zum Erstellen und Rendern von benutzerdefinierten Meshes hinzugefügt. (I7ad2f)
  • Die VertexLayout API wurde aktualisiert und verwendet jetzt eine Liste von VertexBufferLayouts, wobei jede VertexBufferLayout die 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.createTrackingMovable bereit, um ein ARCore-Trackable in eine Pose relativ zum Aktivitätsbereich zu transformieren. (I12249)
  • Der Standardwert für das übergeordnete Element in Entity.create wurde auf „null“ aktualisiert. (Ic3145)
  • Entity wurde aktualisiert und ist jetzt eine Klasse statt einer Schnittstelle. Sie ist nun die Basisklasse für alle Entitätstypen. Im Rahmen dieser Änderung wurde BaseEntity entfernt. (I7fbc9)
  • GltfModel, ExrImage und ImageBasedLightingAsset implementieren jetzt AutoCloseable, um eine idiomatische Ressourcenverwaltung mit dem use-Block von Kotlin zu ermöglichen. (I1ac79)
  • Die Klasse ImageBasedLightingAsset wurde eingeführt, um ExrImage zum Definieren der räumlichen Umgebungsbeleuchtung zu ersetzen. ExrImage wurde eingestellt und aus der öffentlichen API entfernt. SpatialEnvironmentPreference wurde aktualisiert und verwendet jetzt ImageBasedLightingAsset. (I6c92a)
  • Der Parameter skybox in SpatialEnvironment wurde in imageBasedLightingAsset umbenannt, 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. Anstatt dispose() für Entity-Instanzen aufzurufen, können Apps Instanzen bereinigbar machen, indem sie parent auf null setzen und alle starken Verweise auf diese Instanzen löschen. (I396c9)
  • Die set/clearOnLoadCompleteListener-Methoden von SoundEffectPool wurden gelöscht. Verwenden Sie stattdessen add/removeLoadCompleteListener. (Iae78d)
  • set/clearSpatialVisibilityChangedListener der Szene wurde durch add/removeSpatialVisibilityChangedListener ersetzt. (I67dff)
  • Alle SceneCore-add/removeOnFooListener-Methoden wurden in add/removeFooListener umbenannt, wobei On aus dem Namen entfernt wurde. (Ibe50b)
  • Die Methoden AnchorEntity.setOnOriginChangedListener und AnchorEntity.setOnStateChangedListener wurden durch add/removeFooListener-Methoden ersetzt, um mehrere gleichzeitige Listener zu unterstützen. (I13749)
  • AnchorEntity.State.TIMEDOUT wurde in State.TIMED_OUT umbenannt. (Id2b8d)
  • Die Component API wurde für mehr Sicherheit und Erweiterbarkeit refaktoriert. Component ist jetzt eine abstrakte Klasse. Die Methoden onAttach() und onDetach() sind jetzt protected, um direkte Aufrufe zu verhindern. Verwenden Sie Entity.addComponent() und Entity.removeComponent(), um den Lebenszyklus von Komponenten zu verwalten. (Id04e8)
  • Die PlaneSemanticType-PlaneOrientation-Konstanten von SceneCore wurden von Ints zu benutzerdefinierten Typen migriert. Die ANY-Konstanten werden entfernt. Clients sollten stattdessen alle gewünschten Konstanten explizit aufzählen oder die neuen unveränderlichen .ALL-Set-Konstanten verwenden. Die Factory-Methode AnchorEntity akzeptiert 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 MeshEntity einen boneCount angeben und die Animation in Echtzeit mit MeshEntity.setBoneTransforms() aktualisieren. (Id8ba2, b/496692490)
  • Die experimentelle CustomMesh API wurde eingeführt. Entwickler können jetzt mit CustomMesh, MeshBuffer und MeshEntity programmatisch 3D-Geometrie in ihren Szenen erstellen und rendern. (I94617)
  • androidx.xr.scenecore.SpatializerConstants.SourceType.SOURCE_TYPE_SOUND_FIELD wurde entfernt. Verwenden Sie stattdessen SourceType.SOUND_FIELD. (Ia68b9)
  • Spatial Audio-Komponenten werden hinzugefügt: PositionalAudioComponent, SoundEffectPoolComponent und SoundFieldAudioComponent (Ieda89)
  • AnchorEntity.getAnchor wurde durch AnchorEntity.anchor ersetzt und gibt jetzt ein Anchor zurück, wenn die AnchorEntity aus einem ARCore-Anchor erstellt wurde (I5c7c8).
  • Der Standardwert für den Parameter parent in den Factory-Methoden ActivityPanelEntity, GltfModelEntity, GroupEntity, PanelEntity und SurfaceEntity wurde von ActivitySpace in null geä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 über Entity.parent = ... festlegen (Ie7cc1).

Fehlerkorrekturen

  • SceneCore fordert jetzt automatisch Entity-Instanzen zurück, wenn sie als Phantom erreichbar werden. Entwickler müssen dispose() 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 parent auf null setzen.
    • 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)
  • Eingeschränkte Proguard-Keep-Regeln für alle SceneCore-Bibliotheken. (I98447)

Bekannte Probleme

  • Wenn Sie eine PositionalAudioComponent an eine Entity mit einer inaktiven ExoPlayer-Instanz anhängen, führt dies zu einem Absturz. Rufe setPointSourceParams nicht 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

  • TrackingState und VpsAvailabilityResult wurden in androidx.xr.arcore package verschoben und die Typen in androidx.xr.runtime wurden verworfen. (Ic7930, b/480462213)
  • Plane.Type wurde in PlaneType umbenannt. (I8c90c, b/482675376)
  • Plane.Label wurde in PlaneLabel umbenannt. (Ic6b67, b/482675376)
  • androidx.xr.runtime.FieldOfView wurde verworfen. Verwenden Sie stattdessen androidx.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)
  • HandJointType Enum-Werte wurden umbenannt. (Ifbc83, b/482670596)
  • Component.onAttach und onDetach als öffentliche API verfügbar machen, um benutzerdefinierte Component-Implementierungen zu ermöglichen. (I0ca1f)
  • Hinzufügen von Spatial Audio-Komponenten (I39ddd, b/489421980, b/436642086, b/436642499)
  • Entität aus PointSourceParams entfernen. Stattdessen wird die Entität direkt mit SpatialAudioTrack, SpatialSoundPool und SpatialMediaPlayer verwendet (Ib3685, b/489421980, b/436634048).
  • DeviceTrackingMode.LAST_KNOWN wurde in SPATIAL_LAST_KNOWN umbenannt (mit einem verworfenen Fallback), INERTIAL_LAST_KNOWN wurde für das 3DoF-Tracking hinzugefügt und TRACKING_DEGRADED wurde zu TrackingState hinzugefügt. (Ie661c, b/445466590)
  • GroupEntity wurde eingestellt. Wenn Sie eine Entität mit nur der grundlegenden Entitätsfunktion haben möchten, rufen Sie Entity.create auf. Dadurch wird eine Entitätsschnittstelle zurückgegeben. (I4c450, b/473867483)
  • XrLog API hinzugefügt. Setzen Sie XrLog.isEnabled auf true, um das Logging in JetpackXR zu aktivieren, und verwenden Sie XrLog.Level, um die Logebene festzulegen. (I76a1f, b/463460895, b/487378441)

Fehlerkorrekturen

  • Scene.keyEntity ist jetzt standardmäßig auf mainPanelEntity festgelegt. (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 unscaledGravityAlignedActivitySpace wurde aus Session.create entfernt. ActivitySpace ist jetzt immer unskaliert und an der Schwerkraft ausgerichtet. (If6f11, b/458173423)
  • Die verworfenen Funktionen setMaterialOverride und clearMaterialOverride wurden aus GltfModelEntity entfernt. Sie werden jetzt für die einzelnen GltfModelNode aufgerufen. (I2e5d2)
  • transformPixelCoordinatesToLocalPosition und transformNormalizedCoordinatesToLocalPosition wurden zu PanelEntity hinzugefügt und entsprechende experimentelle Methoden entfernt, die früher Posen anstelle von Vector3-Positionen zurückgegeben haben. (Ib6960, b/460123106, b/458333591)
  • GltfAnimation-APIs zum Steuern von glTF-Animationen in SceneCore hinzugefügt. (I2c172, b/466065486, b/465819070, b/465818617)
  • ScenePose.activitySpacePose wurde in ScenePose.poseInActivitySpace umbenannt (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 ActivitySpace neu 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 MovableComponent möglicherweise nicht für SurfaceEntity und andere Entitätstypen angezeigt, die keine Panels sind. Wenn Sie MovableComponent.size explizit 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 in androidx.xr.scenecore:scenecore-*:1.0.0-alpha13 und nachfolgenden Releases behoben. Betroffene Apps sollten auf die neuesten Versionen aktualisiert werden.

API-Änderungen

  • ActivitySpace.addOnSpaceUpdatedListener und ActivitySpace.removeOnSpaceUpdatedListener wurden in addOnOriginChangedListener und removeOnOriginChangedListener umbenannt. AnchorEntity.setOnSpaceUpdatedListener wurde in setOnOriginChangedListener umbenannt. (I5d8fb)
  • Die Property „Öffentlicher Name“ wurde zu FakeEntity hinzugefügt und die Ansicht wurde am FakePanelEntity verö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.InvalidCameraView wird in PerceivedResolutionResult.InvalidRenderViewpoint umbenannt, da die getPerceivedResolution-APIs jetzt die RenderViewpoint API von ARCore anstelle von CameraViewScenePose verwenden. Dieser Name spiegelt die neue Implementierung besser wider. (I8c967, b/446989745, b/419311998)
  • Die Methoden PanelEntity/SurfaceEntity.getPerceivedResolution verwenden jetzt ein vom Entwickler bereitgestelltes RenderViewpoint als Argument. Zuvor hat die Laufzeit die RenderViewpoint, die bei der Berechnung der wahrgenommenen Auflösung verwendet wurde, willkürlich ausgewählt. (I8c967, b/446989745, b/419311998)
  • SpatialUser, ScenePose.Head und ScenePose.CameraView wurden entfernt. Die Funktionen dieser APIs werden von den APIs ArDevice und RenderViewpoint in ARCore für Jetpack XR abgedeckt. Um eine ScenePose zu erhalten, die dem Kopf oder dem linken oder rechten Auge des Nutzers entspricht, können Entwickler PerceptionSpace.getScenePoseFromPerceptionPose mit 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

  • transformPixelCoordinatesToPose und transformNormalizedCoordinatesToPose wurden zu PanelEntity hinzugefügt (I462b3)
  • Der SceneCore-Laufzeit wurde die Hilfsklasse „Utils“ hinzugefügt, die auf der Logik in SceneCore basiert (I570b9).

Fehlerkorrekturen

  • Ein potenzieller Absturz, der auftreten kann, wenn die Sitzung beendet und ein SpatialModeChangeEvent empfangen wird, wurde behoben (If44e8).
  • Ein Fehler wurde behoben, der dazu führen konnte, dass beim Verlassen oder erneuten Aufrufen einer Aktivität eine IllegalStateException ausgelö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 ScenePose hinzu, die die Zusammensetzung der Ursprungspose des Wahrnehmungsbereichs und einer Pose in Bezug auf den Ursprung des Wahrnehmungsbereichs darstellt. (I5b50a)
  • Funktion getGravityAlignedPose hinzugefügt. Bei der an der Schwerkraft ausgerichteten Pose werden die Neigung und das Rollen der Drehung ignoriert. (I5ae21)
  • AnchorEntity.State Konstantentypen wurden von Ganzzahlen in Statusuntertypen geändert. (Ib0c49)
  • getChildren() wurde zur Entitätsschnittstelle hinzugefügt. Lebenszyklus von MainPanelEntity aktualisiert. (Ia69d6)

API-Änderungen

  • PointerCaptureComponent.PointerCaptureState Konstantentypen wurden von Ints in PointerCaptureState-Untertypen geändert. (Ic888a)
  • Scene.spatialCapabilities ist jetzt vom Typ Set<SpatialCapability> und kein Int-Feld mehr. Die SpatialCapability-Konstanten wurden umbenannt. (I9c109)
  • SurfaceEntity-Konstantentypen wurden umbenannt und von Ints in SurfaceEntity-Untertypen geändert. (I419ed)
  • SpatializerConstant-Konstantentypen wurden umbenannt und von Ints in SpatializerConstant-Untertypen geändert. (Ia0e18)
  • TextureSampler-Konstantentypen wurden umbenannt und von Ints in TextureSampler-Untertypen geändert. (I44078)
  • SpatialVisibility Konstantentypen wurden von Ints in SpatialVisibility-Untertypen geändert. (I70739)
  • ResizeEvent.ResizeState Konstantentypen wurden umbenannt und von Ints in ResizeState-Untertypen geändert. (I384d5)
  • InputEvent Konstantentypen wurden umbenannt und von Ganzzahlen in Typen geändert, die von ihrem jeweiligen umschließenden Typ erben. (I82817)
  • GltfModelEntity.AnimationState Konstantentypen wurden von Ints in AnimationState-Untertypen geändert. (I24f4e)
  • AlphaMode-Konstantentypen wurden umbenannt und von Ints in AlphaMode-Untertypen geändert. (I27b56)
  • Space Konstantentypen wurden von Ganzzahlen in Untertypen von „Space“ geändert. (I9255b)
  • ScenePose.hitTest und zugehörige Methoden geben jetzt null zurück, wenn keine Schnittmenge gefunden wurde, anstatt eines HitTestResult mit einem Null-hitPosition. HitTestResult.hitPosition kann nicht mehr null sein. (I1400a)
  • Verweise auf ActivityPose wurden in ScenePose geä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.moveActivity wurde in transferActivity umbenannt (I273c5, b/430332856)

Fehlerkorrekturen

  • :xr:scenecore:scenecore-spatial-rendering und :xr:scenecore:scenecore-spatial-core wurden als Implementierungsabhängigkeit von :xr:scenecore:scenecore hinzugefügt (I6ab65, b/447000520)
  • Eine Ausnahme wird ausgelöst, wenn nach dem Beenden der Sitzung auf session.scene zugegriffen 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

  • fixedAspectRatio wurde in isFixedAspectRatioEnabled umbenannt und in eine boolesche Property geändert (I5c4e8, b/440588971)
  • Scenecore-Fakes befinden sich jetzt im Modul xr:scenecore:scenecore-testing. (Idd951)
  • shouldAutoHideContent wurde in isAutoHideContentWhileResizingEnabled und shouldAlwaysShowOverlay in isAlwaysShowOverlayEnabled umbenannt (I97c36, b/432335421)
  • Die TextureSampler-Konstanten von SceneCore wurden zur besseren Lesbarkeit aktualisiert, z. B. ist TextureSampler.MinFilter.LINEAR jetzt TextureSampler.MIN_FILTER_LINEAR (Ib159c).
  • Der Setter setKeyEntity der Szene wurde mit der Variable keyEntity zusammengeführt. Wenn Sie keyEntity auf eine nicht verschiebbare Entität wie AnchorEntity festlegen, wird ein IllegalArgumentException ausgegeben, anstatt den booleschen Wert „false“ zurückzugeben. (I62080, b/428721695, b/422215745)
  • Die Variable SpatialModeChangeListener der Szene wurde durch setSpatialModeChangedListener ersetzt. Sie akzeptiert ein Consumer<SpatialModeChangeEvent> anstelle eines SpatialModeChangedListener. setSpatialModeChangedListener kann jetzt optional einen Executor verwenden. (I62080, b/428721695, b/422215745)
  • Der Parameter bundle wurde aus ActivityPanelEntity.startActivity entfernt (I64344, b/430332856, b/430333040).
  • SpatializerConstants.SOURCE_TYPE_BYPASS wurde in SpatializerConstants.SOURCE_TYPE_DEFAULT umbenannt. (Ifc7fe, b/422215565)
  • Konstante SpatialSoundPool.PLAY_FAILED hinzugefügt. (Ifc7fe, b/422215565)
  • Den SpatialSoundPool.play-Methoden wurden Standardargumente hinzugefügt. (Ifc7fe, b/422215565)
  • Rückgabewert von Settern in SpatialAudioTrackBuilder entfernt (Ifc7fe, b/422215565)
  • SurfaceEntity-Änderungen
    • SurfaceEntity.CanvasShape hat Shape umbenannt
    • SurfaceEntity.CanvasShape.Vr180Hemisphere hat Hemisphere umbenannt
    • SurfaceEntity.CanvasShape.Vr360Sphere hat Sphere umbenannt
    • SurfaceEntity.EdgeFeatheringParams.SmoothFeather hat RectangleFeather umbenannt
    • SurfaceEntity.EdgeFeathingParams.SolidEdge hat NoFeathering umbenannt
    • SurfaceEntity.ContentSecurityLevel hat SurfaceProtection umbenannt
    • SurfaceEntity.ContentSecurityLevel.{values} hat das Präfix SURFACE_PROTECTION_ hinzugefügt.
    • SurfaceEntity.SuperSampling.{$values} hat ein SUPER_SAMPLING_-Präfix hinzugefügt
    • SurfaceEntity.StereoMode.{values} hat ein STEREO_MODE_-Präfix hinzugefügt
    • SurfaceEntity.ContentColorMetadata.maxCLL wurde in maxContentLightLevel umbenannt (I7eb5f, b/422216050, b/427529950)
  • launchActivity wurde in startActivity umbenannt (I7db90, b/430332856)
  • Scene.activitySpaceRoot wurde entfernt. Verwenden Sie stattdessen Scene.activitySpace. (I05ee8, b/378706624, b/422215745)
  • configureBundleForFullSpaceModeLaunch und configureBundleForFullSpaceModeLaunchWithEnvironmentInherited wurden in createBundleForFullSpaceModeLaunch bzw. createBundleForFullSpaceModeLaunchWithEnvironmentInherited umbenannt, 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 Typ GroupEntity anstelle von „Entity“ zurück. (I66042)

Fehlerkorrekturen

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- und BaseScenePose-APIs von SceneCore 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 Perceived Resolution API wurde zu Panel-Entitäten und SurfaceEntities hinzugefügt. (I118f6)
  • PerceivedResolution Callback-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 recommendedContentBoxInFullSpace wurde zu ActivitySpace hinzugefü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.PixelDimensions zu androidx.xr.runtime.math.IntSize2d; androidx.xr.scenecore.Dimensions zu androidx.xr.runtime.math.FloatSize3d; androidx.xr.scenecore.ActivityPose zu ScenePose, androidx.xr.scenecore.ContentlessEntity zu GroupEntity, androidx.xr.scenecore.PlaneType zu PlaneOrientation; androidx.xr.scenecore.PlaneSemantic zu PlaneSemanticType. (Ifd405)(I3b622) (If534d)
  • Eine Reihe von Settern für die Attribute von Scene wurden als privat festgelegt. Sie waren nicht für die Änderung durch SceneCore-Clients vorgesehen: activitySpace, activitySpaceRoot, mainPanelEntity, perceptionSpace, spatialCapabilities, spatialEnvironment und spatialUser. (I2f506)
  • In „Entity“: Die folgenden Properties wurden geändert: get/setParent(), setContentDescription; Entity.is/setHidden() wurde verworfen, verwende stattdessen Entity.is/setEnabled. (Ibc4c6)
  • Die Klasse androidx.xr.scenecore.BasePanelEntity wurde entfernt. Verwenden Sie stattdessen direkt PanelEntity. Getter und Setter für PanelEntity wurden durch Properties ersetzt. Attribut PanelEntity.size wurde von Float3dSize in Float2dSize geändert. Die verworfene Methode androidx.xr.scenecore.PanelEntity.getPixelDimensions wurde entfernt. Verwenden Sie stattdessen getSizeInPixels. (Icc174)
  • androidx.xr.scenecore.OnSpaceUpdatedListener wurde durch Runnable ersetzt. (I19308)
  • SpatialUser.getCameraViews() wurde durch eine Property ersetzt. (Ib0cc5) Für ExrImage und GltfModel: wurden die create-Methoden in Sperrfunktionen geändert. Die Erstellungsparameter wurden so geändert, dass sie anstelle von String einen Uri oder Path akzeptieren. (Id8883) (I0d247), (I25706)
  • SpatialEnvironment.requestFullSpaceMode und SpatialEnvironment.requestHomeSpaceMode wurden zu „Scene“ verschoben. Verwenden Sie beispielsweise session.scene.requestFullSpaceMode() anstelle von session.scene.spatialEnvironment.requestFullSpaceMode(). addOnPassthroughOpacityChangedListener und addOnSpatialEnvironmentChangedListener haben jetzt Überschreibungen, die optionale Executors akzeptieren. (I12fe0) (I6b21e)
  • Die folgenden verworfenen SpatialEnvironment-Methoden wurden entfernt: togglePassthrough, setPassthrough, setPassthroughOpacity, getPassthroughMode, getPassthroughOpacity, setSkybox und setGeometry. Außerdem wurde die verworfene Klasse SpatialEnvironment.PassthroughMode entfernt (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.preferredPassthroughOpacity wurde von Float? in Float geändert. Nullwerte werden nicht mehr akzeptiert. Stattdessen wird SpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCE verwendet, um anzugeben, dass keine Deckkraftpräferenz vorliegt. (I40107)
  • Der Parameter windowBoundsPx wurde in der Erstellungsmethode in pixelDimensions und sein Typ von Rect in IntSize2d geändert. (I1926e)
  • Der SpatialEnvironment-Konstruktor ist jetzt intern (I75a51)
  • Die Klassen SpatialPointerIconNone und SpatialPointerIconCircle wurden durch die Companion-Objekte SpatialPointerIcon.NONE und SpatialPointerIcon.CIRCLE ersetzt (I416d2).
  • SpatialPointerIcon in SpatialPointerComponent kann nicht mehr null sein. Verwenden Sie SpatialPointerIcon.DEFAULT anstelle 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 Methode AnchorEntity.create() wurden zur besseren Verständlichkeit umbenannt. In den Methoden von AnchorEntity zum Festlegen und Hinzufügen von Listenern wurde der Listener in das letzte Argument verschoben, um nachgestellte Lambdas zu aktivieren. androidx.xr.scenecore.OnStateChangedListener für AnchorEntity wurde durch Consumer<AnchorEntity.State> ersetzt. (I472e0)
  • GltfModelEntity.getAnimationState() ist jetzt eine Property. (I10b29)
  • ActivitySpace.getBounds() wurde durch eine Property ersetzt. ActivitySpace.addBoundsChangedListener wurde in ActivitySpace.addOnBoundsChangedListener umbenannt. ActivitySpace.setOnSpaceUpdatedListener wurde durch Methoden zum Hinzufügen/Entfernen ersetzt. (I4c956)
  • „Für AnchorPlacement: planeTypeFilter“ wurde in „anchorablePlaneOrientations“ umbenannt, „planeSemanticFilter“ wurde in „anchorablePlaneSemanticTypes“ umbenannt. Das Hinzufügen eines MovableComponent zu einem AnchorEntity oder ActivitySpace gibt „false“ zurück, MoveListener wurde in EntityMoveListener shouldDisposeParentAnchor umbenannt, disposeParentOnReAnchor systemMovable wurde aus der Funktion create zugunsten von creeateCustomMovable, createSystemMovable und createAnchorable entfernt (If11c4)
  • SurfaceEntity.featherRadiusX/Y wurde entfernt und ein EdgeFeatheringParams-Klassenkonzept hinzugefügt. (Ic78fc)
  • Die Methode PanelEntity.enablePanelDepthTest() wurde durch das Attribut panelClippingConfig ersetzt. Legen Sie Scene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true) fest, um die Tiefenprüfung zu aktivieren, oder PanelClippingConfig(isDepthTestEnabled = false), um sie zu deaktivieren. (I0cbe0)
  • Scene.mainPanelEntity ist jetzt vom Typ MainPanelEntity statt PanelEntity (I7125a)
  • Die Methode setFullSpaceMode von Scene wurde in configureBundleForFullSpaceModeLaunch und die Methode setFullSpaceModeWithEnvironmentInherited in configureBundleForFullSpaceModeLaunchWithEnvironmentInherited umbenannt. (I0cbe0) (I0cbe0)
  • Die Werte UNKNOWN, OUTSIDE_FOV, PARTIALLY_WITHIN_FOV und WITHIN_FOV von SpatialVisibility wurden 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 SpatialVisibility wurde durch ein öffentliches Objekt mit konstanten Int-Werten ersetzt. setSpatialVisibilityChangedListener akzeptiert jetzt Consumer<Int> anstelle von Consumer<SpatialVisibility> (Ie7e8c)
  • PointerCaptureComponent-Konstanten wurden umbenannt und in das PointerCaptureComponent.PointerCaptureState-Objekt verschoben (I9c7ac)
  • PointerCaptureComponents' StateListener wurde durch Consumer<Int> ersetzt. (I9c7ac)
  • InputEventListener wurde durch Consumer<InputEvent> ersetzt (I9c7ac)
  • setPreferredAspectRatio wurde von der Scene-Klasse in das SpatialWindow-Objekt verschoben und verwendet Session als ersten Parameter. (I7b717)
  • Entity.setHidden() wurde durch Entity.setEnabled() und Entity.isHidden() durch Entity.isEnabled() ersetzt. setHidden(false) entspricht setEnabled(true) und isHidden() == !isEnabled(). (Icf0de)
  • Der Typ von Entity.contentDescription wurde von String in CharSequence geändert. (Ie59be)
  • Session.create und Session.configure geben jetzt SecurityException aus, wenn nicht genügend Berechtigungen gewährt wurden, anstatt SessionCreatePermissionsNotGranted oder SessionConfigurePermissionsNotGranted zurückzugeben. (I7c488)
  • ResizableComponent.create erfordert jetzt ein Consumer<ResizeEvent> ResizeEventListener wurde durch Consumer<ResizeEvent> ResizableComponent.size ersetzt wurde in ResizableComponent.affordanceSize ResizableComponent.minimumSize umbenannt wurde in ResizableComponent.minimumEntitySize ResizableComponent.maximumSize umbenannt wurde in ResizableComponent.maximumEntitySize umbenannt, ResizableComponent.autoHideContent wurde in ResizableComponent.shouldAutoHideContent umbenannt ResizableComponent.forceShowResizeOverlay wurde in ResizableComponent.shouldAlwaysShowOverlay umbenannt (I97a2d)
  • minSDK wurde für androidx.xr.scenecore und androidx.xr.compose auf 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 Bibliothek xr:scenecore:scenecore-guava 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 ListenableFuture zurückgeben, wurden durch Kotlin-Suspend-Funktionen ersetzt. Java-Entwickler, die ListenableFuture-basierte asynchrone Methoden anstelle von Kotlin-Suspend-Funktionen verwenden möchten, müssen jetzt Erweiterungsfunktionen in :xr:scenecore-scenecore-guava verwenden. Beispiel: GuavaExrImage enthält die Guava-äquivalenten asynchronen Funktionen von ExrImage, GuavaScenePose enthält die Guava-äquivalenten asynchronen Funktionen von ScenePose, GuavaGltfModel enthält die asynchronen Funktionen von Guava-equivalent GltfModel usw. (If7283) (I0af60) (If7283) (Ia8515) (I4efdf) (I54bbf) (I3467a) (I82a33)

Fehlerkorrekturen

  • Die Jetpack XR Scenecore-Regel ProGuard wurde aktualisiert, um AbstractMethodError fü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 InteractableComponent zu einem Absturz führen konnte, wenn die hitPosition in der HitInfo des InputEvent abstürzte, wenn die vom System zurückgegebene hitPosition null war (I7a695).
  • Die Werte für den Konfigurationsmodus wurden umbenannt, um ihr Verhalten widerzuspiegeln. (I6d247)
  • Probleme mit dem Sichtfeld und HitTest in der SceneCore-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_BOTTOM wurde 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.
  • StereoSurfaceEntity unterstützt jetzt die MV-HEVC-Wiedergabe über zwei neue StereoMode-Werte: MULTIVIEW_LEFT_PRIMARY und MULTIVIEW_RIGHT_PRIMARY.
  • PanelEntity.setSize und PanelEntity.getSize geben jetzt Größen im übergeordneten Bereich zurück.
  • Entity.setPose, Entity.getPose, Entity.setScale, Entity.getScale, Entity.setAlpha und Entity.getAlpha verwenden jetzt den neuen Parameter relativeTo, 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.kt wurden 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.
  • setPointSourceParams wurde zu SpatialAudioTrack hinzugefü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 in SessionExt wurden in Scene verschoben, sodass Importe angepasst werden müssen, z. B. SessionExt.getScene(session).addSpatialCapababilitiesChangedListener gegen SessionExt.addSpatialCapabilitiesChangedListener.
  • ActivityPose.hitTestAsync wurde hinzugefügt, um einen hitTest für virtuelle Inhalte zu ermöglichen.
  • Der neue Komponententyp SpatialPointerComponent wurde hinzugefügt. Damit können Clients das für den Zeiger gerenderte Symbol angeben oder das Symbol deaktivieren. Diese Komponente kann derzeit nur an PanelEntity-Instanzen angehängt werden.
  • Neue PanelEntity-Factory, die Panel-Abmessungen entweder in Metern oder Pixeln akzeptiert. Die ältere PanelEntity-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.getPixelDensity wurde verworfen.
  • PanelEntity.setPixelDimensions und PanelEntity.getPixelDimension wurden entfernt und durch setSizeInPixels und getSizeInPixels ersetzt.
  • Entity.getActivitySpaceAlpha entfernt. Kann durch Entity.getAlpha(Space.Activity) ersetzt werden.
  • Entity.getWorldSpaceScale entfernt. Kann durch Entity.getScale(Space.REAL\_WORLD) ersetzt werden.
  • Die Session-Klasse in SceneCore wurde zugunsten der Session-Klasse in der XR-Laufzeit gelöscht.
  • „StereoSurfaceEntity“ wurde in „SurfaceEntity“ umbenannt.
  • Entity.setSize und Entity.getSize wurden entfernt und die entsprechenden Methoden wurden zu PanelEntity hinzugefü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.create muss jetzt PlaneTrackingMode in Session.configure() konfiguriert werden.
  • Für SpatialUser-APIs muss jetzt HeadTrackingMode in Session.configure() konfiguriert werden.
  • Wenn ResizableComponent nicht 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.kt auf, um jeden konkreten Entitätstyp in einer eigenen Datei zu platzieren.
  • Wenn Sie ein neues PanelEntity erstellen, werden die meisten Ansichten einem FrameLayout übergeordnet. Dies erleichtert die Verwendung von LayoutInspector mit 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 PanelEntity mit MovableComponent und AnchorPlacement verschoben wurde.
  • Ein Problem wurde behoben, bei dem ResizableComponent im onResizeStart-Callback veraltete Größen bereitgestellt hat.
  • Ein Absturz wurde behoben, der auftrat, wenn dispose() von JxrPlatformAdapterAxr 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

  • 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 ProGuard wurde aktualisiert, um AbstractMethodError fü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 Session in eine Companion-Methode für den jeweiligen Typ verschoben:
    • Session.createActivityPanelEntity(Dimensions, String, Activity, Pose) wurde gelöscht und durch ActivityPanelEntity.create(Session, Dimensions, String, Pose) ersetzt
    • Session.createAnchorEntity(Anchor) wurde gelöscht und durch AnchorEntity.create(Session, Anchor) ersetzt
    • Session.createAnchorEntity(Dimensions, Int, Int, Duration) wurde gelöscht und durch AnchorEntity.create(Session, Dimensions, Int, Int, Duration) ersetzt
    • Session.createEntity(String, Pose) wurde gelöscht und durch ContentlessEntity.create(Session, String, Pose) ersetzt
    • Session.createExrImageResource(String) wurde gelöscht und durch ExrImage.create(Session, String) ersetzt
    • Session.createGltfEntity(GltfModel, Pose) wurde gelöscht und durch GltfModelEntity.create(Session, GltfModel, Pose) ersetzt
    • Session.createGltfModelResource(String) wurde gelöscht und durch GltfModel.create(Session, String) ersetzt
    • Session.createInteractableComponent(Executor, InputEventListener) wurde gelöscht und durch InteractableComponent.create(Session, Executor, InputEventListener) ersetzt
    • Session.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean) wurde gelöscht und durch MovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean) ersetzt
    • Session.createPanelEntity(View, Dimensions, Dimensions, String, Pose) wurde gelöscht und durch PanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose) ersetzt
    • Session.createResizableComponent(Dimensions, Dimensions) wurde gelöscht und durch ResizableComponent.create(Session, Dimensions, Dimensions) ersetzt
    • Session.createStereoSurfaceEntity(Int, Dimensions, Pose) wurde gelöscht und durch StereoSurface.create(Session, Int, Dimensions, Pose) ersetzt
  • Die folgenden veralteten Methoden wurden entfernt:
    • Session.canEmbedActivityPanel(Activity) wurde gelöscht. Verwenden Sie stattdessen getSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY).
    • Session.hasSpatialCapability(Int) wurde gelöscht. Sie wurde durch getSpatialCapabilities().hasCapability() ersetzt, um die Verfügbarkeit von räumlichen Funktionen auf stärker unterteilte Weise zu prüfen, da getSpatialCapabilities() ein SpatialCapabilities-Objekt zurückgibt.
    • Session.requestFullSpaceMode() wurde gelöscht und durch SpatialEnvironment.requestFullSpaceMode() ersetzt
    • Session.requestHomeSpaceMode() wurde gelöscht und durch SpatialEnvironment.requestHomeSpaceMode() ersetzt
  • Session.setFullSpaceMode(Bundle) und Session.setFullSpaceModeWithEnvironmentInherited(Bundle) wurden in Erweiterungsfunktionen verschoben. Entwicklerdateien müssen die neuen Importe für den Zugriff hinzufügen:
    • import androidx.xr.scenecore.setFullSpaceMode
    • import 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>) und Session.getEntityForRtEntity(RtEntity) wurden in Erweiterungsfunktionen verschoben. Entwickler müssen die neuen Importe für den Zugriff hinzufügen:
    • import androidx.xr.scenecore.getEntitiesOfType
    • import androidx.xr.scenecore.getEntityForRtEntity
  • „Session.unpersistAnchor(Anchor)“ wurde gelöscht
  • „Session.createPersistedAnchorEntity(UUID)“ wurde gelöscht

Bekannte Probleme

  • PanelEntity.setCornerRadius() und ActivityPanelEntity.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 BoundsChanged für ActivitySpace aufgerufen wird, wurden einige ActivityPoses möglicherweise nicht richtig aktualisiert. Sie wird beim nächsten OnSpaceUpdated-Anruf am ActivitySpace aktualisiert.

Funktionsgefährdende und Verhaltensänderungen

  • PanelEntity und ActivityPanelEntity haben 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 dem Spherical- und Hemispherical-Canvas-Elemente zum Rendern immersiver Medien erstellt werden können.
  • StereoSurfaceEntity.create() akzeptiert jetzt den Parameter CanvasShape. (Dieser Parameter wird derzeit ignoriert, wird aber in einer zukünftigen Version verwendet.)
  • StereoSurfaceEntity.create() akzeptiert den Parameter Dimensions nicht mehr. Anwendungen sollten die Größe des Canvas über die Einstellung CanvasShape steuern.
  • StereoSurfaceEntity hat ein CanvasShape-Mitglied, das dynamisch festgelegt werden kann.
  • StereoSurfaceEntity.dimensions ist jetzt eine Eigenschaft mit Lesezugriff. Anwendungen sollten CanvasShape festlegen, um die Dimensionen zu ändern.
  • StereoSurfaceEntity ermöglicht jetzt das Zurücksetzen von StereoMode nach 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) von SceneCore startet keinen Intent mehr, um die Berechtigung SCENE_UNDERSTANDING zu 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 die ActivitySpace-Skalierung zu berücksichtigen. Es werden jetzt Translationswerte in skalierten Metern zurückgegeben, anstatt immer nicht skalierte Meter zurückzugeben. transformPoseTo verwendet jetzt auch die richtigen Einheiten, um Koordinatenänderungen zu berechnen, wenn ActivitySpace in 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 Sie setSpatialEnvironmentPreference(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_UNDERSTANDING in 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 als api-Abhängigkeit enthalten, sodass Clients sie nicht explizit deklarieren müssen.
  • SceneCore enthält fälschlicherweise com.google.guava:guava-31.1-android und com.google.protobuf:protobuf-javalite als 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.