Jetpack SceneCore

Sie können den Android XR-Szenengraphen mit 3D-Inhalten erstellen und bearbeiten.
Letzte Aktualisierung Stabile Release Releasekandidat Beta-Release Alpha-Release
17. Juni 2026 - - - 1.0.0-alpha16

Abhängigkeiten deklarieren

Wenn Sie eine Abhängigkeit von XR SceneCore hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.

Fügen Sie die Abhängigkeiten für die benötigten Artefakte der Datei build.gradle für Ihre App oder Ihr Modul hinzu:

Cool

dependencies {
    implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha16"

    // Use to write unit tests
    testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha16"
}

Kotlin

dependencies {
    implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha16")

    // Use to write unit tests
    testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha16")
}

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.0

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 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 einbetten 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 ebenfalls entsprechend aktualisiert. (I45751)
  • Stellt die öffentlichen Test-APIs PanelEntityTester und MainPanelEntityTester bereit (I961e4)
  • Die Property pointSourceParams wird SoundEffectPoolComponent hinzugefügt. (I4a750)
  • Stellt die öffentliche Test-API MovableComponentTester (I0c972) bereit.
  • Stellt die öffentliche Test-API PointerCaptureComponentTester (Ic0d4f) bereit.
  • Stellt die öffentliche Test-API ActivityPanelEntityTester (I837c4) bereit.
  • Stellt die öffentliche Test-API ResizableComponentTester (I0a3a4) bereit.
  • Stellt die öffentliche Test-API BoundsComponentTester. (Iefd53) bereit.
  • Stellt die öffentliche Test-API SpatialMediaPlayerTester (Ia3e09) bereit.
  • Stellt die öffentliche Test-API SpatialEnvironmentTester (Icf60f) bereit.
  • Bietet die öffentlichen Test-APIs GltfModelTester und SceneCoreTestRule.getGltfModelTester. (I33fcb)
  • Bietet die öffentliche Test-API InteractableComponentTester. (Ia7096)
  • Bietet die öffentliche Test-API SurfaceEntityTester. (Ic0740)
  • Stellt die öffentlichen Test-APIs GltfModelEntityTester, TestGltfModelNode und TestGltfAnimation bereit. (I72c4d)
  • Bietet die öffentlichen Test-APIs SceneTester und SceneCoreTestRule.sceneTester. (Ib4ec5)
  • Bietet die öffentlichen Test-APIs PerceptionSpaceTester und SceneCoreTestRule.perceptionSpaceTester. (Icf739)
  • Bietet die öffentliche Test-API MeshEntityTester. (I63801)
  • Bietet öffentliche Test-API-Überladungen für ImageBasedLightingAssetTester und SceneCoreTestRule.getTester. (I57ec4)
  • Stellt die öffentliche Test-API TextureTester (Ia865b) bereit.
  • Stellt die öffentliche Test-API PositionalAudioComponentTester (Icd96e) bereit.
  • Stellt die öffentliche Test-API SpatialSoundPoolTester (Ia3531) bereit.
  • Bietet die öffentliche Test-API SoundEffectPoolTester (If349a)
  • Bietet die öffentlichen Test-APIs ActivitySpaceTester und SceneCoreTestRule.activitySpaceTester. (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 die genaue Zuordnung physischer Abmessungen in ActivitySpace bereitzustellen. (I0e3ac)
  • Es wurden öffentliche APIs zum Erstellen und Rendern benutzerdefinierter Meshes hinzugefügt. (I7ad2f)
  • Die VertexLayout API wurde aktualisiert und verwendet jetzt eine Liste von VertexBufferLayouts, wobei jedes VertexBufferLayout die Attribute in einem einzelnen Vertex-Puffer beschreibt. Dies ermöglicht flexiblere Anordnungen von Vertex-Daten, einschließlich verschachtelter Attribute mit benutzerdefinierten Strides und Offsets. (Ic426b)
  • Bietet MovableComponent.createTrackingMovable, um ein ARCore-Trackable in eine Pose relativ zum Activity Space zu transformieren. (I12249)
  • Der Standardwert für das übergeordnete Element in Entity.create wurde auf „null“ aktualisiert. (Ic3145)
  • Entity wurde aktualisiert und ist jetzt eine Klasse anstelle einer Schnittstelle. Sie ist jetzt 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 Geometrieparameter enthalten sein sollten. (I24d4a)
  • Für räumliche Einheiten wird jetzt eine stabile Gerätedichte für die Berechnung von Pixeln in Metern auf den Spatial API-Ebenen 1 und 2 verwendet. So wird eine konsistente Größe unabhängig von Änderungen der Systemanzeigedichte gewährleistet. (I37051)

Version 1.0.0-alpha15

19. Mai 2026

androidx.xr.scenecore:scenecore-*:1.0.0-alpha15 ist veröffentlicht. Version 1.0.0-alpha15 enthält diese Commits.

API-Änderungen

  • Entity.dispose() wurde als öffentliche API entfernt. Anstatt dispose() für Entity-Instanzen aufzurufen, können Apps Instanzen bereinigen, indem sie parent auf null setzen und alle starken Verweise auf diese Instanzen entfernen. (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-Methoden add/removeOnFooListener wurden in add/removeFooListener umbenannt. On wurde aus dem Namen entfernt. (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 überarbeitet, um die Sicherheit und Erweiterbarkeit zu verbessern. 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- und 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 eine Menge dieser Typen anstelle eines einzelnen Werts. (Ib1033)
  • Die experimentelle Custom Mesh API unterstützt jetzt Skelettanimation (Skinning). Entwickler können jetzt benutzerdefinierte Meshes animieren, indem sie beim Erstellen eines MeshEntity ein 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)
  • Hinzufügen von Spatial Audio-Komponenten: PositionalAudioComponent, SoundEffectPoolComponent und SoundFieldAudioComponent (Ieda89)
  • AnchorEntity.getAnchor wurde durch AnchorEntity.anchor ersetzt und gibt jetzt einen Anchor zurück, wenn der AnchorEntity aus einem ARCore-Anchor (I5c7c8) erstellt wurde.
  • Der Standardwert für den Parameter parent in den Factory-Methoden ActivityPanelEntity, GltfModelEntity, GroupEntity, PanelEntity und SurfaceEntity wurde von ActivitySpace zu null geändert. Damit eine Einheit an den Szenengraphen angehängt und gerendert werden kann, müssen Entwickler jetzt explizit das übergeordnete Element während der Instanziierung oder über Entity.parent = ... (Ie7cc1) festlegen.

Fehlerkorrekturen

  • SceneCore fordert jetzt automatisch Entity-Instanzen zurück, wenn sie phantomhaft erreichbar werden. Entwickler müssen dispose() nicht mehr explizit aufrufen, um Ressourcen freizugeben. Damit eine [Entity]-Instanz ordnungsgemäß zurückgefordert wird, sollten Entwickler Folgendes tun:
    • Trennen Sie es vom Szenengraphen, indem Sie parent auf null setzen.
    • Alle starken Verweise auf die Instanz in ihrem Code aufgeben.
    • Hinweis zu speziellen Entitätstypen: Für Entitäten, die nicht übergeordnet werden können (z. B. AnchorEntity), müssen Entwickler eine starke Referenz aufrechterhalten, solange die Instanz verwendet wird. Wenn alle Referenzen freigegeben werden, werden diese Instanzen zu Phantom-Reichweite und werden automatisch zurückgefordert. (I83fe4)
  • Die ProGuard-Regeln für alle SceneCore-Bibliotheken wurden eingeschränkt. (I98447)

Bekannte Probleme

  • Wenn Sie ein PositionalAudioComponent an ein Entity mit einer inaktiven ExoPlayer-Instanz anhängen, kommt es zu einem Absturz. Rufen Sie setPointSourceParams nicht auf und hängen Sie 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 sind jetzt veraltet. (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 eingestellt. 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)
  • Die 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)
  • Entfernen Sie die Entität aus PointSourceParams. 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 eingestellten Fallback), INERTIAL_LAST_KNOWN für 3DoF-Tracking wurde hinzugefügt und TRACKING_DEGRADED wurde TrackingState hinzugefügt. (Ie661c, b/445466590)
  • GroupEntity eingestellt. Wenn Sie eine Entität mit nur der grundlegenden Entitätsfunktionalität haben möchten, rufen Sie Entity.create auf. Dadurch wird eine Entitätsschnittstelle zurückgegeben. (I4c450, b/473867483)
  • Die XrLog API wurde hinzugefügt. Legen Sie für XrLog.isEnabled den Wert true fest, um das Logging in JetpackXR zu aktivieren, und verwenden Sie XrLog.Level, um die Protokollebene festzulegen. (I76a1f, b/463460895, b/487378441)

Fehlerkorrekturen

  • Der Standardwert für Scene.keyEntity ist jetzt mainPanelEntity. (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 schwerkraftorientiert. (If6f11, b/458173423)
  • Die eingestellten 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, die anstelle von Vector3-Positionen Posen zurückgegeben haben, wurden entfernt. (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 geschätzten Laufzeit für Scenecore hinzugefügt (I9c4ab, b/476440158)
  • Wenn Sie die Größe der Entität im Hauptbereich ändern, wird sie möglicherweise an der Position ActivitySpace neu positioniert. Es gibt keine andere Lösung als das manuelle oder programmatische Zurücksetzen des Panels an seinen ursprünglichen Speicherort. Dieser Fehler wird in einem zukünftigen Release behoben. (b/489427007)
  • In einigen Fällen wird die Affordance für MovableComponent nicht für SurfaceEntity und andere Entitätstypen angezeigt, die nicht in einem Bereich enthalten sind. Wenn Sie MovableComponent.size explizit festlegen, wird die Aufforderung angezeigt. Dieser Fehler wird in einem zukünftigen Release behoben (b/490983469).

Version 1.0.0-alpha12

25. Februar 2026

androidx.xr.scenecore:scenecore-*:1.0.0-alpha12 ist veröffentlicht. Version 1.0.0-alpha12 enthält diese Commits.

Bekannte Probleme

  • Verankerte Objekte können nach einigen Sekunden von ihrer verankerten Position zum Ursprung des Aktivitätsbereichs springen.
  • Apps stürzen möglicherweise beim Erstellen von SurfaceEntity-Instanzen ab. Dieses Problem wurde 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)
  • Der Eigenschaft FakeEntity wurde der öffentliche Name hinzugefügt und die Ansicht wurde in FakePanelEntity öffentlich gemacht. (Ifa1f9)

Fehlerkorrekturen

  • Berechnungen der Pixeldichte in 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 auf der RenderViewpoint API von ARCore anstelle von CameraViewScenePose basieren. 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. Bisher wurde 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 ein ScenePose zu erhalten, das dem Kopf oder dem linken oder rechten Auge des Nutzers entspricht, können Entwickler PerceptionSpace.getScenePoseFromPerceptionPose mit der entsprechenden Pose verwenden, die mit ARCore-APIs abgerufen wurde. (I2f69c, b/446989745)

Version 1.0.0-alpha10

3. Dezember 2025

androidx.xr.scenecore:scenecore-*:1.0.0-alpha10 ist veröffentlicht. Version 1.0.0-alpha10 enthält diese Commits.

API-Änderungen

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

Fehlerkorrekturen

  • Ein potenzieller Absturz wurde behoben, der auftreten kann, wenn die Sitzung beendet wird und ein SpatialModeChangeEvent empfangen wird (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 eines ScenePose hinzu, das die Zusammensetzung der Pose des Ursprungs des Wahrnehmungsraums und einer Pose in Bezug auf den Ursprung des Wahrnehmungsraums darstellt. (I5b50a)
  • Die Funktion getGravityAlignedPose wurde hinzugefügt. Bei der schwerkraftorientierten Ausrichtung werden die Neigung und Drehung der Rotation ignoriert. (I5ae21)
  • Die AnchorEntity.State-Konstantentypen wurden von „Ints“ in „State“-Untertypen geändert. (Ib0c49)
  • getChildren() wurde der Entitätsschnittstelle hinzugefügt. Der Lebenszyklus von MainPanelEntity wurde aktualisiert. (Ia69d6)

API-Änderungen

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

Fehlerkorrekturen

  • :xr:scenecore:scenecore-spatial-rendering und :xr:scenecore:scenecore-spatial-core 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 ist jetzt ein boolesches Attribut (I5c4e8, b/440588971).
  • Scenecore-Fälschungen befinden sich jetzt im Modul xr:scenecore:scenecore-testing. (Idd951)
  • shouldAutoHideContent wurde in isAutoHideContentWhileResizingEnabled und shouldAlwaysShowOverlay in isAlwaysShowOverlayEnabled umbenannt (I97c36, b/432335421)
  • Die Konstanten SceneCore TextureSampler wurden zur besseren Lesbarkeit aktualisiert. So ist TextureSampler.MinFilter.LINEAR jetzt TextureSampler.MIN_FILTER_LINEAR (Ib159c).
  • Der Setter für setKeyEntity der Szene wurde in die Variable keyEntity zusammengeführt. Wenn Sie keyEntity auf eine nicht verschiebbare Entität wie AnchorEntity festlegen, wird ein IllegalArgumentException ausgegeben, anstatt einen booleschen Wert „false“ zurückzugeben. (I62080, b/428721695, b/422215745)
  • Die Variable SpatialModeChangeListener der Szene wurde durch setSpatialModeChangedListener ersetzt. Es wird ein Consumer<SpatialModeChangeEvent> anstelle eines SpatialModeChangedListener verwendet. setSpatialModeChangedListener kann jetzt optional einen Executor akzeptieren. (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)
  • Die Konstante SpatialSoundPool.PLAY_FAILED wurde 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)
  • Änderungen an SurfaceEntity
    • SurfaceEntity.CanvasShape wurde in Shape umbenannt
    • SurfaceEntity.CanvasShape.Vr180Hemisphere wurde in Hemisphere umbenannt
    • SurfaceEntity.CanvasShape.Vr360Sphere wurde in Sphere umbenannt
    • SurfaceEntity.EdgeFeatheringParams.SmoothFeather wurde in RectangleFeather umbenannt
    • SurfaceEntity.EdgeFeathingParams.SolidEdge wurde in NoFeathering umbenannt
    • SurfaceEntity.ContentSecurityLevel wurde in SurfaceProtection umbenannt
    • SurfaceEntity.ContentSecurityLevel.{values} hat ein SURFACE_PROTECTION_-Präfix hinzugefügt.
    • SurfaceEntity.SuperSampling.{$values} hat das Präfix SUPER_SAMPLING_ hinzugefügt
    • SurfaceEntity.StereoMode.{values} hat das Präfix STEREO_MODE_ hinzugefügt
    • SurfaceEntity.ContentColorMetadata.maxCLL wurde in maxContentLightLevel umbenannt (I7eb5f, b/422216050, b/427529950)
  • launchActivity 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 und createBundleForFullSpaceModeLaunchWithEnvironmentInherited umbenannt und als Methoden der obersten Ebene in die Datei „LaunchUtils.kt“ verschoben. Außerdem wird „Session“ als erster Parameter verwendet (I64a2c, b/437186050).
  • Die GroupEntity-Factory gibt jetzt den 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 APIs SceneCore's BaseEntity und BaseScenePose aufheben (88c0ff6)

Version 1.0.0-alpha05

30. Juli 2025

androidx.xr.scenecore:scenecore-guava:1.0.0-alpha05, androidx.xr.scenecore:scenecore-testing:1.0.0-alpha05 und androidx.xr.scenecore:scenecore:1.0.0-alpha05 sind veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.

Neue Funktionen

  • Die API für die wahrgenommene Auflösung wurde den Panel-Entitäten und SurfaceEntities hinzugefügt. (I118f6)
  • PerceivedResolution Der Datei „Scene.kt“ wurden Callback-Methoden hinzugefügt, um die wahrgenommene Auflösung des Hauptbereichs der Aktivität im HSM zu überwachen. (I58084)
  • SurfaceEntity – Unterstützung für Anwendungen, die beim Erstellen von Bildern Super-Sampling anfordern, wurde hinzugefügt. So können Anwendungen den Super-Sampling-Filter für das Anti-Aliasing verwenden. (I06913)
  • Das Attribut recommendedContentBoxInFullSpace wurde zu ActivitySpace hinzugefügt. Gibt ein empfohlenes Feld für Inhalte zurück, die im Full Space-Modus platziert werden sollen. (I4cd6f)
  • Es wurde ein überladener Konstruktor für den verschiebbaren Modifier bereitgestellt, der das Verankern ermöglicht. (Ic0c70)

API-Änderungen

Für diesen Release wurden umfangreiche API-Änderungen an SceneCore vorgenommen. Mehrere Klassen wurden umbenannt und/oder in andere Module verschoben. Die meisten Getter-/Setter-Methoden wurden durch Kotlin-Properties ersetzt. Bis zur ersten Betaversion erwarten wir zwar noch wichtige API-Änderungen, diese werden aber nicht so einschneidend oder zahlreich sein.

  • Die folgenden Klassen und Schnittstellen wurden umbenannt und/oder verschoben: androidx.xr.scenecore.PixelDimensions nach androidx.xr.runtime.math.IntSize2d; androidx.xr.scenecore.Dimensions nach androidx.xr.runtime.math.FloatSize3d; androidx.xr.scenecore.ActivityPose nach ScenePose, androidx.xr.scenecore.ContentlessEntity nach GroupEntity, androidx.xr.scenecore.PlaneType nach PlaneOrientation; androidx.xr.scenecore.PlaneSemantic nach PlaneSemanticType. (Ifd405)(I3b622) (If534d)
  • Eine Reihe von Settern für die Attribute von Scene wurden als privat festgelegt. Sie sollten nicht von SceneCore-Clients geändert werden: activitySpace, activitySpaceRoot, mainPanelEntity, perceptionSpace, spatialCapabilities, spatialEnvironment und spatialUser. (I2f506)
  • In „Element“: Die folgenden Elemente wurden in Properties geändert: get/setParent(), setContentDescription. Entity.is/setHidden() wurde verworfen. Verwenden Sie 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 Eigenschaften ersetzt. Die Eigenschaft 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 ein Attribut ersetzt. (Ib0cc5) Für ExrImage und GltfModel:: Die create-Methoden wurden in suspend-Funktionen geändert. Die Erstellungsparameter wurden so geändert, dass sie anstelle von String ein Uri oder Path akzeptieren. (Id8883) (I0d247), (I25706)
  • SpatialEnvironment.requestFullSpaceMode und SpatialEnvironment.requestHomeSpaceMode wurden in „Szene“ verschoben. Verwenden Sie beispielsweise session.scene.requestFullSpaceMode() statt 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 (I927bd) (I927bd) (I927bd) entfernt.
  • Die folgenden SpatialEnvironment-Getter und ‑Setter wurden durch Kotlin-Properties ersetzt: getCurrentPassthroughOpacity(), get/setPassthroughOpacityPreference(), get/setSpatialEnvironmentPreference(), isSpatialEnvironmentPreferenceActive() (I33a7b) (Ie06e2) (Ie06e2)
  • Der Typ von SpatialEnvironmentPreference.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 Deckkraft bevorzugt wird. (I40107)
  • Der Parameter windowBoundsPx wurde in der Methode „create“ 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 ist nicht mehr nullable. 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 ein schreibgeschütztes Attribut ersetzt. Die Parameter der Methode AnchorEntity.create() wurden zur besseren Übersichtlichkeit 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 ermöglichen. 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 ein Attribut ersetzt. ActivitySpace.addBoundsChangedListener wurde in ActivitySpace.addOnBoundsChangedListener umbenannt. ActivitySpace.setOnSpaceUpdatedListener durch Methoden zum Hinzufügen/Entfernen ersetzt. (I4c956)
  • AnchorPlacement: planeTypeFilter wurde in anchorablePlaneOrientations umbenannt und planeSemanticFilter in anchorablePlaneSemanticTypes. Wenn Sie einer AnchorEntity oder ActivitySpace eine MovableComponent hinzufügen, wird „false“ zurückgegeben. MoveListener wurde in EntityMoveListener shouldDisposeParentAnchor umbenannt, EntityMoveListener shouldDisposeParentAnchor wurde in disposeParentOnReAnchor systemMovable umbenannt und disposeParentOnReAnchor systemMovable wurde zugunsten von creeateCustomMovable, createSystemMovable und createAnchorable aus der Funktion create entfernt (If11c4).
  • SurfaceEntity.featherRadiusX/Y wurde entfernt und ein EdgeFeatheringParams-Klassenkonzept wurde hinzugefügt. (Ic78fc)
  • Die Methode PanelEntity.enablePanelDepthTest() wurde durch das Attribut panelClippingConfig ersetzt. Setzen Sie Scene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true) auf PanelClippingConfig(isDepthTestEnabled = false), um den Tiefentest zu aktivieren, oder auf Scene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true), um ihn zu deaktivieren. (I0cbe0)
  • Scene.mainPanelEntity ist jetzt vom Typ MainPanelEntity anstelle von PanelEntity (I7125a)
  • Die Methode setFullSpaceMode der Klasse „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 und 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 umbenannt und in das PointerCaptureComponent.PointerCaptureState-Objekt verschoben (I9c7ac)
  • PointerCaptureComponents' StateListener wurde durch Consumer<Int> ersetzt. (I9c7ac)
  • InputEventListener durch Consumer<InputEvent> ersetzt (I9c7ac)
  • setPreferredAspectRatio wurde von der Scene-Klasse in das SpatialWindow-Objekt verschoben und verwendet die Sitzung als ersten Parameter. (I7b717)
  • Entity.setHidden() wurde durch Entity.setEnabled() ersetzt und Entity.isHidden() durch Entity.isEnabled(). setHidden(false) ist gleich setEnabled(true) und isHidden() == !isEnabled(). (Icf0de)
  • Der Typ von Entity.contentDescription wurde von „String“ in „CharSequence“ geändert. (Ie59be)
  • Bei Session.create und Session.configure wird jetzt SecurityException ausgegeben, wenn nicht genügend Berechtigungen erteilt wurden, anstatt SessionCreatePermissionsNotGranted oder SessionConfigurePermissionsNotGranted zurückzugeben. (I7c488)
  • Für ResizableComponent.create ist jetzt ein Consumer<ResizeEvent> ResizeEventListener erforderlich. Consumer<ResizeEvent> ResizableComponent.size wurde durch ResizableComponent.affordanceSize ResizableComponent.minimumSize ersetzt. ResizableComponent.minimumEntitySize ResizableComponent.maximumSize 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 überflüssig, da Jetpack XR derzeit nur auf Geräten mit API-Level 34 oder höher verfügbar ist. (Iae0f8)
  • Das Hauptartefakt SceneCore (xr:scenecore:scenecore) enthält nur asynchrone APIs im Kotlin-Stil. Java-Entwickler können die xr:scenecore:scenecore-guava-Bibliothek verwenden, um auf kompatible APIs zuzugreifen. (If221b)
  • Für Projekte, die mit Kotlin 2.0 veröffentlicht wurden, ist KGP 2.0.0 oder höher erforderlich (Idb6b5).
  • In dieser Bibliothek werden jetzt JSpecify-Annotationen für Nullsicherheit verwendet, die typbezogen sind. Kotlin-Entwickler sollten das folgende Compiler-Argument verwenden, um die korrekte Verwendung zu erzwingen: -Xjspecify-annotations=strict (dies ist die Standardeinstellung ab Version 2.1.0 des Kotlin-Compilers) (Ia8420)
  • Alle asynchronen Methoden, die 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. GuavaExrImage enthält beispielsweise die asynchronen Funktionen von ExrImage, die Guava-Äquivalente sind, GuavaScenePose enthält die asynchronen Funktionen von ScenePose, die Guava-Äquivalente sind, 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 Korrekturen zur Unterstützung der Proguard-Minimierung für Jetpack XR SceneCore (I4f47e)
  • Ein Fehler wurde behoben, bei dem ein InteractableComponent zu einem Absturz führen konnte, wenn die hitPosition in den HitInfo des InputEvent abstürzen konnte, wenn die vom System zurückgegebene hitPosition null war (I7a695).
  • Die Konfigurationswerte für den Modus wurden umbenannt, um ihr Verhalten widerzuspiegeln. (I6d247)
  • Probleme mit dem Sichtfeld und HitTest in der SceneCore-Test-App wurden behoben. (I2c51e)
  • Ein Fehler in SpatialCapabilities.hasCapability() wurde behoben. Bisher wurde „true“ zurückgegeben, wenn eine der mit einer bitweisen ODER-Operation übergebenen Funktionen „true“ war. Jetzt wird „true“ nur noch zurückgegeben, wenn alle Funktionen „true“ sind. (I2cd40)
  • SurfaceEntity.StereoMode.TOP_BOTTOM wurde aktualisiert, sodass die obere Karte dem linken Auge und die untere Karte dem rechten Auge zugewiesen 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 Rückbearbeitung funktioniert jetzt auch für Bildbereichsentitäten ohne eingebettete Aktivitäten. Damit die Rücktaste funktioniert, müssen Sie android:enableOnBackInvokedCallback= "true" im Android-Manifest angeben.
  • 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“.
  • Der Klasse SessionExt.kt wurden Erweiterungsmethoden für den Rückruf der räumlichen Sichtbarkeit hinzugefügt, um zu überwachen, wann sich der Inhalt der Szene innerhalb oder außerhalb des Sichtfelds des Nutzers bewegt.
  • setPointSourceParams wurde SpatialAudioTrack hinzugefügt. Dadurch können die Parameter aktualisiert werden, nachdem der Track erstellt wurde.
  • Es wurde eine neue Klasse „Scene“ mit Verweisen auf Scenecore-APIs hinzugefügt. Die Szene ist als Erweiterungseigenschaft der Sitzung verfügbar. Funktionen in SessionExt wurden in „Scene“ verschoben. Daher müssen Importe angepasst werden, z. B. SessionExt.getScene(session).addSpatialCapababilitiesChangedListener im Vergleich zu SessionExt.addSpatialCapabilitiesChangedListener
  • ActivityPose.hitTestAsync wurde hinzugefügt, wodurch ein hitTest für virtuelle Inhalte möglich ist.
  • Der neue Komponententyp SpatialPointerComponent wurde hinzugefügt. Damit können Clients das Symbol für den Zeiger angeben oder das Symbol deaktivieren. Diese Komponente kann derzeit nur an PanelEntity-Instanzen angehängt werden.
  • Wir führen die neue PanelEntity-Factory ein, die die Abmessungen des Panels in Metern oder Pixeln entgegennimmt. Die alte PanelEntity-Factory, die zwei Parameter vom Typ „Dimension“ für das Feld verwendet, wurde entfernt.

API-Änderungen

  • Die Einschränkung RequiresApi(34) wurde für alle Jetpack XR-Pakete entfernt. Diese Einschränkung war überflüssig, da Jetpack XR derzeit nur auf Geräten mit API-Level 34 oder höher verfügbar ist. (Iae0f8)
  • Für Projekte, die mit Kotlin 2.0 veröffentlicht wurden, ist KGP 2.0.0 oder höher erforderlich (Idb6b5).
  • Der Kurs „PermissionHelper“ wurde entfernt.
  • PanelEntity.getPixelDensity wurde verworfen.
  • PanelEntity.setPixelDimensions und PanelEntity.getPixelDimension werden 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 in der XR-Laufzeit gelöscht.
  • StereoSurfaceEntity“ wurde in „SurfaceEntity“ umbenannt.
  • Entity.setSize und Entity.getSize wurden entfernt und dieselben Methoden wurden PanelEntity hinzugefügt.
  • PointSourceAttributes“ wurde in „PointSourceParams“ umbenannt.
  • SpatializerConstants.SOURCE\_TYPE\_BYPASS“ wurde in „SpatializerConstants.SOURCE\_TYPE\_DEFAULT“ umbenannt.
  • Die PointSourceParams-Entität wurde von öffentlichem zu internem 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 Fov-Klasse 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 untergeordnet. Dadurch wird die Verwendung von LayoutInspector mit räumlichen Bereichen erleichtert.
  • Die derzeit verwendete XrExtensions-Instanz ist jetzt nach bestem Wissen und Gewissen auf der Plattform registriert, um das Debuggen von Apps zu erleichtern.

Fehlerkorrekturen

  • Es wurde eine Korrektur hinzugefügt, um einen Absturz zu verhindern, der auftreten konnte, wenn ein PanelEntity mit MovableComponent und AnchorPlacement verschoben wurde.
  • Ein Problem wurde behoben, bei dem ResizableComponent veraltete Größen im onResizeStart-Callback bereitstellte.
  • 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

  • Proguard-Minifizierung wird jetzt für Jetpack XR-Code unterstützt

Fehlerkorrekturen

  • Zusätzliche Korrekturen zur Unterstützung der Proguard-Minifizierung für Jetpack XR SceneCore (I4f47e)
  • Die Jetpack XR-Scenecore-Regel 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 wichtige Änderung für Apps, die vor Version 1.0.0-alpha02 erstellt wurden

  • Factory-Methoden wurden aus der Klasse Session in eine Companion-Methode für jeden 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. Es wurde durch getSpatialCapabilities().hasCapability() ersetzt, da dies eine besser abgegrenzte Möglichkeit ist, das Vorhandensein räumlicher Funktionen 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. In Entwicklerdateien müssen die neuen Importe für den Zugriff hinzugefügt werden:
    • import androidx.xr.scenecore.setFullSpaceMode
    • import androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
  • Session.setPreferredAspectRatio(Activity, Float) wurde in eine Erweiterungsfunktion verschoben. In Entwicklerdateien muss der neue Import für den Zugriff hinzugefügt werden:
    • import androidx.xr.scenecore.setPreferredAspectRatio
  • Session.getEntitiesOfType(Class<out T>) und Session.getEntityForRtEntity(RtEntity) wurden in Erweiterungsfunktionen verschoben. In Entwicklerdateien müssen die neuen Importe für den Zugriff hinzugefügt werden:
    • 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 Feld das nächste Mal verschoben wird. Das lässt sich vermeiden, indem Sie das Feld an seine aktuelle Position verschieben.
  • Wenn BoundsChanged für die ActivitySpace aufgerufen wird, wurden einige ActivityPoses möglicherweise nicht richtig aktualisiert. Sie wird beim nächsten OnSpaceUpdated-Anruf am ActivitySpace aktualisiert.

Nicht abwärtskompatible Änderungen und Verhaltensänderungen

  • PanelEntity und ActivityPanelEntity haben einen Standard-Eckenradius von 32 dp oder weniger, wenn der Bereich eine Breite oder Höhe von weniger als 32 dp hat.

Neue APIs und Funktionen

  • Mit StereoSurface.CanvasShape können Sie Spherical- und Hemispherical-Arbeitsbereiche zum Rendern immersiver Medien erstellen.
  • StereoSurfaceEntity.create() akzeptiert jetzt einen CanvasShape-Parameter. Dieser Parameter wird derzeit ignoriert, wird aber in einer zukünftigen Version verwendet.
  • StereoSurfaceEntity.create() akzeptiert keinen Dimensions-Parameter mehr. Anwendungen sollten die Größe des Canvas durch Festlegen von CanvasShape steuern.
  • StereoSurfaceEntity hat ein CanvasShape-Element, das dynamisch festgelegt werden kann.
  • StereoSurfaceEntity.dimensions ist jetzt ein schreibgeschütztes Attribut. Anwendungen sollten CanvasShape festlegen, um die Abmessungen zu ändern.
  • Mit StereoSurfaceEntity kann StereoMode jetzt nach der Konstruktion zurückgesetzt werden.

Sonstige Änderungen

  • Die minSDK-Version für die Kompilierung wurde auf 24 reduziert. Für alle Jetpack XR-APIs ist weiterhin API 34 zur Laufzeit erforderlich.
  • Die Sitzungsfactory (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 Ankererstellung 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 Übersetzungs-Werte in skalierten Metern zurückgegeben, anstatt immer nicht skalierte Meter. 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 festgelegt, wenn mit setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom)) eine Null-Skybox-Einstellung übergeben wird. Wenn Sie zur Standard-Skybox und ‑Geometrie des Systems zurückkehren möchten, verwenden 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: Mit einem Skybox-Bild und/oder einer 3D-Modellgeometrie als Kulisse für Ihre XR-Szene Ihrer Umgebung können Sie vollständig immersive Erlebnisse schaffen. Oder Sie aktivieren den Passthrough-Modus, damit sich die virtuelle Szene in die reale Umgebung des Nutzers einfügen kann.
  • PanelEntity: Sie können 2D-Inhalte in Ihre 3D-Szenen einfügen, indem Sie Standard-Android-Layouts und -Aktivitäten in räumlich angeordnete Panels einbetten, die frei schweben oder an realen Oberflächen verankert werden können.
  • GltfModelEntity: Mit dieser Funktion können Sie 3D-Modelle in Ihrer Szene platzieren, animieren und mit ihnen interagieren. SceneCore unterstützt das glTF-Dateiformat, um die Integration mit vorhandenen Modellen zu vereinfachen.
  • 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, zum linken und rechten Auge. Damit können stereoskopische Inhalte im Side-by-Side- oder Top-Bottom-Format gerendert werden, z. B. Stereofotos, 3D-Videos oder andere dynamisch gerenderte Benutzeroberflächen. Anwendungen sollten MediaPlayer oder ExoPlayer für die Videodecodierung verwenden.
  • Komponentensystem: SceneCore bietet ein robustes und flexibles Komponentensystem zum Hinzufügen von Funktionen zu Ihren XR-Inhalten, einschließlich Affordanzen für Nutzer, um Modelle und Bereiche zu verschieben, ihre Größe zu ändern und mit ihnen zu interagieren.
  • Anker: Wenn Passthrough aktiviert ist, können Sie Panels und Modelle an realen Oberflächen anbringen. So können Nutzer virtuelle Inhalte nahtlos in ihre reale Umgebung einfügen.
  • Nutzer-Pose: Ermöglicht den Zugriff auf den Standort des Nutzers in der virtuellen Szene, um Inhalte an der Position des Nutzers auszurichten.
  • SpatialCapabilities: Entwickeln Sie vollständig adaptive Apps, die räumliche Funktionen nutzen, wenn sie verfügbar sind, z. B. die 3D-Positionierung von UI-Inhalten. Außerdem kann Ihre App während der Ausführung auf Änderungen der Funktionen achten, um die Nutzererfahrung basierend darauf anzupassen, wie der Nutzer sein Android XR-Gerät verwendet.

Bekannte Probleme

  • Derzeit ist ein minSDK von 30 erforderlich, um Jetpack SceneCore zu verwenden. Fügen Sie als Workaround den folgenden Manifesteintrag <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> hinzu, um mit einem minSDK von 23 erstellen und ausführen zu können.
  • Sitzungen können in verschiedenen Situationen ungültig werden, in denen die Aktivität automatisch neu erstellt wird. Dazu gehören das Ändern der Größe eines Hauptbereichs, das Anschließen von Peripheriegeräten und das Wechseln zwischen dem hellen und dem dunklen Modus. Wenn Sie Probleme mit der Ungültigmachung von Sitzungen haben, können Sie unter anderem Folgendes tun: Das Hauptfeld nicht in der Größe veränderbar machen, eine dynamische Feld-Entität verwenden, die Neuerstellung von Aktivitäten für bestimmte Konfigurationsänderungen deaktivieren oder Änderungen am hellen/dunklen Design deaktivieren.
  • Verschiebbare und in der Größe anpassbare Komponenten werden in 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 AndroidManifest anfordern.
  • Das Erstellen einer Sitzung wird nur auf Android XR-Geräten unterstützt. Wenn Sie derzeit eine Sitzung erstellen und versuchen, sie auf einem Nicht-Android-XR-Gerät zu verwenden, erhalten Sie eine RuntimeException.
  • Wenn die Skybox über `SpatialEnvironment.setSpatialEnvironmentPreference()` auf „null“ gesetzt wird, wird nicht wie dokumentiert eine einfarbig schwarze Skybox angezeigt. Das kann dazu führen, dass die Standard-Skybox des Systems angezeigt wird oder die aktuelle Skybox unverändert bleibt.
  • 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 diese Bibliothek als api-Abhängigkeit in „scenecore“ enthalten sein, sodass Clients sie nicht explizit deklarieren müssen.
  • SceneCore enthält fälschlicherweise com.google.guava:guava-31.1-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 beim Erstellen einer Sitzung ab. Deaktivieren Sie ProGuard als Behelfslösung. Weitere Informationen zum Aktivieren von ProGuard finden Sie in diesem Leitfaden.