Jetpack Compose für XR

Deklarativ räumliche UI-Layouts erstellen, die die räumlichen Funktionen von Android XR nutzen.
Letzte Aktualisierung Stabile Release Releasekandidat Beta-Release Alpha-Release
21. Oktober 2026 - - 1.0.0-beta02 -

Abhängigkeiten deklarieren

Für eine Abhängigkeit von XR Compose 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:

Cool

dependencies {
    implementation "androidx.xr.compose:compose:1.0.0-beta02"

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

Kotlin

dependencies {
    implementation("androidx.xr.compose:compose:1.0.0-beta02")

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

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-beta02

21. Oktober 2026

androidx.xr.compose:compose:1.0.0-beta02 und androidx.xr.compose:compose-testing:1.0.0-beta02 sind veröffentlicht. Version 1.0.0-beta02 enthält diese Commits.

API-Änderungen

  • Bibliotheken sind jetzt auf Kotlin 2.2 ausgerichtet und erfordern kotlinc 2.2 (I82396, b/498369605).
  • Der Parameter halfLifeMs von FollowMode.soft() wurde in halfLifeMillis umbenannt. (I39187)
  • PitchLimits wurde in ein @JvmInline value class konvertiert, wobei zwei Gleitkommazahlen in ein Long gepackt wurden, um Objektzuweisungen zu vermeiden. (Id43c3)
  • Neuer Parameter für FollowMode.soft hinzugefügt: halfLifeMs, startDelay und startThresholds. Der Parameter durationMs wurde entfernt, da er für die Umstellung vom smoothStep-Algorithmus auf den exponentialDecay-Algorithmus nicht mehr benötigt wird. (If0140)
  • Entfernen Sie die verworfene Überladung SpatialActivityPanel. Verwenden Sie stattdessen die Überladung von SpatialActivityPanel, die ein SpatialActivityPanelController akzeptiert. (I5abc3)
  • Übergänge zwischen 3D- und 2D-Composable-Inhalten innerhalb einer Aktivität in FullSpaceMode aktivieren. Diese Änderung wird durch SpatialComposeFlags.isMainPanelResetOnSubspaceDisposeEnabled gesteuert. (I4e237)
  • Es wurde eine experimentelle Subspace-Überladung mit einem FollowTarget-Parameter hinzugefügt, um das Folgen von Inhalten zu unterstützen. (Iec1a9)
  • Entfernen Sie veraltete verschiebbare Modifikatoren. Verwenden Sie stattdessen den neuen Modifikator „movable“, der den neuen MovePolicy als Parameter akzeptiert. (Ib135d)
  • Entfernen Sie das verworfene DragPolicy. Verwenden Sie stattdessen SubspaceModifier.movable(). (I108d4)
  • Die zustandslosen Überladungen Slider und RangeSlider wurden zugunsten ihrer zustandsorientierten Versionen eingestellt. activeRangeStart und activeRangeEnd in RangeSliderState wurden in startValue und endValue umbenannt. Ältere, nicht hochgestufte und experimentelle Slider APIs wurden mit DeprecationLevel.HIDDEN eingestellt. (If8995)

Fehlerkorrekturen

  • RotateToLookAtUser wurde behoben, indem poseInActivitySpace eingeführt wurde, um eine korrekte Positionsberechnung für alle Unterraumtypen zu gewährleisten, einschließlich derer, die an Ankern oder Nutzern angehängt sind.Ica367b
  • Absturz von Constraints behoben, wenn Orbiter an großen Steuerfeldern angebracht ist (I8c4bf)
  • Ein Fehler in SubspaceLayoutNode wurde behoben, bei dem removeAll() zu unnötigen ArrayList-Zuweisungen führte. Außerdem wurde die Leistung der Tiefenberechnung verbessert. I34a10a
  • 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).
  • Kleinere Rechtschreib- und Grammatikfehler in kdoc behoben (Id3ba6)

Bekannte Probleme

  • Diese Version von androidx.xr.compose ist von androidx.xr.scenecore:1.0.0-rc01 abhängig, das ein bekanntes Speicherleck hat. In Ihrer Build-Konfiguration können Sie die Abhängigkeit SceneCore explizit mit Version 1.0.0 überschreiben, die eine Korrektur für das Speicherleck enthält.

Version 1.0.0-beta01

23. September 2026

androidx.xr.compose:compose:1.0.0-beta01 und androidx.xr.compose:compose-testing:1.0.0-beta01 sind veröffentlicht. Version 1.0.0-beta01 enthält diese Commits.

API-Änderungen

  • Verworfenes DragPolicy entfernt. Verwenden Sie stattdessen SubspaceModifier.movable(). (I108d4)
  • Die verworfene ResizePolicy und ihre Verwendungen in SpatialPanel und SpatialExternalSurface wurden entfernt. Entfernen Sie eine verworfene SubspaceModifier.resizable-Funktion. Verwenden Sie stattdessen die neue SubspaceModifier.resizable mit einer neuen ResizePolicy. (I59e6b)
  • Der Parameter isPitchUpdateEnabled wurde hinzugefügt, um das Aktivieren oder Deaktivieren des Pitch-Trackings unabhängig voneinander zu ermöglichen. (Ie9e86)
  • Die Null-Zulässigkeit von pitchLimits wurde entfernt und PitchLimits.UNCONSTRAINED wurde in PitchLimits.FullRange umbenannt. (I0154f)
  • ExposedDropdownMenu ist jetzt eine Erweiterungsfunktion für ExposedDropdownMenuBoxScope und kein Mitglied mehr. Möglicherweise müssen Sie Ihren Code mit einem neuen Import aktualisieren. (Ie8a65)
  • Die verworfene Klasse SurfaceProtection wurde entfernt. Verwenden Sie stattdessen SpatialExternalSurfaceProtection. (Iab2c6)
  • Die Orbiter-Funktion, die ein OrbiterPoseProvider verwendet, wurde zugunsten der Funktion, die SpatialAlignment verwendet, eingestellt. (I4d12b)
  • Für SpatialActivityPanel ist jetzt ein SpatialActivityPanelController (mit rememberSpatialActivityPanelController instanziiert) erforderlich, um eingebettete Aktivitäten zu starten und zu verwalten. (Id25c6)
  • Der Parameter upDirection wurde aus rotateToLookAtUser entfernt und es wurden Parameter für Rotationseinschränkungen (isYawUpdateEnabled und pitchLimits) hinzugefügt. (I1370a)

Fehlerkorrekturen

  • Verschiedene InteractionPolicy-Probleme wurden behoben. Es kam zu einem Absturz, wenn ein Eingabeereignis genau dann auftrat, wenn das Composable oder ein untergeordnetes Element (z. B. ein Orbiter) eine Entfernungssequenz initiierte. Außerdem wurde ein Problem behoben, bei dem ein untergeordnetes Element Hover-Ereignisse empfangen hat. (Ifc477)
  • Die Größe des Bereichs in RotateToLookAtUserActivity wurde reduziert, um ein Abschneiden auf Geräten mit kleinerem Sichtfeld zu verhindern. (I8d672)

Bekannte Probleme

  • Bei Compose XR-Bereichen gibt es ein Problem, bei dem das Erstellen vieler Bereiche in einer einzelnen Aktivität zu einer Beschädigung der angezeigten Inhalte führen kann, auch nachdem die Bereiche gelöscht wurden.

Version 1.0.0-alpha17

12. August 2026

androidx.xr.compose:compose:1.0.0-alpha17 und androidx.xr.compose:compose-testing:1.0.0-alpha17 sind veröffentlicht. Version 1.0.0-alpha17 enthält diese Commits.

API-Änderungen

  • Entfernen Sie die Wertklasse Meter. Sie wird in Scenecore durch virtualPixelDensity ersetzt. (I690ee)
  • Die SpatialGltfModel API ist jetzt experimentell und muss für die Verwendung aktiviert werden. (I4557e)
  • system-Größenänderung auf Nullable gesetzt (Ib0093)
  • Density in SubspaceSemanticsInfo für Tests freigegeben. (I2e826)
  • Standardoption „ResizePolicy“ in „system“ umbenennen und eine neue Option „Default“ ohne Parameter hinzufügen (Ic8b16)
  • FollowTarget als experimentell markieren. Die gesamte FollowingSubspace API ist jetzt experimentell. (Id4ee3)
  • GltfAnimation-APIs entfernen (Ic2894)
  • Die parametrisierte Methode MovePolicy.default() wurde in MovePolicy.system() umbenannt. Das Attribut val MovePolicy.Default wurde eingeführt, um das standardmäßige Bewegungsverhalten darzustellen. (Iedcc9)
  • ExperimentalMoveAnchorPolicy-Opt-in-Anforderungen auf PlaneSemantic und PlaneOrientation erweitert (Ief927)
  • resetMins aus VolumeConstraints.offset entfernen (Ib2f2f)
  • Die verworfene Funktion SceneCoreEntitySizeAdapter wurde entfernt. (Ib6722)
  • Veraltete Subspace-Überladung mit allowUnboundedSubspace entfernt. (I8e97f)
  • Die veraltete Überladung des Semantikmodifikators wurde entfernt. (I4ac10)

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem untergeordnete Elemente eines Composable mit einem angehängten InteractionPolicy Eingabeereignisse auslösen (Icdba6).

Version 1.0.0-alpha16

15. Juli 2026

androidx.xr.compose:compose:1.0.0-alpha16 und androidx.xr.compose:compose-testing:1.0.0-alpha16 sind veröffentlicht. Version 1.0.0-alpha16 enthält diese Commits.

API-Änderungen

  • ComponentOverride-APIs entfernen (I820c4)
  • Die APIs GltfAnimation und SpatialGltfModelAnimation wurden als experimentell gekennzeichnet. Einige Properties wurden in Getter umgewandelt. (I8d689, b/524771027)
  • Das allgemeine Verhalten der Dichte wurde korrigiert, indem die Umrechnung zwischen Metern und Pixeln konstant gehalten wird. Meter.kt wurde eingestellt. Session.scene.virtualPixelDensity kann jetzt als Alternative verwendet werden. (I122ff, b/430097855, b/474168798)
  • Der Modifikator „resizable“ wurde aktualisiert, sodass jetzt ein ResizePolicy anstelle von zwei Modifikatoren verwendet wird (I7fb0f, b/496257436, b/519672992).
  • Der Parameter Dp = Dp(0.5f) wurde allen öffentlichen Gleitkomma-Dimensions- und Positionsgleichheits-Assertions in SubspaceAssertions.kt hinzugefügt. Das Standardtoleranzverhalten (0.5.dp) ist vollständig dokumentiert. (I266cb, b/521491915)
  • Verschiebbare Überladung mit dem Parameter movePolicy hinzugefügt und transformingMovable und movable eingestellt (Ic88c1, b/481781189)
  • Es wurden neue nicht interaktive Varianten von Standardlistenelementen und segmentierten Listenelementen hinzugefügt, die den Material Expressive-Spezifikationen entsprechen. Die nicht expressive Version wurde eingestellt. (Ide4de, b/491994186)
  • Für Subspace wurde der Parameter allowUnboundedSubspace eingestellt und ausgeblendet. Unbegrenztes Verhalten sollte jetzt mit SubspaceModifier.requiredSizeIn(maxWidth = Dp.Infinity, maxHeight = Dp.Infinity, maxDepth = Dp.Infinity) im Subspace-Modifikator erreicht werden. Der Parameter allowUnboundedSubspace wurde aus FollowingSubspace entfernt. (Ia72ae, b/433624021)
  • Session.create wurde in eine Sperrfunktion umgewandelt. (I5d27f)
  • SubspaceModifier.spatializedAudioOutput wurde hinzugefügt, um die Audiowiedergabe über ExoPlayer oder SoundEffectPlayer zu verräumlichen (I46697, b/489421980, b/497867019)
  • ComponentActivity.requestHomeSpace() und requestFullSpace() wurden aktualisiert, um SpaceRequestResult für die Statusbestätigung zurückzugeben. (If1672)
  • AnchorEntity wurde in AnchorSpace umbenannt (Ifa95e, b/513619219).
  • Uneingeschränkte fromResource-Methode von SpatialGltfModelSource (I1f5a1, b/503047416)
  • SubspaceSemanticsMatcher-Mitglieder sind öffentlich: die Property description, Companion-Factory-Methoden (expectValue, keyIsDefined, keyNotDefined), Mitgliedsfunktionen (matches, matchesAny) und Operatoren (and, or, not). (I972a4, b/460427288)
  • SubspaceModifier.semantics, SubspaceModifier.testTag, SubspaceSemanticsInfo und SubspaceSemanticsModifierNode wurden aktualisiert, um ausgewählte räumliche Semantiktypen zu verwenden. (I80dea, b/460427288)
  • position wurde in SpatialAlignment in align umbenannt und die einzelnen Methoden für den Richtungsoffset wurden zugunsten einer einheitlichen align-API entfernt. (I9bdb2, b/479805937)
  • Veraltete Space-Modus-APIs aus SpatialConfiguration entfernt. (I1ef5c, b/458712461)
  • SubspaceSemanticsConfiguration eingeführt. Dies ist eine Konfiguration von Semantikattributen für einen räumlichen Knoten. Diese Klasse stellt Abfragemethoden für 3D-Semantik sicher bereit, ohne dass grundlegende 2D-Semantikfunktionen für externe Nutzer offengelegt werden. (Id025e, b/460427288)
  • SubspaceSemanticsPropertyReceiver wurde eingeführt: ein dedizierter Wrapper, der die Eigenschaften von 3D-Layoutcontainern auf gültige Felder beschränkt (anfänglich testTag und contentDescription). (I5cf5c, b/460427288)

Fehlerkorrekturen

  • Der hasContentDescription des semantischen Modifikators wurde aktualisiert, sodass standardmäßig der Teilstringabgleich verwendet wird. (I08214)
  • Eingeschränkter FollowBehavior.ExponentialDecay() hinzugefügt, der ein weiches Folgen ermöglicht, das von elastischer Physik gesteuert wird. (I7449c, b/485639909, b/500493335)

Die meisten APIs sind davon betroffen. Konkret werden die LocalSession CompositionLocal und alle CompositionLocals, die von LocalSession abhängig sind (z.B. LocalSpatialConfiguration, LocalSpatialCapabilities usw.), jetzt zu null oder den Nicht-XR-Versionen aufgelöst, bevor die Session initialisiert wird.

Sobald Session verfügbar ist, wird die Neuzusammensetzung mit dem richtigen Status ausgelöst. (I0cfa4, b/514712835, b/514712835)

  • Die Dokumentation für ComponentActivity.requestHomeSpace und ComponentActivity.requestFullSpace wurde in Bezug auf das Verhalten bei Sperrung, Kündigung und Gleichzeitigkeit überarbeitet. Tests zur Überprüfung der CancellationException-Weitergabe wurden aktualisiert. (I22f75, b/493289528)

Version 1.0.0-alpha15

17. Juni 2026

androidx.xr.compose:compose:1.0.0-alpha15 und androidx.xr.compose:compose-testing:1.0.0-alpha15 sind veröffentlicht. Version 1.0.0-alpha15 enthält diese Commits.

API-Änderungen

  • ResizePolicy und der alte Modifikator für die Größenänderung wurden eingestellt und durch eine neue SubspaceModifier.resizable-Überladung und SubspaceModifier.transformingResizable ersetzt. (I9e4bc)
  • Aktualisierte SpatialGltfModel APIs: Unterstützung für das Laden von Modellen aus Ressourcen über SpatialGltfModelSource.fromResource hinzugefügt. Geschwindigkeit in SpatialGltfModelAnimation in playbackSpeed umbenannt und eine resume()-Methode hinzugefügt. SpatialGltfModelStatus.Loaded und Loading sind jetzt Objekte. (I523de)
  • rotateToLookAtUser wurde als experimentelle API markiert. (I86c16)
  • Die geschützte Variable targetCurrentPose wurde verschoben und in die lokale Variable currentTargetPoseMeter umbenannt. (Ia557c)
  • KDocs für SpatialPanel und SpatialExternalSurface aktualisiert, um anzugeben, wo das Objekt innerhalb seiner Layoutgröße gerendert wird (I72104)
  • Die Ladelogik für SpatialGltfModel wurde in SpatialGltfModelState gekapselt und das Verhalten bei Fehlern wurde verdeutlicht. (Ibe98b)
  • depth in SubspaceModifer.size-KDocs wurde näher beschrieben (I0f84f)

Version 1.0.0-alpha14

19. Mai 2026

androidx.xr.compose:compose:1.0.0-alpha14 und androidx.xr.compose:compose-testing:1.0.0-alpha14 sind veröffentlicht. Version 1.0.0-alpha14 enthält diese Commits.

API-Änderungen

  • transformingMovable für die standardmäßige, vom System verarbeitete 3D-Bewegung und eine neue Überladung für movable zur Verarbeitung benutzerdefinierter Bewegungsverhaltensweisen eingeführt. (I50960)
  • "SpatialGltfModel.fromData()" wurde entfernt. (I4d083)
  • Es wurde eine neue Modifikator-Knotenschnittstelle, SubspaceMeasuredSizeAwareModifierNode, hinzugefügt, die nach dem Messdurchlauf einen onRemeasured-Callback bereitstellt. SubspaceLayoutAwareModifierNode erweitert jetzt diese neue Schnittstelle. Der Modifikator onSizeChanged wurde aktualisiert und verwendet jetzt onRemeasured. Dadurch wird der Callback direkt nach der Messung und nicht nach der Platzierung ausgelöst. (Iafbae)
  • InteractionPolicy wurde auf Interface aktualisiert (I0ff30)
  • Compose compileSdk wurde auf API 37 aktualisiert. Das bedeutet, dass bei der Verwendung von Compose mindestens die AGP-Version 9.2.0 erforderlich ist. (Id45cd)
  • Size kdocs aktualisiert (Iefa9a)

Version 1.0.0-alpha13

6. Mai 2026

androidx.xr.compose:compose:1.0.0-alpha13 und androidx.xr.compose:compose-testing:1.0.0-alpha13 sind veröffentlicht. Version 1.0.0-alpha13 enthält diese Commits.

API-Änderungen

  • Für die Orbiter API stehen weitere Änderungen an. Wir empfehlen, die Einstellungsbenachrichtigungen für Orbiter zu unterdrücken und in zukünftigen Releases auf Orbiter-Änderungen zu achten.
  • Wenn Sie SceneCoreEntity zum Rendern von glTFs verwenden, müssen Sie session.scene.activitySpace an den Parameter parent des GltfModel.create-Aufrufs übergeben, damit die glTFs gerendert werden.
  • Die SpatialGltfModel API wird hinzugefügt, damit Entwickler ihren Compose for XR-Apps Gltfs hinzufügen können. Entwickler können auch Animationen und Knoten in ihren Gltf-Modellen abfragen. (I8b542, b/495422586)
  • SceneCoreEntitySizeAdapter wird von einer Klasse in eine Schnittstelle geändert (I5a784, b/475292310)
  • SurfaceProtection wurde in SpatialExternalSurfaceProtection umbenannt. SpatialExternalSurface kdocs aktualisiert (Ifad0a, b/485231082)
  • currentWindowAdaptiveInfo wird eingestellt und Version 2 eingeführt (I40ecf, b/424442112)
  • Der Modifikator resizable ist jetzt öffentlich und kann auf Gruppen angewendet werden (z.B. SpatialRow). (I2bcf6, b/348483527, b/489753178, b/479530787)
  • Der Modifikator movable ist jetzt öffentlich. Dieser Modifikator funktioniert derzeit gut für SpatialPanels und SpatialExternalSurface. Er soll jedoch für alle SubspaceComposables gut unterstützt werden. (I9a3cd, b/479530787, b/478935063, b/478935063)
  • SpatialEnterTransition und SpatialExitTransition als @Immutable markiert (If1710, b/487757837)
  • Die SpatialGltfModel API ist für diesen Release als eingeschränkt gekennzeichnet, da zusätzliche Tests ausstehen. (Ibf003, b/466090694)
  • 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)
  • Entfernen des verworfenen SpatialLayoutSpacer (I7b36c)
  • Entfernen der verworfenen Padding API (If1886)
  • floatRange wurde zu den Bias-Werten hinzugefügt. Standardwert für LayoutDirection entfernt (I9d74e)

Fehlerkorrekturen

  • Codebeispiele und KDoc-Dokumentation für SpatialColumn, SpatialRow und SpatialCurvedRow hinzugefügt. (Iaf54f, b/495777633)

Version 1.0.0-alpha12

25. März 2026

androidx.xr.compose:compose:1.0.0-alpha12 und androidx.xr.compose:compose-testing:1.0.0-alpha12 sind veröffentlicht. Version 1.0.0-alpha12 enthält diese Commits.

API-Änderungen

  • Fügen Sie die SpatialGltfModel API und die SpatialGltfModelAnimation APIs hinzu, um glTFs zu rendern und Animationen zu steuern. SpatialGltfModelState wurde in AutoCloseable geändert und muss jetzt geschlossen werden, um die Ressourcen freizugeben. (I11fde, b/466065486, b/481379924). Die SpatialGltfModel API ist jedoch für diesen Release als eingeschränkt gekennzeichnet, da zusätzliche Tests ausstehen. (Ibf003, b/466090694)
  • Eine verworfene leere Überladung für SubspaceModifier.rotate wurde hinzugefügt. (Idceb6)
  • Die Funktion SpatialSmoothFeatheringEffect wurde in spatialSmoothFeatheringEffect umbenannt und in ein Draw-Modul verschoben. Der Standardwert für die weiche Auswahlkante von SpatialExternalSurface wurde auf „null“ aktualisiert, was der alten ZeroFeatheringEffect-Funktion entspricht. (I5fdaa, b/460426800)
  • onPointSourceParamsAvailable wurde entfernt. In naher Zukunft wird eine andere API für die Audioräumlichkeit verfügbar sein. (I86507, b/458513439)
  • RTL-Verhalten für Offset-Subspace-Modifikatoren hinzugefügt. Außerdem wurde absoluteOffset hinzugefügt, um die Layoutrichtung zu ignorieren. (I30e4b, b/474409165)

Version 1.0.0-alpha11

25. Februar 2026

androidx.xr.compose:compose:1.0.0-alpha11 und androidx.xr.compose:compose-testing:1.0.0-alpha11 sind veröffentlicht. Version 1.0.0-alpha11 enthält diese Commits.

Neue Funktionen

  • Parameter SuperSampling wird zu SpatialExternalSurfaces hinzugefügt (Icd4d1)

Bekannte Probleme

  • Ein Problem mit SurfaceEntity in SceneCore kann dazu führen, dass Apps beim Erstellen von Instanzen von SpatialExternalSurface abstürzen. Dieses Problem wurde in androidx.xr.scenecore:scenecore-*:1.0.0-alpha13, androidx.xr.compose:compose:1.0.0-alpha12 und nachfolgenden Releases behoben. Betroffene Apps sollten auf die neuesten Versionen aktualisiert werden.

API-Änderungen

  • Änderungen am Padding des Subspace-Modifikators für die Berücksichtigung der Layoutrichtung. (I53e25)
  • SpatialCapabilities ist jetzt versiegelt und kann nicht verlängert werden. (I07aef)
  • Die APIs SpatialRow und SpatialColumn, die einen generischen SpatialAlignment-Parameter akzeptieren, wurden verworfen. Verwenden Sie stattdessen die APIs, die entweder verticalAlignment oder horizontalAlignment für SpatialRow bzw. SpatialColumn akzeptieren. (Iec390)
  • Kombination von überladenen SubspaceLayout-Funktions-APIs (Idd30a)
  • SubspaceModifier.lookAtUser wurde in rotateToLookAtUser und der Parameter up in upDirection umbenannt. (Icafb8)
  • SpatialRow wird zu einer Inline-Funktion (Ia2f20)
  • SpatialColumn wurde zu einer Inline-Funktion gemacht (I681be)
  • Billboard API entfernt (Ib76cd)

Version 1.0.0-alpha10

28. Januar 2026

androidx.xr.compose:compose:1.0.0-alpha10 und androidx.xr.compose:compose-testing:1.0.0-alpha10 sind veröffentlicht. Version 1.0.0-alpha10 enthält diese Commits.

API-Änderungen

  • Entfernen der verworfenen API – ApplicationSubspace (Ia6596, b/468345186)
  • SpatialShape wurde zu einer versiegelten Schnittstelle aktualisiert (I7e3f5, b/460426800).
  • Entfernen verworfener APIs in SpatialAlignment. (Ib0b61, b/468011887)
  • SpatialLayoutSpacer wird eingestellt und SpatialSpacer eingeführt. (I2ebf3, b/466071383)
  • Die UserSubspace API wurde aktualisiert, um den Begriff „Lazy Locking“ durch „Soft Locking“ zu ersetzen. (I9ded1, b/464035984)

Version 1.0.0-alpha09

3. Dezember 2025

androidx.xr.compose:compose:1.0.0-alpha09 und androidx.xr.compose:compose-testing:1.0.0-alpha09 sind veröffentlicht. Version 1.0.0-alpha09 enthält diese Commits.

API-Änderungen

  • Hinzufügen von LookAtUser- und Billboard-Modifikatoren, damit Inhalte immer dem Nutzer zugewandt sind. (I49b99)
  • Es wurde die Möglichkeit hinzugefügt, InteractionPolicy auf SpatialExternalSurfaces und SpatialPanels festzulegen, um Klicks und andere 3D-Eingabeereignisse zu erkennen. (Iae155)
  • Überladung des Modifikators für Größe und requiredSize mit Breite, Höhe und Tiefe als Dp-Werte hinzugefügt. (I92f79)
  • Die Schnittstelle ParentLayoutParamsModifier erweitert jetzt DelegatableSubspaceNode. (I1a6d4)
  • ApplicationSubspace wurde zugunsten der Subspace API eingestellt.
    • Das Verhalten der Subspace API wurde geändert, sodass nur ein anwendungsweiter Subspace mit der empfohlenen Position und Skalierung bereitgestellt wird.
    • Die PlanarEmbeddedSubspace API wird eingeführt, um eingebettete Unterbereiche in 2D-Kontexten bereitzustellen. (Id3343)
  • Flag shouldAutoInvalidate zur SubspaceModifier.Node API hinzugefügt. (I93902)
  • Hinzugefügt: required(Size|Width|Depth|Height)In APIs, die es Entwicklern ermöglichen, die Größe eines @SubspaceComposable auf einen bestimmten Bereich zu beschränken, wobei die eingehenden Messbeschränkungen des übergeordneten Elements ignoriert werden. (Ifaa78)
  • SubspaceModifier.onSizeChanged wurde hinzugefügt. Damit erhalten Entwickler einen einfachen, fokussierten Callback, um zu reagieren, wenn sich die Größe eines @SubspaceComposable ändert. (I994f9)
  • Die Volume API wurde entfernt. Anstelle der Volume API sollte die SceneCoreEntity API verwendet werden. (I4162b)
  • SubspaceLayoutModifierNode.requestRelayout in invalidateMeasurement/invalidatePlacement aufteilen. (I14805)
  • Die SpatialGltfModel API wurde hinzugefügt, mit der Entwickler glTFs in Compose rendern können. (Icc91f)
  • Die zusammensetzbare API SpatialGltfModel wurde eingeführt, um glTFs einfach zu rendern (Iade67).

Fehlerkorrekturen

  • Ein Layoutfehler in SceneCoreEntity wurde behoben. Die Einschränkungen sollten jetzt ordnungsgemäß berücksichtigt werden. (I11bb8)
  • jxr-compose-Module auf Compile sdk = 34 herabgestuft (I2d5db)

Version 1.0.0-alpha08

22. Oktober 2025

androidx.xr.compose:compose:1.0.0-alpha08 und androidx.xr.compose:compose-testing:1.0.0-alpha08 sind veröffentlicht. Version 1.0.0-alpha08 enthält diese Commits.

API-Änderungen

  • ResizePolicy wurde geändert, um onResizeStart, onResizeUpdate und onResizeEnd zu akzeptieren. (I7e21f)

Fehlerkorrekturen

  • Absturz beim Zerstören einer Aktivität mit einem Subspace verhindern. (I595a1)

Version 1.0.0-alpha07

24. September 2025

androidx.xr.compose:compose:1.0.0-alpha07 und androidx.xr.compose:compose-testing:1.0.0-alpha07 sind veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.

API-Änderungen

  • Verbesserte KDocs für SpatialMainPanel. (I27b70, b/444467891)
  • SpatialArrangement wurde eingeführt, um untergeordnete Elemente entlang der Hauptachse in 3D-Layouts wie SpatialRow und SpatialColumn anzuordnen. Diese neue API bietet vertraute Anordnungsoptionen aus 2D Compose, darunter Start, End, Center, SpaceBetween, SpaceAround und SpaceEvenly, mit vollständiger Unterstützung für LTR- und RTL-Layoutrichtungen. (I7db38, b/436289959)
  • Es wurde eine Basisschnittstelle für SubspaceModifier.Node hinzugefügt, um die Typsicherheit und Nutzerfreundlichkeit von Erweiterungsschnittstellen zu verbessern, z. B.
    • CompositionLocalConsumerSubspaceModifierNode
    • LayoutCoordinatesAwareModifierNode
    • SubspaceLayoutModifierNode
    • CoreEntityNode (intern) (Iede00, b/440599394, b/440599394)
  • Einschränkung für SpatialExternalSurface aufheben (I33315, b/439646773)
  • Führen Sie SubspaceModifier in Subspace-Kompositionen ein und ersetzen Sie den Parameter „constraints“ durch SubspaceModifier mit größenbezogenen SubspaceModifiers. Wenn allowUnboundedSubspace „true“ ist, können Unterräume weiterhin unbegrenzte Einschränkungen haben. (Ib06e6, b/433331675)
  • Verschiebbare und in der Größe anpassbare SubspaceModifiers werden eingestellt, da DragPolicy() und ResizePolicy() jetzt Teil der SpatialPanel- und SpatialExternalSurface API sind (I397bf, b/437924639).
  • Unterstützung für LayoutDirection in räumlichen Layouts hinzugefügt. Bei Verwendung von SpatialAlignment werden Elemente jetzt sowohl in LTR- als auch in RTL-Kontexten korrekt positioniert. (I964bb, b/436300273)
  • Fügen Sie den Panel-APIs die Parameter „Resizable“ und „Movable“ hinzu, damit diese Verhaltensweisen nur auf unterstützte Container angewendet werden können. (Id491c)
  • sizeIn, widthIn, heightIn, depthIn SubspaceModifiers wurden hinzugefügt, mit denen Sie genaue Mindest- und Höchstwerte für Breite, Höhe und Tiefe festlegen können. (I1af09, b/433330761)

Version 1.0.0-alpha06

13. August 2025

androidx.xr.compose:compose:1.0.0-alpha06 und androidx.xr.compose:compose-testing:1.0.0-alpha06 sind veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.

Fehlerkorrekturen

  • Erstellt die ComposeXrOwnerLocals neu, wenn der Lebenszyklusinhaber gelöscht wird. (9123ce1)

Version 1.0.0-alpha05

30. Juli 2025

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

Neue Funktionen

  • Die Annotationsklasse SubspaceComposable wurde öffentlich gemacht. (Ic2a34, b/399432430)
  • Zwei neue SpatialExternalSurface-Composables, die 180- und 360-Grad-Sphären darstellen. (I40ef2, b/391705799)
  • SubspaceModifier.aspectRatio hinzugefügt (Ide5ab, b/399729509, b/414762147)
  • Die SceneCoreEntity API wurde hinzugefügt, um die Interoperabilität zwischen SceneCore und Compose for XR zu verbessern. (I50bb3, b/423020989)
  • GravityAlignedsubspace API zur Unterstützung der unskalierten And GravityAligned-Funktion bereitgestellt (I07359)

API-Änderungen

  • SpatialDialog() folgt der Konfiguration für SpatialDialogProperties.dismissOnBack-maliges Drücken. (Ib453b, b/416797132)
  • Aktualisieren Sie minimumPanelDimension auf eine neue Standardgröße von Dimensions(0.1f, 0.1f, 0.1f), da die Dimension in Metern angegeben wird. (Ib852a)
  • Unterbereiche und Orbiters behalten jetzt ihren internen Status im Home Space und wenn die App im Hintergrund ausgeführt wird. Im Home Space-Modus richtet Subspace die Szene weiterhin ein, um den Wechsel zum Full Space-Modus vorzubereiten. (I40317, b/416037751)
  • SpatialDialogs behält jetzt den Status bei, wenn die App im Hintergrund ausgeführt wird. (I6aa56)
  • ApplicationSubspace übernimmt jetzt die empfohlene Skalierung und Position vom System. (I4565f, b/418834194)
  • Eine bessere Fehlermeldung wurde hinzugefügt und der Fehler wird früher ausgelöst, wenn ein SubspaceComposable in einem Nicht-SubspaceComposable-Kontext verwendet wird. (Iee2ae, b/416484684)
  • ExperimentalSubspaceVolumeApi wird von „Warnung“ auf „Fehler“ aktualisiert, da Warnungen bei der falschen Verwendung von composable APIs oft übersehen werden. (I427aa, b/424864286)
  • Der Unterraum und ApplicationSubspace sind jetzt durch recommendedContentBoxInFullSpace eingeschränkt. Bisher war es durch das Sichtfeld von SpatialUser eingeschränkt. (I41015, b/423074142)
  • SpatialElevation wurde aktualisiert, um die Mindestgröße zu verwenden und keine hartcodierte Größe mehr zu verwenden (I2dbe6, b/427785338)
  • Aktualisierung der Scrim-Anzeige für SpatialAcitivityPanel, wenn eine Schlüsselvariable geändert wird. (I0f64d, b/427999029)
  • Entfernen Sie VolumeConstraints.Unbounded und legen Sie stattdessen die Standardeinschränkungswerte auf den entsprechenden Wert fest. (Ie24ec, b/407938414)
  • SpatialFeatheringSize ist nicht mehr öffentlich (I1c15b, b/399432430)
  • Placeable für XR wurde in SubspacePlaceable umbenannt, um es von Placeable für Compose zu unterscheiden. (I74874)
  • Orbiter-Einstellungen werden entfernt und shouldRenderInNonSpatial wird als neuer Parameter hinzugefügt. Außerdem wird die Klasse EdgeOffset entfernt und orbiterOffsetType als neuer Parameter hinzugefügt, um Orbiter()-Funktionen zu konsolidieren. Außerdem wurde OrbiterEdge in ContentEdge umbenannt. (Iebf3d)
  • Measurable wurde in SubspaceMeasurable umbenannt, um den Typ vom Measurable-Typ von Compose zu unterscheiden. (I9726c)
  • MeasureResult in SubspaceMeasureResult umbenennen (I9f34d)
  • Die setSubspaceContent API wurde entfernt. Verwenden Sie stattdessen setContent von Compose mit einer Subspace-Komponierbare Funktion. (Ifff4c, b/421427391, b/421427391)
  • MeasurePolicy wird in SubspaceMeasurePolicy umbenannt. (I37a9b, b/422553904)
  • Wandeln Sie SubspaceSemanticsInfo in eine versiegelte Schnittstelle um, da wir ohne die Standardwerte keine Mitglieder hinzufügen können. (I372f9, b/423704068)
  • Dokumentation zu SpatialExternalSurface aktualisiert, ContentSecurityLevel in SurfaceProtection umbenannt (I3c460, b/420982808)
  • Überladener Konstruktor für den Modifikator „movable“ bereitgestellt, der das Verankern ermöglicht. (Ic0c70)
  • Es wurden weitere Positionsanbieter für Kurzinfos hinzugefügt, sodass Entwickler jetzt festlegen können, ob die Kurzinfo über, unter, links oder rechts vom Anker platziert wird. Es wurde eine API hinzugefügt, die eine Form für Carets akzeptiert, sodass mehr benutzerdefinierte Formen bereitgestellt werden können. (Ie513c, b/374766087, b/418854637)
  • CoreEntity wurde als PublishedApi entfernt (Ifee05)

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem SpatialDialog beim Rendern blinkte. (Ife73c, b/401619909)
  • Ein Problem wurde behoben, bei dem SpatialDialog das Aktivitätssteuerfeld nicht abdunkeln konnte. (I8ca6c, b/367442109)
  • Fehler behoben, bei dem im XR-Dialogfeld einige Inhalte nicht angezeigt wurden (I17cd5, b/418062437)
  • Ein Problem wurde behoben, bei dem SpatialPopup geschlossen wurde, wenn auf den Inhalt geklickt wurde. (If262c, b/417245722)
  • Ein Problem wurde behoben, bei dem das SpatialPanel beim Verketten von resizable().movable() nicht korrekt auf die neue Größe angepasst wurde. (I02ee3, b/422264230)
  • Es wurde ein Problem behoben, bei dem sich topBar mit dem Menü in SpatialComposeVideoPlayer überschnitt. (Id33bc, b/427168167)
  • Fester Eckradius wird nicht gerendert (I975fe, b/428261830)

Version 1.0.0-alpha04

7. Mai 2025

androidx.xr.compose:compose:1.0.0-alpha04 und androidx.xr.compose:compose-testing:1.0.0-alpha04 sind veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Die Schnittstelle CompositionLocalConsumerSubspaceModifierNode wurde hinzugefügt, damit benutzerdefinierte SubspaceModifier-Typen auf lokale Werte der Komposition zugreifen können.
  • Es wurde eine neue SpatialPanel API hinzugefügt, die dem Compose-Implementierungsstil AndroidView folgt. Die vorherige ViewBased SpatialPanel wird eingestellt.
  • Das Companion-Objekt VolumeConstraints.Unbounded wurde hinzugefügt, das unbegrenzte Einschränkungen darstellt.
  • SubspaceModifier.onPointSourceParams wurde hinzugefügt, um eine Spatial Audio-Quelle zuzulassen.
  • Es wurde ein öffentliches ApplicationSubspace hinzugefügt, das optionale VolumeConstraints bietet, um einen 3D-Bereich zu definieren, in dem die App räumliche Inhalte rendern kann. Wenn keine Einschränkungen angegeben sind, wird der Subspace standardmäßig durch das aktuelle Sichtfeld des SpatialUser in Breite und Höhe begrenzt. Nutzer können Einschränkungen angeben, die verwendet werden sollen, wenn das Sichtfeld nicht bestimmt werden kann. Andernfalls werden die Standardwerte für die Breite und Höhe des Sichtfelds verwendet.
  • SpatialExternalSurface wurde hinzugefügt, mit dem stereoskopische Inhalte gerendert werden können. SpatialExternalSurface kann mit Modifikatoren (außer Alpha) und einem Effekt für weiche Kanten angepasst werden.
  • Es wurde ein neuer pointerHoverIcon-Subspace-Modifikator hinzugefügt, mit dem Nutzer das Symbol für den räumlichen Zeiger festlegen können.

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)
  • Die Zurück-Funktion funktioniert jetzt auf räumlichen Bereichen ohne eingebettete Aktivitäten. Damit die Zurück-Funktion funktioniert, müssen Sie android:enableOnBackInvokedCallback="true" im Android-Manifest angeben.
  • Die Zurück-Geste funktioniert jetzt auch bei räumlichen Dialogfeldern. Damit die Zurück-Schaltfläche funktioniert, müssen Sie android:enableOnBackInvokedCallback="true" im Android-Manifest angeben.
  • Compose- und View-basierte SpatialPanels können jetzt anhand ihres Inhalts skaliert werden.
  • Entwickler können jetzt eigene benutzerdefinierte SpatialElevationLevel-Werte festlegen und sind nicht mehr auf die vordefinierten Stufen beschränkt.
  • Die Höhe des Orbiters kann jetzt über den Parameter elevation angepasst werden.
  • Der Unterbereich kann jetzt standardmäßig durch das Sichtfeld des SpatialUser in Breite und Höhe begrenzt werden. Wenn das Sichtfeld nicht bestimmt werden kann, werden die Standardwerte für die Breite und Höhe des Sichtfelds verwendet.
  • Dem Movable-Modifikator wurden die neuen Callbacks onMoveStart und onMoveEnd hinzugefügt. Die Callbacks onMoveStart und onMoveEnd werden aufgerufen, wenn der Nutzer beginnt und aufhört, ein Subspace-Composable mit dem Modifikator „movable“ zu verschieben.
  • Der Parameter name wurde aus räumlichen APIs wie SpatialRow und SpatialPanel entfernt. Verwenden Sie zum Debuggen von räumlichen Compose-Bäumen stattdessen SubspaceModifier.testTag.
  • Eine nicht unterstützte Überladung von SpatialPopup, die nur spatialElevationLevel und content enthält, wurde entfernt. Verwenden Sie die Schnittstelle, die onDimissRequest unterstützt.
  • Der onPoseChange-Callback aus dem Movable-Modifikator wurde entfernt. Verwenden Sie stattdessen onMove.
  • SubspaceModifiers-Effekte werden nicht mehr angewendet, wenn sie getrennt sind oder gerade getrennt werden.
  • Die vorhandene SpatialRow API wurde in SpatialRow und SpatialCurvedRow aufgeteilt. Wenn Sie zuvor den Parameter curveRadius von SpatialRow verwendet haben, verwenden Sie jetzt stattdessen SpatialCurvedRow, der dasselbe Verhalten bietet.
  • MainPanel und ActivityPanel haben keine Titelleisten mehr, wenn sie auf einem ähnlich aktuellen System-Image ausgeführt werden.
  • Alpha- und Skalierungsmodifikatoren können jetzt gestapelt werden. Ihre Werte werden multipliziert, um den endgültigen Alpha- oder Skalierungswert zu erhalten.
  • Der onPoseChange-Callback des Movable-Modifikators wurde optimiert, um eine flüssigere Bewegung der Pose zu ermöglichen.
  • Die Modifikatoren für das Verschieben und Ändern der Größe führen ihre Callbacks jetzt im Hauptthread aus, damit Statusänderungen eine Neuzusammensetzung auslösen.
  • Den Layout- und Messphasen wurde eine Statusbeobachtung hinzugefügt, damit Statusänderungen in SubspaceLayout ein neues Layout auslösen.
  • Die Aktualisierung der Modifikatorkette wurde optimiert, um vorhandene Modifikatoren besser wiederzuverwenden.

Fehlerkorrekturen

  • Scrimming wurde beendet, wenn ein SpatialDialog angezeigt wird. (Ic4594)
  • Anfragen zur Neuanordnung, die gestellt werden, während Modifikatorknoten getrennt sind, werden jetzt ignoriert.
  • Die durch die Modifikatoren „Movable“ und „Resizable“ ausgelösten Phasen für das Neulayout wurden entfernt.
  • Ein Absturz im MainPanel()-Composable wurde behoben, der auftrat, wenn eine der Dimensionen entweder direkt oder während einer Layoutberechnung, z.B. einer SpatialRow/SpatialColumn-Berechnung, auf null gesetzt wurde. Der Bereich wird jetzt stattdessen ausgeblendet. Dieser Fix behebt speziell Abstürze während der Layoutphase. Das Ändern der Größe des Bereichs auf null durch Nutzerinteraktion wird separat behandelt. Dem ausgeblendeten Bereich fehlen UI-Affordanzen.
  • Problem mit maintainAspectRatio aus dem Modifikator „resizable“ behoben. Das Seitenverhältnis sollte jetzt beibehalten werden.
  • Ein Problem mit verschachtelten Unterbereichen wurde behoben, bei dem sie für einen einzelnen Frame falsch positioniert wurden.
  • Ein Problem wurde behoben, durch das abgerundete Ecken manchmal nicht angewendet wurden, obwohl sie es hätten sein sollen.
  • NestedSubspaces wird nicht mehr für einen Frame an der falschen Stelle angezeigt.

Version 1.0.0-alpha03

26. Februar 2025

androidx.xr.compose:compose:1.0.0-alpha03 und androidx.xr.compose:compose-testing:1.0.0-alpha03 wurden ohne nennenswerte Änderungen seit der letzten Alphaversion veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.

Version 1.0.0-alpha02

12. Februar 2025

androidx.xr.compose:compose:1.0.0-alpha02 und androidx.xr.compose:compose-testing:1.0.0-alpha02 sind veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Das Aktivitätsfeld kann jetzt seine Inhalte abdunkeln, wenn ein räumlicher Dialog aktiviert wird.
  • Die Orbiter API kann jetzt in SubspaceComposable-Kontexten verwendet werden und hängt Orbiters an das nächstgelegene SubspaceLayout-basierte zusammensetzbare übergeordnete Element an.
  • LayoutCoordinatesAwareModifierNode wurde eingeführt, um benutzerdefinierte positionierungsbasierte Modifikatoren zu ermöglichen.
  • Lebenszyklusmethoden zum Anhängen/Trennen zu SubspaceModifier.Node hinzugefügt.
  • scaleWithDistance wurde dem Modifikator „movable“ hinzugefügt. Wenn scaleWithDistance aktiviert ist, wird das verschobene Unterraumelement vergrößert oder verkleinert. Außerdem wird die explizite Skalierung beibehalten, die vor dem Verschieben vorhanden war.

API-Änderungen

  • SessionCallbackProvider wurde zugunsten von SpatialCapabilities entfernt.

Sonstige Änderungen

  • minSDK wurde auf 24 reduziert. Für alle Jetpack XR APIs ist zur Laufzeit weiterhin API 34 erforderlich.
  • Die Konstruktoren Orbiter EdgeOffset.inner, EdgeOffset.outer und EdgeOffset.overlap sind keine @Composable-Methoden mehr und können daher in nicht kompositionsfähigen Kontexten verwendet werden.
  • Die räumlichen Höhenstufen wurden aktualisiert, um der neuesten UX-Spezifikation zu entsprechen.
  • Implementieren Sie die SubspaceSemanticsInfo-Schnittstelle in MeasurableLayout.
  • SubspaceModifierElement wurde in SubspaceModifierNodeElement umbenannt.

Diverse Fehlerkorrekturen

  • Fehlerbehebungen zur Stabilisierung der SubspaceModifier-Bestellung. SubspaceModifier sollte zuverlässiger funktionieren. Die Modifikatoren „Offset“, „Rotate“, „Scale“, „Movable“ und „Resizable“ sollten jetzt in beliebiger Reihenfolge verwendet werden können.

Version 1.0.0-alpha01

12. Dezember 2024

androidx.xr.compose:compose-*1.0.0-alpha01 ist veröffentlicht.

Funktionen der ersten Version

  • Erste Entwicklerversion von Jetpack Compose für XR. Verwenden Sie vertraute Compose-Konzepte wie Zeilen und Spalten, um räumliche UI-Layouts in XR zu erstellen, unabhängig davon, ob Sie eine vorhandene 2D-App zu XR portieren oder eine neue XR-App von Grund auf erstellen. Diese Bibliothek bietet Subspace- und räumliche Composables, z. B. räumliche Bereiche und Orbiter, mit denen Sie Ihre vorhandene 2D-Compose- oder ansichtsbasierte UI in einem räumlichen Layout platzieren können. Es wird das Volume-Unterraum-Composable eingeführt, mit dem Sie SceneCore-Entitäten wie 3D-Modelle relativ zu Ihrer UI platzieren können. Weitere Informationen finden Sie in diesem Entwicklerleitfaden:

    • Subspace: Dieses Composable kann an einer beliebigen Stelle in der UI-Hierarchie Ihrer App platziert werden. So können Sie Layouts für 2D- und räumliche UIs beibehalten, ohne den Kontext zwischen Dateien zu verlieren. So lassen sich Elemente wie die vorhandene App-Architektur leichter zwischen XR und anderen Formfaktoren teilen, ohne dass der Status über den gesamten UI-Baum hinweg angehoben oder die App neu strukturiert werden muss.

    • SpatialPanel: Ein SpatialPanel ist ein Subspace-Composable, mit dem Sie App-Inhalte anzeigen können, z. B. Videowiedergabe, Standbilder oder andere Inhalte.

    • Orbiter: Ein Orbiter ist eine räumliche UI-Komponente. Sie ist so konzipiert, dass sie an einem entsprechenden räumlichen Bereich angebracht werden kann, und enthält Navigations- und Kontextaktionen, die sich auf diesen räumlichen Bereich beziehen. Wenn Sie beispielsweise ein räumliches Steuerfeld zum Anzeigen von Videoinhalten erstellt haben, können Sie in einem Orbiter Steuerelemente für die Videowiedergabe hinzufügen.

    • Volume: Platzieren Sie SceneCore-Entitäten wie 3D-Modelle relativ zu Ihrer Benutzeroberfläche.

  • Spatial Layout: Sie können mehrere räumliche Bereiche erstellen und sie mit SpatialRow, SpatialColumn, SpatialBox und SpatialLayoutSpacer in einem Spatial Layout platzieren. Verwenden Sie SubspaceModifiers, um das Layout anzupassen.

  • Spatial-UI-Komponenten: Diese Elemente können in Ihrer 2D-UI wiederverwendet werden. Ihre räumlichen Attribute sind nur sichtbar, wenn Spatial-Funktionen aktiviert sind.

    • SpatialDialog: Das Steuerfeld wird in der Z-Tiefe leicht nach hinten verschoben, um ein erhöhtes Dialogfeld anzuzeigen.
    • SpatialPopUp: Das Steuerfeld wird in der Z-Tiefe leicht nach hinten verschoben, um ein erhöhtes Pop-up anzuzeigen.
    • SpatialElevation: SpatialElevationLevel kann festgelegt werden, um eine Erhöhung hinzuzufügen.
  • SpatialCapabilities: Die räumlichen Funktionen können sich ändern, wenn Nutzer mit Ihrer App oder dem System interagieren, oder sogar von Ihrer App selbst geändert werden, z. B. beim Wechsel in den Home Space oder Full Space. Um Probleme zu vermeiden, muss Ihre App LocalSpatialCapabilities.current prüfen, um festzustellen, welche APIs in der aktuellen Umgebung unterstützt werden. isSpatialUiEnabled: Spatial-UI-Elemente (z.B. SpatialPanel) isContent3dEnabled: 3D-Objekte isAppEnvironmentEnabled: Die Umgebung isPassthroughControlEnabled: Ob die Anwendung den Passthrough-Status steuern kann oder nicht isSpatialAudioEnabled: Spatial Audio

Bekannte Probleme

  • Derzeit ist eine minSDK von 30 erforderlich, um Jetpack Compose für XR zu verwenden. Als Problemumgehung können Sie den folgenden Manifesteintrag <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> hinzufügen, um mit einer minSDK von 23 zu erstellen und auszuführen.
  • Für Jetpack XR-Apps muss derzeit die Berechtigung android.permission.SCENE_UNDERSTANDING im AndroidManifest angefordert werden.
  • Wenn eine App über das Attribut PROPERTY_XR_ACTIVITY_START_MODE in ihrem Manifest direkt im Full Space gestartet wird, werden Aktivitäten/Anwendungen zuerst im Home Space geöffnet, bevor sie in den Full Space wechseln.
  • glTFs in Volume-Kompositionen können anfangs an der falschen Stelle flackern.
  • Wenn Sie ein SpatialDialog-Element in einem Bereich verwenden, der stark verschoben wurde, werden die Inhalte in die falsche Richtung verschoben.