Jetpack Compose na potrzeby XR

Deklaratywnie twórz przestrzenne układy interfejsu, które wykorzystują możliwości przestrzenne Androida XR.
Najnowsza aktualizacja Wersja stabilna Wersja kandydująca do publikacji Wersja beta Wersja alfa
23 września 2026 r. - - 1.0.0-beta01 -

Deklarowanie zależności

Aby dodać zależność od XR Compose, musisz dodać do projektu repozytorium Maven Google. Więcej informacji znajdziesz w repozytorium Maven Google.

Dodaj zależności dotyczące potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:

Odlotowe

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

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

Kotlin

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

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

Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.

Prześlij opinię

Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nową kartę, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz oddać głos na istniejący problem, klikając przycisk gwiazdki.

Tworzenie nowego problemu

Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.

Wersja 1.0

Wersja 1.0.0-beta01

23 września 2026 r.

Publikacja androidx.xr.compose:compose:1.0.0-beta01 i androidx.xr.compose:compose-testing:1.0.0-beta01 Wersja 1.0.0-beta01 zawiera te zmiany.

Zmiany w interfejsie API

  • Usunięto wycofaną funkcję DragPolicy. Użyj w zamian zasady SubspaceModifier.movable(). (I108d4)
  • Usunęliśmy wycofaną funkcję ResizePolicy i jej użycie w SpatialPanel i SpatialExternalSurface. Usuń wycofaną funkcję SubspaceModifier.resizable. Zamiast niej użyj nowej zasady SubspaceModifier.resizable z nowym warunkiem ResizePolicy. (I59e6b)
  • Dodano parametr isPitchUpdateEnabled, który umożliwia niezależne włączanie i wyłączanie śledzenia wysokości dźwięku. (Ie9e86)
  • Usunięto dopuszczalność wartości null w przypadku pola pitchLimits i zmieniono nazwę pola PitchLimits.UNCONSTRAINED na PitchLimits.FullRange. (I0154f)
  • ExposedDropdownMenu jest teraz funkcją rozszerzenia w ExposedDropdownMenuBoxScope, a nie elementem członkowskim. Może być konieczne zaktualizowanie kodu za pomocą nowego importu. (Ie8a65)
  • Usunięto wycofaną klasę SurfaceProtection. Użyj w zamian zasady SpatialExternalSurfaceProtection. (Iab2c6)
  • Funkcja Orbiter, która przyjmuje wartość OrbiterPoseProvider, została wycofana na rzecz funkcji, która używa wartości SpatialAlignment. (I4d12b)
  • SpatialActivityPanel wymaga teraz SpatialActivityPanelController (utworzonego za pomocą rememberSpatialActivityPanelController) do uruchamiania i zarządzania osadzonymi aktywnościami. (Id25c6)
  • Usunięto parametr upDirection z funkcji rotateToLookAtUser i dodano parametry ograniczeń obrotu (isYawUpdateEnabled i pitchLimits). (I1370a)

Poprawki błędów

  • Rozwiązano różne problemy z InteractionPolicy. Aplikacja ulegała awarii, jeśli zdarzenie wejściowe wystąpiło w momencie, gdy element kompozycyjny lub element podrzędny (np. Orbiter) inicjował sekwencję usuwania. Rozwiązuje też problem, w którym dziecko otrzymywało zdarzenia najechania kursorem. (Ifc477)
  • Zmniejszyliśmy rozmiar panelu w RotateToLookAtUserActivity, aby zapobiec przycinaniu na urządzeniach o mniejszym polu widzenia. (I8d672)

Znane problemy

  • W przypadku paneli Compose XR występuje problem polegający na tym, że utworzenie wielu paneli w ramach jednej aktywności może spowodować uszkodzenie wyświetlanych treści nawet po usunięciu paneli.

Wersja 1.0.0-alpha17

12 sierpnia 2026 r.

Publikacja androidx.xr.compose:compose:1.0.0-alpha17 i androidx.xr.compose:compose-testing:1.0.0-alpha17 Wersja 1.0.0-alpha17 zawiera te zmiany.

Zmiany w interfejsie API

  • Usuń klasę wartości Meter, w Scenecore zastępuje ją klasa virtualPixelDensity. (I690ee)
  • Interfejs SpatialGltfModel API ma obecnie charakter eksperymentalny i musisz wyrazić zgodę na jego używanie. (I4557e)
  • Ustawienie system resizable jako dopuszczającego wartość null (Ib0093)
  • Udostępniono Density w SubspaceSemanticsInfo na potrzeby testowania. (I2e826)
  • Zmień nazwę opcji domyślnej ResizePolicy na system i dodaj nową opcję Default bez parametrów (Ic8b16).
  • Oznacz funkcję FollowTarget jako eksperymentalną. Cały interfejs FollowingSubspace API ma teraz charakter eksperymentalny. (Id4ee3)
  • Usunięto interfejsy API GltfAnimation (Ic2894)
  • Zmieniono nazwę metody sparametryzowanej MovePolicy.default() na MovePolicy.system(). Dodaliśmy właściwość val MovePolicy.Default, która reprezentuje standardowe domyślne zachowanie ruchu. (Iedcc9)
  • Rozwiń ExperimentalMoveAnchorPolicy wymagania dotyczące zgody użytkownika na PlaneSemantic i PlaneOrientation (Ief927).
  • Usuwanie urządzenia resetMins z konta VolumeConstraints.offset (Ib2f2f)
  • Usunięto wycofaną funkcję SceneCoreEntitySizeAdapter. (Ib6722)
  • Usunięto wycofane przeciążenie Subspace z parametrem allowUnboundedSubspace. (I8e97f)
  • Usunięto przeciążenie modyfikatora semantyki, które zostało wycofane. (I4ac10)

Poprawki błędów

  • Rozwiązaliśmy problem polegający na tym, że elementy podrzędne elementu Composable z dołączonym elementem InteractionPolicy wywoływały zdarzenia wejściowe (Icdba6).

Wersja 1.0.0-alpha16

15 lipca 2026 r.

Publikacja androidx.xr.compose:compose:1.0.0-alpha16 i androidx.xr.compose:compose-testing:1.0.0-alpha16 Wersja 1.0.0-alpha16 zawiera te zmiany.

Zmiany w interfejsie API

  • Usuwanie interfejsów API ComponentOverride (I820c4)
  • Interfejsy API GltfAnimation i SpatialGltfModelAnimation zostały oznaczone jako eksperymentalne. Niektóre właściwości zostały przekształcone w funkcje pobierające. (I8d689, b/524771027)
  • Poprawiliśmy stałe zachowanie ogólnej gęstości, ustalając stały przelicznik między metrami a pikselami. Wycofany plik Meter.kt, Session.scene.virtualPixelDensity, może być teraz używany jako alternatywa. (I122ff, b/430097855, b/474168798)
  • Zaktualizuj modyfikator o zmienianym rozmiarze, aby używać ResizePolicy zamiast 2 modyfikatorów (I7fb0f, b/496257436, b/519672992)
  • Dodano parametr tolerancji: Dp = Dp(0.5f) do wszystkich publicznych asercji równości wymiarów i pozycji reprezentacji zmiennoprzecinkowej w SubspaceAssertions.kt. Domyślne działanie tolerancji (0.5.dp) jest w pełni udokumentowane. (I266cb, b/521491915)
  • Dodano ruchome przeciążenie z parametrem movePolicy i wycofano parametry transformingMovable i movable (Ic88c1, b/481781189)
  • Dodano nowe nieinteraktywne warianty standardowego elementu listy i elementu listy podzielonej na segmenty, które są zgodne ze specyfikacjami Material Expressive. Wersja nieekspresywna została wycofana. (Ide4de, b/491994186)
  • W przypadku Subspace parametr allowUnboundedSubspace został wycofany i jest ukryty. Nieograniczone działanie można teraz uzyskać, używając modyfikatora podprzestrzeni SubspaceModifier.requiredSizeIn(maxWidth = Dp.Infinity, maxHeight = Dp.Infinity, maxDepth = Dp.Infinity). Parametr allowUnboundedSubspace został usunięty z funkcji FollowingSubspace. (Ia72ae, b/433624021)
  • Przekonwertowano Session.create na funkcję zawieszania. (I5d27f)
  • Dodano SubspaceModifier.spatializedAudioOutput, co umożliwia przestrzenne odtwarzanie dźwięku za pomocą ExoPlayer lub SoundEffectPlayer (I46697, b/489421980, b/497867019).
  • Zaktualizowano ComponentActivity.requestHomeSpace() i requestFullSpace(), aby zwracać SpaceRequestResult w celu weryfikacji stanu. (If1672)
  • Zaktualizowano AnchorEntity na AnchorSpace (Ifa95e, b/513619219)
  • Metoda fromResource bez ograniczeń z SpatialGltfModelSource (I1f5a1, b/503047416)
  • Elementy SubspaceSemanticsMatcher są publiczne: właściwość description, metody fabryczne towarzyszące (expectValue, keyIsDefined, keyNotDefined), funkcje składowe (matches, matchesAny) i operatory (and, or, not). (I972a4, b/460427288)
  • Zaktualizowano SubspaceModifier.semantics, SubspaceModifier.testTag, SubspaceSemanticsInfo, SubspaceSemanticsModifierNode, aby korzystać z wyselekcjonowanych typów semantyki przestrzennej. (I80dea, b/460427288)
  • Zmieniliśmy nazwę interfejsu position na align w SpatialAlignment i usunęliśmy poszczególne metody przesunięcia kierunkowego na rzecz ujednoliconego interfejsu align API. (I9bdb2, b/479805937)
  • Usunięto wycofane interfejsy API trybu przestrzeni z SpatialConfiguration. (I1ef5c, b/458712461)
  • Wprowadzono SubspaceSemanticsConfiguration. Jest to konfiguracja właściwości semantycznych węzła przestrzennego. Ta klasa bezpiecznie udostępnia metody zapytań dotyczące semantyki 3D bez ujawniania podstawowych funkcji semantyki 2D zewnętrznym konsumentom. (Id025e, b/460427288)
  • Wprowadzono SubspaceSemanticsPropertyReceiver: dedykowany kod, który ogranicza właściwości kontenera układu 3D do prawidłowych pól (początkowo testTag i contentDescription). (I5cf5c, b/460427288)

Poprawki błędów

  • Zmieniliśmy ustawienie hasContentDescription modyfikatora semantycznego na domyślne dopasowywanie podciągów. (I08214)
  • Dodano ograniczone FollowBehavior.ExponentialDecay(), które zapewnia łagodne śledzenie oparte na fizyce sprężystości. (I7449c, b/485639909, b/500493335)

Będzie to miało wpływ na większość interfejsów API. W szczególności LocalSession CompositionLocal i wszystkie CompositionLocals, które są zależne od LocalSession (np. LocalSpatialConfiguration, LocalSpatialCapabilities itp.), będą teraz rozpoznawane jako null lub jego wersje inne niż XR przed zainicjowaniem Session.

Gdy Session będzie dostępny, zostanie wywołana ponowna kompozycja z prawidłowym stanem. (I0cfa4, b/514712835, b/514712835)

  • Uściśliliśmy dokumentację dotyczącą funkcji ComponentActivity.requestHomeSpace i ComponentActivity.requestFullSpace w zakresie zawieszania, anulowania i jednoczesności. Zaktualizowano testy weryfikujące propagację CancellationException. (I22f75, b/493289528)

Wersja 1.0.0-alpha15

17 czerwca 2026 r.

Publikacja androidx.xr.compose:compose:1.0.0-alpha15 i androidx.xr.compose:compose-testing:1.0.0-alpha15 Wersja 1.0.0-alpha15 zawiera te zmiany.

Zmiany w interfejsie API

  • Wycofaliśmy ResizePolicy i stary modyfikator zmiany rozmiaru, zastępując go nowym przeciążeniem SubspaceModifier.resizable i SubspaceModifier.transformingResizable. (I9e4bc)
  • Zaktualizowane interfejsy API SpatialGltfModel: dodano obsługę wczytywania modeli z zasobów za pomocą SpatialGltfModelSource.fromResource. Zmieniono nazwę parametru speed na playbackSpeed w SpatialGltfModelAnimation i dodano metodę resume(). SpatialGltfModelStatus.Loaded i Loading są teraz obiektami. (I523de)
  • Oznaczono interfejs API rotateToLookAtUser jako eksperymentalny. (I86c16)
  • Przeniesiono i zmieniono nazwę chronionej zmiennej targetCurrentPose na zmienną lokalną currentTargetPoseMeter. (Ia557c)
  • Zaktualizuj dokumenty SpatialPanel i SpatialExternalSurface, aby uwzględnić w nich informacje o tym, gdzie obiekt jest renderowany w ramach rozmiaru układu (I72104)
  • Zamknięto SpatialGltfModellogikę wczytywania w SpatialGltfModelState i wyjaśniono zachowanie w przypadku błędu. (Ibe98b)
  • Wyjaśniono depth w SubspaceModifer.size kdocs (I0f84f)

Wersja 1.0.0-alpha14

19 maja 2026 r.

Publikacja androidx.xr.compose:compose:1.0.0-alpha14 i androidx.xr.compose:compose-testing:1.0.0-alpha14 Wersja 1.0.0-alpha14 zawiera te zmiany.

Zmiany w interfejsie API

  • Wprowadzono transformingMovable do obsługi domyślnego ruchu 3D przez system oraz nowe przeciążenie dla movable do obsługi niestandardowych zachowań ruchu. (I50960)
  • Pole „SpatialGltfModel.fromData()” zostało usunięte. (I4d083)
  • Dodaliśmy nowy interfejs węzła modyfikatora SubspaceMeasuredSizeAwareModifierNode, który zapewnia wywołanie zwrotne onRemeasured po przejściu pomiaru. SubspaceLayoutAwareModifierNode rozszerza teraz ten nowy interfejs. Modyfikator onSizeChanged został zaktualizowany, aby używać onRemeasured. Dzięki temu wywołanie zwrotne jest uruchamiane bezpośrednio po pomiarze, a nie po umieszczeniu. (Iafbae)
  • Zaktualizowano InteractionPolicy do Interface (I0ff30)
  • Zaktualizowano Compose compileSdk do interfejsu API 37. Oznacza to, że podczas korzystania z Compose wymagana jest minimalna wersja AGP 9.2.0. (Id45cd)
  • Zaktualizowano dokumenty kdocs Size (Iefa9a)

Wersja 1.0.0-alpha13

6 maja 2026 r.

Publikacja androidx.xr.compose:compose:1.0.0-alpha13 i androidx.xr.compose:compose-testing:1.0.0-alpha13 Wersja 1.0.0-alpha13 zawiera te zmiany.

Zmiany w interfejsie API

  • Interfejs Orbiter API oczekuje dodatkowych zmian, dlatego zalecamy pomijanie powiadomień o wycofaniu Orbiterów i śledzenie zmian w Orbiterach w nadchodzących wersjach.
  • Osoby, które używają SceneCoreEntity do renderowania plików glTF, powinny przekazywać wartość session.scene.activitySpace do parametru parent wywołania GltfModel.create, aby mieć pewność, że pliki glTF będą renderowane.
  • Dodanie interfejsu SpatialGltfModel API, który umożliwi programistom dodawanie plików GLTF do aplikacji Compose For XR. Deweloperzy mogą też wysyłać zapytania dotyczące animacji i węzłów w modelach glTF. (I8b542, b/495422586)
  • Zmiany SceneCoreEntitySizeAdapter z klasy na interfejs (I5a784, b/475292310)
  • Zmieniono nazwę SurfaceProtection na SpatialExternalSurfaceProtection. Zaktualizowano dokumenty SpatialExternalSurface w usłudze KDocs (Ifad0a, b/485231082)
  • Wycofanie currentWindowAdaptiveInfo i wprowadzenie jego wersji 2 (I40ecf, b/424442112)
  • Modyfikator resizable jest teraz publiczny i ma zastosowanie do grup (np. SpatialRow). (I2bcf6, b/348483527, b/489753178, b/479530787)
  • Modyfikator movable jest teraz publiczny. Ten modyfikator działa obecnie dobrze w przypadku SpatialPanels i SpatialExternalSurface, ale zamierzamy zapewnić jego prawidłowe działanie w przypadku wszystkich SubspaceComposables. (I9a3cd, b/479530787, b/478935063, b/478935063)
  • SpatialEnterTransition i SpatialExitTransition oznaczone jako @Immutable (If1710, b/487757837)
  • Interfejs SpatialGltfModel API jest oznaczony jako objęty ograniczeniami w tej wersji do czasu przeprowadzenia dodatkowych testów. (Ibf003, b/466090694)
  • Zmieniono nazwę DeviceTrackingMode.LAST_KNOWN na SPATIAL_LAST_KNOWN (z wycofanym elementem zastępczym), dodano INERTIAL_LAST_KNOWN do śledzenia 3DoF i dodano TRACKING_DEGRADED do TrackingState. (Ie661c, b/445466590)
  • Usuwanie wycofanego parametru SpatialLayoutSpacer (I7b36c)
  • Usunięcie wycofanego interfejsu API dopełnienia (If1886)
  • Dodano floatRange do wartości odchylenia. Usunięto wartość domyślną atrybutu LayoutDirection (I9d74e)

Poprawki błędów

  • Dodaliśmy przykłady kodu i dokumentację KDoc dla SpatialColumn, SpatialRow i SpatialCurvedRow. (Iaf54f, b/495777633)

Wersja 1.0.0-alpha12

25 marca 2026 r.

Publikacja androidx.xr.compose:compose:1.0.0-alpha12 i androidx.xr.compose:compose-testing:1.0.0-alpha12 Wersja 1.0.0-alpha12 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodaj interfejs SpatialGltfModel API i interfejsy SpatialGltfModelAnimation API, aby renderować pliki glTF i sterować animacjami. Zmieniono SpatialGltfModelState na AutoCloseable. Aby zwolnić zasoby, należy teraz zamknąć to okno. (I11fde, b/466065486, b/481379924). Interfejs SpatialGltfModel API jest jednak oznaczony jako ograniczony w tej wersji do czasu przeprowadzenia dodatkowych testów. (Ibf003, b/466090694)
  • Dodaliśmy wycofane puste przeciążenie funkcji SubspaceModifier.rotate. (Idceb6)
  • Zmieniliśmy nazwę funkcji SpatialSmoothFeatheringEffect na spatialSmoothFeatheringEffect i przenieśliśmy ją do modułu rysowania. Zaktualizowano domyślną wartość SpatialExternalSurface rozmycia do wartości null, co naśladuje działanie starej funkcji ZeroFeatheringEffect. (I5fdaa, b/460426800)
  • Kontakt onPointSourceParamsAvailable został usunięty. W najbliższej przyszłości udostępnimy inny interfejs API do przestrzennego odtwarzania dźwięku. (I86507, b/458513439)
  • Dodano działanie od prawej do lewej w przypadku modyfikatorów podprzestrzeni przesunięcia. Dodano też absoluteOffset, aby ignorować kierunek układu. (I30e4b, b/474409165)

Wersja 1.0.0-alpha11

25 lutego 2026 r.

Publikacja androidx.xr.compose:compose:1.0.0-alpha11 i androidx.xr.compose:compose-testing:1.0.0-alpha11 Wersja 1.0.0-alpha11 zawiera te zmiany.

Nowe funkcje

  • Dodawanie parametru SuperSampling do parametru SpatialExternalSurfaces (Icd4d1)

Znane problemy

  • Problem z SurfaceEntity w SceneCore może powodować awarie aplikacji podczas tworzenia instancji SpatialExternalSurface. Ten problem został rozwiązany w wersjach androidx.xr.scenecore:scenecore-*:1.0.0-alpha13 i androidx.xr.compose:compose:1.0.0-alpha12 oraz w ich kolejnych wersjach. Aplikacje, których dotyczy problem, powinny zostać zaktualizowane do najnowszych wersji.

Zmiany w interfejsie API

  • Zmiany dopełnienia modyfikatora podprzestrzeni w zależności od kierunku układu. (I53e25)
  • SpatialCapabilities jest teraz zamknięty i nie można go przedłużyć. (I07aef)
  • Interfejsy API SpatialRow i SpatialColumn, które akceptują ogólny parametr SpatialAlignment, zostały wycofane. Zamiast nich używaj interfejsów API, które akceptują odpowiednio parametry verticalAlignment lub horizontalAlignment w przypadku interfejsów SpatialRow i SpatialColumn. (Iec390)
  • Łączenie interfejsów API funkcji przeciążania SubspaceLayout (Idd30a)
  • Zmieniono nazwę SubspaceModifier.lookAtUser na rotateToLookAtUser, a parametr up na upDirection. (Icafb8)
  • Przekształcanie SpatialRow w funkcję wbudowaną (Ia2f20)
  • Przekształcanie funkcji SpatialColumn w funkcję wbudowaną (I681be)
  • Usunięto interfejs API billboardu (Ib76cd)

Wersja 1.0.0-alpha10

28 stycznia 2026 r.

Publikacja androidx.xr.compose:compose:1.0.0-alpha10 i androidx.xr.compose:compose-testing:1.0.0-alpha10 Wersja 1.0.0-alpha10 zawiera te zmiany.

Zmiany w interfejsie API

  • Usunięcie wycofanego interfejsu API – ApplicationSubspace (Ia6596, b/468345186)
  • Zaktualizowano SpatialShape do interfejsu zamkniętego (I7e3f5, b/460426800)
  • Usuwanie wycofanych interfejsów API w SpatialAlignment. (Ib0b61, b/468011887)
  • Wycofanie robota SpatialLayoutSpacer i wprowadzenie robota SpatialSpacer. (I2ebf3, b/466071383)
  • Zaktualizowaliśmy interfejs UserSubspace API, aby zastąpić termin „lazy locking” terminem „soft locking”. (I9ded1, b/464035984)

Wersja 1.0.0-alpha09

3 grudnia 2025 r.

Publikacja androidx.xr.compose:compose:1.0.0-alpha09 i androidx.xr.compose:compose-testing:1.0.0-alpha09 Wersja 1.0.0-alpha09 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodanie modyfikatorów LookAtUser i Billboard, które sprawiają, że treść jest zawsze skierowana do użytkownika. (I49b99)
  • Dodaje możliwość ustawienia InteractionPolicy na SpatialExternalSurfaces i SpatialPanels, co umożliwia wykrywanie kliknięć i innych zdarzeń wejściowych 3D. (Iae155)
  • Dodano przeciążenie rozmiaru i modyfikatora requiredSize z szerokością, wysokością i głębokością jako wartościami Dp. (I92f79)
  • Interfejs ParentLayoutParamsModifier jest teraz rozszerzony o DelegatableSubspaceNode. (I1a6d4)
  • Interfejs ApplicationSubspace został wycofany na rzecz interfejsu Subspace API.
    • Działanie interfejsu Subspace API zostało zmienione tak, aby udostępniać tylko podprzestrzeń obejmującą całą aplikację w zalecanej pozie i skali.
    • Wprowadzamy interfejs PlanarEmbeddedSubspace API, aby udostępniać osadzone podprzestrzenie w kontekstach 2D. (Id3343)
  • Dodano flagę shouldAutoInvalidate do interfejsu SubspaceModifier.Node API. (I93902)
  • Dodano required(Size|Width|Depth|Height)W interfejsach API, które umożliwiają deweloperom ograniczenie rozmiaru @SubspaceComposable do określonego zakresu, z pominięciem przychodzących ograniczeń pomiarowych elementu nadrzędnego. (Ifaa78)
  • Dodano SubspaceModifier.onSizeChanged, który zapewnia prosty, ukierunkowany wywołanie zwrotne, aby deweloperzy mogli reagować na zmiany rozmiaru @SubspaceComposable. (I994f9)
  • Usunięto interfejs Volume API. Zamiast interfejsu Volume API należy używać interfejsu SceneCoreEntity API. (I4162b)
  • Podziel SubspaceLayoutModifierNode.requestRelayout na invalidateMeasurement/invalidatePlacement. (I14805)
  • Dodano interfejs API SpatialGltfModel, który umożliwia deweloperom renderowanie plików glTF w kompozycji. (Icc91f)
  • Wprowadziliśmy SpatialGltfModel interfejs API do łatwego renderowania plików glTF (Iade67).

Poprawki błędów

  • Naprawiono błąd układu w SceneCoreEntity. Powinien teraz prawidłowo uwzględniać ograniczenia. (I11bb8)
  • Przenoszenie modułów jxr-compose do Compile sdk = 34 (I2d5db)

Wersja 1.0.0-alpha08

22 października 2025 r.

Publikacja androidx.xr.compose:compose:1.0.0-alpha08 i androidx.xr.compose:compose-testing:1.0.0-alpha08 Wersja 1.0.0-alpha08 zawiera te zmiany.

Zmiany w interfejsie API

  • Zmieniono ResizePolicy, aby akceptować onResizeStart, onResizeUpdate i onResizeEnd. (I7e21f)

Poprawki błędów

  • Zapobieganie awarii podczas niszczenia aktywności z przestrzenią podrzędną. (I595a1)

Wersja 1.0.0-alpha07

24 września 2025 r.

Publikacja androidx.xr.compose:compose:1.0.0-alpha07 i androidx.xr.compose:compose-testing:1.0.0-alpha07 Wersja 1.0.0-alpha07 zawiera te zmiany.

Zmiany w interfejsie API

  • Ulepszone dokumenty KDocs dla SpatialMainPanel. (I27b70, b/444467891)
  • Wprowadzono SpatialArrangement do rozmieszczania elementów podrzędnych wzdłuż osi głównej w układach 3D, takich jak SpatialRow i SpatialColumn. Ten nowy interfejs API udostępnia znane opcje rozmieszczenia z 2D Compose, w tym Start, End, Center, SpaceBetween, SpaceAround i SpaceEvenly, z pełną obsługą kierunków układu od lewej do prawej i od prawej do lewej. (I7db38, b/436289959)
  • Dodano interfejs podstawowy dla SubspaceModifier.Node, aby zwiększyć bezpieczeństwo typów i użyteczność interfejsów rozszerzeń, takich jak:
    • CompositionLocalConsumerSubspaceModifierNode
    • LayoutCoordinatesAwareModifierNode
    • SubspaceLayoutModifierNode
    • CoreEntityNode (wewnętrzne) (Iede00, b/440599394, b/440599394)
  • Usuń ograniczenia SpatialExternalSurface (I33315, b/439646773)
  • Wprowadź SubspaceModifier do funkcji kompozycyjnych Subspace i zastąp parametr ograniczeń parametrem SubspaceModifier powiązanym z rozmiarem SubspaceModifiers. Jeśli zasada allowUnboundedSubspace ma wartość Prawda, podprzestrzenie mogą nadal mieć nieograniczone ograniczenia. (Ib06e6, b/433331675)
  • Wycofanie funkcji przenoszenia i zmiany rozmiaru SubspaceModifiers, ponieważ funkcje DragPolicy() i ResizePolicy() są teraz częścią interfejsów API SpatialPanel i SpatialExternalSurface (I397bf, b/437924639)
  • Dodaliśmy obsługę właściwości LayoutDirection w układach przestrzennych. Komponenty z użyciem SpatialAlignment będą teraz prawidłowo pozycjonować elementy w kontekście od lewej do prawej i od prawej do lewej. (I964bb, b/436300273)
  • Dodaj parametry Resizable i Movable do interfejsów API Panel, aby mieć pewność, że te zachowania można stosować tylko w przypadku obsługiwanych kontenerów. (Id491c)
  • Dodano atrybuty sizeIn, widthIn, heightIn, depthIn SubspaceModifiers, które umożliwiają ustawienie dokładnych minimalnych i maksymalnych ograniczeń szerokości, wysokości i głębokości. (I1af09, b/433330761)

Wersja 1.0.0-alpha06

13 sierpnia 2025 r.

Publikacja androidx.xr.compose:compose:1.0.0-alpha06 i androidx.xr.compose:compose-testing:1.0.0-alpha06 Wersja 1.0.0-alpha06 zawiera te zmiany.

Poprawki błędów

  • Ponownie utwórz ComposeXrOwnerLocals, gdy właściciel cyklu życia zostanie usunięty. (9123ce1)

Wersja 1.0.0-alpha05

30 lipca 2025 r.

Publikacja androidx.xr.compose:compose:1.0.0-alpha05 i androidx.xr.compose:compose-testing:1.0.0-alpha05 Wersja 1.0.0-alpha05 zawiera te zmiany.

Nowe funkcje

  • Udostępniono publicznie klasę adnotacji SubspaceComposable. (Ic2a34, b/399432430)
  • Dwa nowe komponenty SpatialExternalSurface reprezentujące sfery 180° i 360°. (I40ef2, b/391705799)
  • Dodano SubspaceModifier.aspectRatio (Ide5ab, b/399729509, b/414762147)
  • Dodano interfejs SceneCoreEntity API, aby zwiększyć interoperacyjność między SceneCore a Compose for XR. (I50bb3, b/423020989)
  • Dodano interfejs GravityAlignedsubspace API do obsługi funkcji bez skalowania i GravityAligned (I07359).

Zmiany w interfejsie API

  • SpatialDialog() będzie działać zgodnie z konfiguracją naciśnięcia SpatialDialogProperties.dismissOnBack. (Ib453b, b/416797132)
  • Zaktualizuj wartość minimumPanelDimension do nowego domyślnego rozmiaru wymiaru Dimensions(0.1f, 0.1f, 0.1f) ze względu na jego reprezentację w metrach. (Ib852a)
  • Podprzestrzenie i Orbiter będą teraz zachowywać swój stan wewnętrzny w przestrzeni domowej i gdy aplikacja działa w tle. W trybie obszaru domowego Subspace nadal będzie konfigurować scenę w ramach przygotowań do przejścia na tryb pełnego obszaru. (I40317, b/416037751)
  • SpatialDialogs zachowa teraz swój stan, gdy aplikacja będzie działać w tle. (I6aa56)
  • Urządzenie ApplicationSubspace będzie teraz dziedziczyć zalecane skalę i położenie z systemu. (I4565f, b/418834194)
  • Dodano lepszy komunikat o błędzie i wcześniejsze wywoływanie błędu, gdy w kontekście innym niż SubspaceComposable użyto znaku SubspaceComposable. (Iee2ae, b/416484684)
  • Zmiana ExperimentalSubspaceVolumeApi z ostrzeżenia na błąd, ponieważ ostrzeżenia są często pomijane w przypadku niewłaściwego użycia interfejsów API z możliwością komponowania. (I427aa, b/424864286)
  • Podprzestrzeń i ApplicationSubspace są teraz ograniczone przez recommendedContentBoxInFullSpace. Wcześniej było ono ograniczone polem widzenia SpatialUser. (I41015, b/423074142)
  • Aktualizacja SpatialElevation, aby używać minimalnego rozmiaru zamiast zakodowanego na stałe rozmiaru (I2dbe6, b/427785338)
  • Zaktualizuj sposób, w jaki sprawdzamy SpatialAcitivityPanel, aby aktualizować go, gdy zmodyfikowana zostanie kluczowa zmienna. (I0f64d, b/427999029)
  • Usuń VolumeConstraints.Unbounded i ustaw domyślne wartości ograniczeń na równoważne. (Ie24ec, b/407938414)
  • SpatialFeatheringSize nie jest już publiczny (I1c15b, b/399432430)
  • Zmieniliśmy nazwę funkcji XR Placeable na SubspacePlaceable, aby odróżnić ją od funkcji Placeable w Compose. (I74874)
  • Usunięcie ustawień Orbiter i dodanie shouldRenderInNonSpatial jako nowego parametru. Dodatkowo usunięto klasę EdgeOffset i dodano orbiterOffsetType jako nowy parametr, aby skonsolidować funkcje Orbiter(). Oprócz zmiany nazwy z OrbiterEdge na ContentEdge. (Iebf3d)
  • Zmieniliśmy nazwę Measurable na SubspaceMeasurable, aby odróżnić ten typ od typu Measurable w usłudze Compose. (I9726c)
  • Zmień nazwę MeasureResult na SubspaceMeasureResult (I9f34d)
  • Usunięto interfejs API setSubspaceContent na rzecz używania komponentu setContent w Compose z komponentem Subspace. (Ifff4c, b/421427391, b/421427391)
  • Nazwa MeasurePolicy została zmieniona na SubspaceMeasurePolicy. (I37a9b, b/422553904)
  • Zmień SubspaceSemanticsInfo w zamknięty interfejs, ponieważ bez ustawień domyślnych nie będziemy mogli dodawać członków. (I372f9, b/423704068)
  • Zaktualizowano dokumentację SpatialExternalSurface, zmieniono nazwę ContentSecurityLevel na SurfaceProtection (I3c460, b/420982808)
  • Dodano przeciążony konstruktor dla modyfikatora z możliwością przenoszenia, który umożliwia zakotwiczenie. (Ic0c70)
  • Dodaliśmy więcej dostawców pozycji dla etykietek, dzięki czemu deweloperzy mogą teraz określać, czy etykietka ma być umieszczana nad, pod, po lewej czy po prawej stronie elementu zakotwiczonego. Dodaj interfejs API, który przyjmuje kształt karetki, aby można było podać więcej niestandardowych kształtów. (Ie513c, b/374766087, b/418854637)
  • Usunięto element CoreEntity jako PublishedApi (Ifee05)

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował miganie znaku SpatialDialog podczas renderowania. (Ife73c, b/401619909)
  • Rozwiązaliśmy problem, który uniemożliwiał przyciemnianie panelu aktywności za pomocą ikony SpatialDialog. (I8ca6c, b/367442109)
  • Naprawiono problem z wyświetlaniem niektórych treści w oknie XR (I17cd5, b/418062437)
  • Rozwiązaliśmy problem polegający na tym, że po kliknięciu w treści zamykało się okno SpatialPopup. (If262c, b/417245722)
  • Rozwiązaliśmy problem polegający na tym, że podczas łączenia resizable().movable() panel przestrzenny nie zmieniał prawidłowo rozmiaru. (I02ee3, b/422264230)
  • Naprawiono problem z nakładaniem się ikony topBar na menu w SpatialComposeVideoPlayer (Id33bc, b/427168167)
  • Stały promień narożnika nie jest renderowany (I975fe, b/428261830)

Wersja 1.0.0-alpha04

7 maja 2025 r.

Publikacja androidx.xr.compose:compose:1.0.0-alpha04 i androidx.xr.compose:compose-testing:1.0.0-alpha04 Wersja 1.0.0-alpha04 zawiera te zmiany.

Nowe funkcje

  • Dodano interfejs CompositionLocalConsumerSubspaceModifierNode, aby umożliwić niestandardowym typom SubspaceModifier dostęp do lokalnych wartości kompozycji.
  • Dodaliśmy nowy interfejs API SpatialPanel, który jest zgodny ze stylem implementacji AndroidView i wycofuje poprzedni interfejs ViewBased SpatialPanel.
  • Dodano obiekt towarzyszący VolumeConstraints.Unbounded, który reprezentuje nieograniczone ograniczenia.
  • Dodano SubspaceModifier.onPointSourceParams, aby umożliwić przestrzenne źródło dźwięku.
  • Dodano publiczny element ApplicationSubspace, który oferuje opcjonalny element VolumeConstraints do zdefiniowania obszaru 3D, w którym aplikacja może renderować treści przestrzenne. Domyślnie, jeśli nie określono żadnych ograniczeń, podprzestrzeń będzie ograniczona bieżącym polem widzenia elementu SpatialUser w pionie i poziomie. Użytkownicy mogą podać ograniczenia, które będą używane, jeśli nie można określić pola widzenia. W przeciwnym razie używane są domyślne wartości szerokości i wysokości pola widzenia.
  • Dodano SpatialExternalSurface, którego można używać do renderowania treści stereoskopowych. SpatialExternalSurface można dostosowywać za pomocą modyfikatorów (z wyjątkiem przezroczystości) i efektu rozmycia krawędzi.
  • Dodaliśmy nowy pointerHoverIconmodyfikator podprzestrzeni, który umożliwia użytkownikom ustawienie ikony wskaźnika przestrzennego.

Zmiany w interfejsie API

  • Usunięto ograniczenie RequiresApi(34) we wszystkich pakietach Jetpack XR. To ograniczenie było zbędne, ponieważ Jetpack XR jest obecnie dostępny tylko na urządzeniach z interfejsem API na poziomie 34 lub wyższym. (Iae0f8)
  • Projekty wydane w Kotlinie 2.0 wymagają KGP w wersji 2.0.0 lub nowszej. (Idb6b5)
  • Obsługa przycisku Wstecz będzie teraz działać w przestrzennych panelach bez umieszczonych aktywności. Aby działało obsługiwanie powrotu, w manifeście Androida musisz określić android:enableOnBackInvokedCallback="true".
  • Funkcja cofania będzie teraz działać w przypadku okien przestrzennych. Aby działało cofanie, musisz określić android:enableOnBackInvokedCallback="true" w manifeście Androida.
  • Komponenty SpatialPanel oparte na komponowaniu i widoku mogą teraz dostosowywać swój rozmiar do zawartości.
  • Deweloperzy mogą teraz ustawiać własne wartości SpatialElevationLevel i nie są ograniczeni do wstępnie zdefiniowanych poziomów.
  • Poziom wysokości orbitera można teraz dostosować za pomocą parametru elevation.
  • Podprzestrzeń może być teraz domyślnie ograniczona polem widzenia SpatialUser pod względem szerokości i wysokości. Jeśli nie można określić pola widzenia, używane są domyślne wartości szerokości i wysokości pola widzenia.
  • Dodaliśmy nowe wywołania zwrotne onMoveStart i onMoveEnd do modyfikatora Movable. Wywołania zwrotne onMoveStart i onMoveEnd są wywoływane, gdy użytkownik zaczyna i kończy przesuwanie komponentu kompozycyjnego podprzestrzeni za pomocą modyfikatora movable.
  • Parametr name został usunięty z interfejsów API przestrzennych, takich jak SpatialRow i SpatialPanel. Do debugowania drzew kompozycji przestrzennych używaj zasady SubspaceModifier.testTag.
  • Usunięto nieobsługiwane przeciążenie funkcji SpatialPopup, która ma tylko parametry spatialElevationLevel i content. Użyj interfejsu, który obsługuje onDimissRequest.
  • Wywołanie zwrotne onPoseChange z modyfikatora Movable zostało usunięte. Użyj w zamian zasady onMove.
  • SubspaceModifiers nie będą już stosować efektów, jeśli zostaną odłączone lub są w trakcie odłączania.
  • Dotychczasowy interfejs API SpatialRow został podzielony na interfejsy SpatialRow i SpatialCurvedRow. Jeśli wcześniej używasz parametru SpatialRowcurveRadius, teraz używaj parametru SpatialCurvedRow, który działa tak samo.
  • MainPanel i ActivityPanel nie mają już pasków tytułu, gdy są uruchamiane na podobnie aktualnym obrazie systemu.
  • Modyfikatory przezroczystości i skali można teraz łączyć, a ich wartości będą mnożone, aby uzyskać ostateczną wartość przezroczystości lub skali.
  • Wywołanie zwrotne onPoseChange z modyfikatora Ruchomy zostało zoptymalizowane, aby zapewnić płynniejsze ruchy postaci.
  • Modyfikatory, które można przesuwać i zmieniać ich rozmiar, będą teraz wywoływać swoje wywołania zwrotne w głównym wątku, aby zmiany stanu powodowały rekompozycję.
  • Dodano obserwację stanu do faz układu i pomiaru, aby zmiany stanu w SubspaceLayout powodowały ponowne ułożenie.
  • Zoptymalizowane aktualizacje łańcucha modyfikatorów, aby lepiej wykorzystywać istniejące modyfikatory.

Poprawki błędów

  • Zatrzymano przyciemnianie, gdy wyświetlany jest element SpatialDialog. (Ic4594)
  • Żądania zmiany układu wysyłane, gdy węzły modyfikatora są odłączone, będą teraz ignorowane.
  • Usunięto fazy zmiany układu wywoływane przez modyfikatory Movable i Resizable.
  • Naprawiliśmy awarię w komponencie MainPanel(), która występowała, gdy jeden z wymiarów był ustawiony na zero, bezpośrednio lub podczas obliczania układu, np. obliczania SpatialRow/SpatialColumn. Panel zostanie teraz ukryty. Pamiętaj, że ta poprawka dotyczy konkretnie awarii podczas fazy układu. Zmiana rozmiaru panelu na zero w wyniku interakcji użytkownika będzie obsługiwana osobno. Ukryty panel nie ma elementów interfejsu.
  • Rozwiązaliśmy problem z symbolem maintainAspectRatio w przypadku modyfikatora o zmienianym rozmiarze. Współczynnik proporcji powinien zostać zachowany.
  • Rozwiązaliśmy problem z zagnieżdżonymi podprzestrzeniami, które były nieprawidłowo pozycjonowane w jednej klatce.
  • Rozwiązaliśmy problem polegający na tym, że zaokrąglone rogi czasami nie były stosowane, gdy powinny.
  • NestedSubspaces nie będzie już wyświetlać się w nieprawidłowej lokalizacji przez jedną klatkę.

Wersja 1.0.0-alpha03

26 lutego 2025 r.

Wersje androidx.xr.compose:compose:1.0.0-alpha03 i androidx.xr.compose:compose-testing:1.0.0-alpha03 nie zawierają żadnych istotnych zmian w porównaniu z ostatnią wersją alfa. Wersja 1.0.0-alpha03 zawiera te zmiany.

Wersja 1.0.0-alpha02

12 lutego 2025 r.

Publikacja androidx.xr.compose:compose:1.0.0-alpha02 i androidx.xr.compose:compose-testing:1.0.0-alpha02 Wersja 1.0.0-alpha02 zawiera te zmiany.

Nowe funkcje

  • Panel aktywności może teraz przyciemniać swoją zawartość, gdy aktywne jest okno dialogowe przestrzenne.
  • Interfejs Orbiter API jest teraz dostępny w kontekstach SubspaceComposable i będzie dołączać elementy Orbiters do najbliższego elementu kompozycyjnego nadrzędnego opartego na SubspaceLayout.
  • Wprowadzono LayoutCoordinatesAwareModifierNode, aby umożliwić stosowanie modyfikatorów opartych na niestandardowym pozycjonowaniu.
  • Dodaliśmy metody cyklu życia dołączania/odłączania do SubspaceModifier.Node.
  • Dodano scaleWithDistance do modyfikatora ruchomego. Gdy opcja scaleWithDistance jest włączona, przeniesiony element podprzestrzeni zostanie powiększony lub pomniejszony. Zachowa też wszelkie wyraźne skale, które miał przed przeniesieniem.

Zmiany w interfejsie API

  • Usunięto SessionCallbackProvider na rzecz SpatialCapabilities.

Inne zmiany

  • Zmniejszono minSDK do 24. Wszystkie interfejsy Jetpack XR API nadal wymagają poziomu API 34 w czasie działania.
  • Orbiter Konstruktory EdgeOffset.inner, EdgeOffset.outer i EdgeOffset.overlap nie są już @Composable metodami, co pozwala na ich używanie w kontekstach niekomponowalnych.
  • Zaktualizuj poziomy wysokości przestrzennej, aby były zgodne z najnowszą specyfikacją UX.
  • Zaimplementuj interfejs SubspaceSemanticsInfo w usłudze MeasurableLayout.
  • Zmieniono nazwę SubspaceModifierElement na SubspaceModifierNodeElement.

Poprawki błędów

  • Poprawki stabilizujące zamawianie SubspaceModifier. SubspaceModifier powinna działać bardziej niezawodnie. Modyfikatory przesunięcia, obrotu, skalowania, przenoszenia i zmiany rozmiaru powinny być teraz dostępne w dowolnej kolejności.

Wersja 1.0.0-alpha01

12 grudnia 2024 r.

Publikacja androidx.xr.compose:compose-*1.0.0-alpha01

Funkcje pierwszej wersji

  • Pierwsza wersja Jetpack Compose na XR dla deweloperów. Używaj znanych koncepcji Compose, takich jak wiersze i kolumny, aby tworzyć przestrzenne układy interfejsu w XR, niezależnie od tego, czy przenosisz istniejącą aplikację 2D do XR, czy tworzysz nową aplikację XR od podstaw. Ta biblioteka udostępnia kompozycje podprzestrzenne i przestrzenne, takie jak panele przestrzenne i orbitery, które umożliwiają umieszczanie istniejącego interfejsu opartego na 2D Compose lub widokach w układzie przestrzennym. Wprowadza funkcję Volume subspace composable, która umożliwia umieszczanie elementów SceneCore, takich jak modele 3D, względem interfejsu. Więcej informacji znajdziesz w tym przewodniku dla programistów:

    • Subspace: ten komponent można umieścić w dowolnym miejscu w hierarchii interfejsu aplikacji, co pozwala zachować układy interfejsu 2D i przestrzennego bez utraty kontekstu między plikami. Ułatwia to udostępnianie elementów takich jak istniejąca architektura aplikacji między XR a innymi urządzeniami bez konieczności przenoszenia stanu przez całe drzewo interfejsu lub zmiany architektury aplikacji.

    • SpatialPanel: to komponent przestrzenny, który umożliwia wyświetlanie treści aplikacji, np. odtwarzanie wideo, obrazy statyczne lub inne treści.

    • Orbiter: orbiter to przestrzenny komponent interfejsu. Jest on przeznaczony do dołączania do odpowiedniego panelu przestrzennego i zawiera elementy nawigacyjne oraz kontekstowe działania związane z tym panelem. Jeśli na przykład utworzysz panel przestrzenny do wyświetlania treści wideo, możesz dodać elementy sterujące odtwarzaniem wideo w orbiterze.

    • Objętość: umieszczaj elementy SceneCore, takie jak modele 3D, względem interfejsu.

  • Układ przestrzenny: możesz utworzyć wiele paneli przestrzennych i umieścić je w układzie przestrzennym za pomocą SpatialRow, SpatialColumn, SpatialBox i SpatialLayoutSpacer. Użyj symboli SubspaceModifier, aby dostosować układ.

  • Komponenty interfejsu przestrzennego: te elementy można ponownie wykorzystać w interfejsie 2D, a ich atrybuty przestrzenne będą widoczne tylko wtedy, gdy włączone są funkcje przestrzenne.

    • SpatialDialog: panel lekko się cofnie w głąb, aby wyświetlić wysunięte okno.
    • SpatialPopUp: panel zostanie lekko przesunięty do tyłu w osi Z, aby wyświetlić wyskakujące okienko.
    • SpatialElevation: można ustawić SpatialElevationLevel, aby dodać wysokość.
  • SpatialCapabilities: możliwości przestrzenne mogą się zmieniać w miarę interakcji użytkowników z aplikacją lub systemem, a nawet być zmieniane przez samą aplikację – na przykład podczas przechodzenia do przestrzeni domowej lub pełnej. Aby uniknąć problemów, aplikacja musi sprawdzać wartość LocalSpatialCapabilities.current, aby określić, które interfejsy API są obsługiwane w bieżącym środowisku. isSpatialUiEnabled: elementy interfejsu przestrzennego (np.SpatialPanel), isContent3dEnabled: obiekty 3D, isAppEnvironmentEnabled: środowisko, isPassthroughControlEnabled: czy aplikacja może kontrolować stan przekazywania, isSpatialAudioEnabled: dźwięk przestrzenny.

Znane problemy

  • Obecnie do korzystania z Jetpack Compose w przypadku XR wymagany jest pakiet SDK w wersji co najmniej 30. Aby obejść ten problem, możesz dodać ten wpis do pliku manifestu <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>, aby móc tworzyć i uruchamiać aplikację z wersją minSDK 23.
  • Aplikacje Jetpack XR wymagają obecnie w pliku AndroidManifest prośby o uprawnienie android.permission.SCENE_UNDERSTANDING.
  • Gdy aplikacja uruchamia się bezpośrednio w pełnej przestrzeni za pomocą właściwości PROPERTY_XR_ACTIVITY_START_MODE w pliku manifestu, działania/aplikacje są początkowo otwierane w przestrzeni domowej, a potem przechodzą do pełnej przestrzeni.
  • Pliki glTF w komponentach Volume Composables mogą początkowo migać w niewłaściwym miejscu.
  • Użycie elementu SpatialDialog w panelu, który został znacznie przesunięty, spowoduje przesunięcie treści w niewłaściwym kierunku.