Jetpack Compose dla XR

Deklaratywnie twórz układy interfejsu przestrzennego, które wykorzystują możliwości przestrzenne Androida XR.
Najnowsza aktualizacja Wersja stabilna Wersja kandydująca do publikacji Wersja beta Wersja alfa
21 października 2026 r. - - 1.0.0-beta02 -

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 dla artefaktów, których potrzebujesz, w pliku build.gradle aplikacji lub modułu:

Odlotowe

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")
}

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. Daj nam znać, jeśli znajdziesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki. Przed utworzeniem nowego problemu zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk gwiazdki.

Tworzenie nowego zgłoszenia

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

Wersja 1.0

Wersja 1.0.0-beta02

21 października 2026 r.

Publikacja androidx.xr.compose:compose:1.0.0-beta02 i androidx.xr.compose:compose-testing:1.0.0-beta02 Wersja 1.0.0-beta02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Biblioteki są teraz kierowane na Kotlina 2.2 i wymagają kotlinc 2.2 (I82396, b/498369605).
  • Zmieniono nazwę parametru halfLifeMs w narzędziu FollowMode.soft() na halfLifeMillis. (I39187)
  • Przekonwertowano PitchLimits na @JvmInline value class, pakując 2 liczby zmiennoprzecinkowe do Long, aby wyeliminować alokacje obiektów. (Id43c3)
  • Dodano nowy parametr dla FollowMode.soft: parametry halfLifeMs, startDelay i startThresholds. Usunęliśmy parametr durationMs, ponieważ nie jest już potrzebny, gdy przechodzimy z algorytmu smoothStep na algorytm exponentialDecay. (If0140)
  • Usuń wycofane przeciążenie SpatialActivityPanel. Zamiast tego użyj przeciążenia SpatialActivityPanel, które akceptuje SpatialActivityPanelController. (I5abc3)
  • Włącz przejścia między treściami Composable 3D i 2D w ramach jednej aktywności w FullSpaceMode. Ta zmiana jest ograniczona przez SpatialComposeFlags.isMainPanelResetOnSubspaceDisposeEnabled. (I4e237)
  • Udostępniono eksperymentalne przeciążenie Subspace, które przyjmuje parametr FollowTarget, aby obsługiwać obserwowanie treści. (Iec1a9)
  • Usuń wycofane modyfikatory, które można przenosić. Zamiast tego użyj nowego modyfikatora movable, który akceptuje nowy parametr MovePolicy. (Ib135d)
  • Usuń wycofany element DragPolicy. Użyj w zamian zasady SubspaceModifier.movable(). (I108d4)
  • Wycofano bezstanowe przeciążenia Slider i RangeSlider na rzecz ich wersji stanowych. Zmieniliśmy nazwy activeRangeStart i activeRangeEnd w RangeSliderState na startValue i endValue, wycofując starsze niepromowane i eksperymentalne interfejsy API suwaka z DeprecationLevel.HIDDEN. (If8995)

Poprawki błędów

  • Naprawiliśmy błąd RotateToLookAtUser, wprowadzając poseInActivitySpace, aby zapewnić prawidłowe obliczanie pozycji we wszystkich typach podprzestrzeni, w tym tych dołączonych do kotwic lub użytkowników.Ica367b
  • Naprawiono błąd powodujący awarię ograniczeń, gdy Orbiter jest dołączony do dużych paneli (I8c4bf)
  • Naprawiliśmy błąd w SubspaceLayoutNode, który powodował, że removeAll() niepotrzebnie przydzielał ArrayList. Poprawiliśmy też wydajność obliczania głębi. I34a10a
  • Zależność androidx.lifecycle:lifecycle-runtime została zaktualizowana do wersji 2.10.0. Ta wersja jest wymagana do uruchamiania kontroli linta w pakiecie środowiska wykonawczego cyklu życia z AGP w wersji 9.5.0-alpha04 lub nowszej. (I99bfd, b/556807521)
  • Ulepszono kdocs związane z AudioOutputProvider, aby podkreślić, że nie należy go używać ponownie z wieloma instancjami ExoPlayer (I6b18e).
  • Poprawiono drobne błędy ortograficzne i gramatyczne w kdoc (Id3ba6).

Znane problemy

  • Ta wersja androidx.xr.compose jest zależna od androidx.xr.scenecore:1.0.0-rc01, w której występuje znany wyciek pamięci. W konfiguracji kompilacji możesz wyraźnie zastąpić zależność SceneCore wersją 1.0.0, która zawiera poprawkę dotyczącą wycieku pamięci.

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

Zmiany w interfejsie API

  • Usunięto wycofaną funkcję DragPolicy. Użyj w zamian zasady SubspaceModifier.movable(). (I108d4)
  • Usunięto wycofany element ResizePolicy i jego zastosowania w SpatialPanel i SpatialExternalSurface. Usuń wycofaną funkcję SubspaceModifier.resizable. Zamiast tego użyj nowego SubspaceModifier.resizable z nowym ResizePolicy. (I59e6b)
  • Dodano parametr isPitchUpdateEnabled, aby umożliwić niezależne włączanie i wyłączanie śledzenia wysokości dźwięku. (Ie9e86)
  • Usunięto dopuszczalność wartości null dla pitchLimits i zmieniono nazwę PitchLimits.UNCONSTRAINED na PitchLimits.FullRange. (I0154f)
  • ExposedDropdownMenu jest teraz funkcją rozszerzenia w ExposedDropdownMenuBoxScope, a nie funkcją członkowską. 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 OrbiterPoseProvider, została wycofana na rzecz funkcji, która używa SpatialAlignment. (I4d12b)
  • SpatialActivityPanel wymaga teraz SpatialActivityPanelController (utworzonego za pomocą rememberSpatialActivityPanelController) do uruchamiania i zarządzania umieszczonymi aktywnościami. (Id25c6)
  • Usunięto parametr upDirection z funkcji rotateToLookAtUser i dodano parametry ograniczeń obrotu (isYawUpdateEnabled i pitchLimits). (I1370a)

Poprawki błędów

  • Naprawiono różne problemy z InteractionPolicy. Awaria występowała, gdy zdarzenie wejściowe miało miejsce w momencie, gdy element Composable lub podrzędny (np. Orbiter) inicjował sekwencję usuwania. Rozwiązaliśmy też problem, który powodował, że element podrzędny otrzymywał zdarzenia najechania kursorem. (Ifc477)
  • Zmniejszono rozmiar panelu w RotateToLookAtUserActivity, aby zapobiec przycinaniu na urządzeniach z mniejszym polem widzenia. (I8d672)

Znane problemy

  • Występuje problem z panelami Compose XR, w przypadku których utworzenie wielu paneli w jednej aktywności może spowodować uszkodzenie wyświetlanych treści, nawet po zniszczeniu 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, ponieważ w Scenecore została ona zastąpiona przez virtualPixelDensity. (I690ee)
  • Interfejs API SpatialGltfModel jest teraz eksperymentalny i aby go używać, musisz wyrazić na to zgodę. (I4557e)
  • Umożliwienie ustawienia wartości null dla właściwości system, która pozwala na zmianę rozmiaru (Ib0093)
  • Udostępniono Density w SubspaceSemanticsInfo do testowania. (I2e826)
  • Zmień nazwę opcji domyślnej ResizePolicy na system i dodaj nową opcję Default bez parametrów (Ic8b16)
  • Oznacz FollowTarget jako eksperymentalne. Cały interfejs API FollowingSubspace jest teraz eksperymentalny. (Id4ee3)
  • Usunięcie interfejsów API GltfAnimation (Ic2894)
  • Zmieniono nazwę metody MovePolicy.default() z parametrami na MovePolicy.system(). Wprowadziliśmy właściwość val MovePolicy.Default, która reprezentuje standardowe domyślne zachowanie ruchu. (Iedcc9)
  • Rozszerzenie wymagań dotyczących akceptacji na ExperimentalMoveAnchorPolicy na PlaneSemantic i PlaneOrientation (Ief927)
  • Usuń resetMins z witryny VolumeConstraints.offset (Ib2f2f)
  • Usunięto wycofaną funkcję SceneCoreEntitySizeAdapter. (Ib6722)
  • Usunięto wycofane przeciążenie Subspace z allowUnboundedSubspace. (I8e97f)
  • Usunięto wycofane przeciążenie modyfikatora semantyki. (I4ac10)

Poprawki błędów

  • Naprawiliśmy błąd, który powodował, że elementy podrzędne Composable z dołączonym 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 metody pobierające. (I8d689, b/524771027)
  • Naprawiliśmy działanie ogólnej gęstości, ustawiając stałą konwersję między metrami a pikselami. Wycofano Meter.kt. Zamiast tego można teraz używać Session.scene.virtualPixelDensity. (I122ff, b/430097855, b/474168798)
  • Zaktualizowano modyfikator zmiany rozmiaru, aby używać ResizePolicy zamiast 2 modyfikatorów (I7fb0f, b/496257436, b/519672992)
  • Dodano parametr tolerance: 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 przeciążenie elementu movable z parametrem movePolicy i wycofano transformingMovable oraz 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 bez ekspresji została wycofana. (Ide4de, b/491994186)
  • W przypadku Subspace parametr allowUnboundedSubspace został wycofany i ukryty. Nieograniczone zachowanie można teraz uzyskać, używając SubspaceModifier.requiredSizeIn(maxWidth = Dp.Infinity, maxHeight = Dp.Infinity, maxDepth = Dp.Infinity) w modyfikatorze Subspace. Parametr allowUnboundedSubspace został usunięty z funkcji FollowingSubspace. (Ia72ae, b/433624021)
  • Przekonwertowano Session.create na funkcję zawieszenia. (I5d27f)
  • Dodano SubspaceModifier.spatializedAudioOutput, co umożliwia odtwarzanie dźwięku przestrzennego przez ExoPlayer lub SoundEffectPlayer (I46697, b/489421980, b/497867019)
  • Zaktualizowano ComponentActivity.requestHomeSpace() i requestFullSpace(), aby zwracały SpaceRequestResult na potrzeby weryfikacji stanu. (If1672)
  • thought Zaktualizowano AnchorEntity, aby wywoływać AnchorSpace (Ifa95e, b/513619219)
  • Metoda fromResource bez ograniczeń z SpatialGltfModelSource (I1f5a1, b/503047416)
  • Elementy SubspaceSemanticsMatcher są publiczne: właściwość description, metody fabryczne obiektu towarzyszącego (expectValue, keyIsDefined, keyNotDefined), funkcje składowe (matches, matchesAny) i operatory (and, or, not). (I972a4, b/460427288)
  • Zaktualizowano SubspaceModifier.semantics, SubspaceModifier.testTag, SubspaceSemanticsInfo, SubspaceSemanticsModifierNode, aby używać wybranych 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 API align. (I9bdb2, b/479805937)
  • Usunięto wycofane interfejsy API trybu przestrzeni z SpatialConfiguration. (I1ef5c, b/458712461)
  • Wprowadzono: SubspaceSemanticsConfiguration. To jest 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 konsumentom zewnętrznym. (Id025e, b/460427288)
  • Wprowadziliśmy SubspaceSemanticsPropertyReceiver: specjalny wrapper, 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

  • Zaktualizowano modyfikator semantyczny hasContentDescription, aby domyślnie dopasowywał podłańcuchy. (I08214)
  • Dodano ograniczony element FollowBehavior.ExponentialDecay(), który zapewnia płynne podążanie za obiektem zgodnie z zasadami fizyki. (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 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 rekompozycja z prawidłowym stanem. (I0cfa4, b/514712835, b/514712835)

  • Uściśliliśmy dokumentację dotyczącą ComponentActivity.requestHomeSpace i ComponentActivity.requestFullSpace w odniesieniu do zawieszenia, anulowania i równoczesności. Zaktualizowano testy, aby zweryfikować 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

  • Wycofano ResizePolicy i stary modyfikator zmiany rozmiaru, zastępując je nowym przeciążeniem SubspaceModifier.resizable i SubspaceModifier.transformingResizable. (I9e4bc)
  • Zaktualizowaliśmy interfejsy API SpatialGltfModel: dodaliśmy obsługę wczytywania modeli z zasobów za pomocą SpatialGltfModelSource.fromResource. Zmieniliśmy nazwę szybkości na playbackSpeed w SpatialGltfModelAnimation i dodaliśmy metodę resume(). SpatialGltfModelStatus.Loaded i Loading są teraz obiektami. (I523de)
  • Oznaczono rotateToLookAtUser jako eksperymentalny interfejs API. (I86c16)
  • Zmienna chroniona targetCurrentPose została przeniesiona i zmieniona na zmienną lokalną currentTargetPoseMeter. (Ia557c)
  • Zaktualizowano kdocs SpatialPanel i SpatialExternalSurface, aby uwzględnić miejsce renderowania obiektu w rozmiarze układu (I72104).
  • Logika wczytywania SpatialGltfModel została umieszczona w SpatialGltfModelState i wyjaśniono działanie w przypadku niepowodzenia. (Ibe98b)
  • Clarified depth in 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 zatwierdzenia.

Zmiany w interfejsie API

  • Wprowadziliśmy transformingMovable do domyślnego ruchu 3D obsługiwanego 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 udostępnia wywołanie zwrotne onRemeasured po przejściu pomiaru. SubspaceLayoutAwareModifierNode rozszerza teraz ten nowy interfejs. Modyfikator onSizeChanged został zaktualizowany, aby używać onRemeasured, co zapewnia, że wywołanie zwrotne jest wywoływane zaraz po pomiarze, a nie po umieszczeniu. (Iafbae)
  • Zaktualizowano InteractionPolicy do Interface (I0ff30)
  • Zaktualizowano Compose compileSdk do interfejsu API 37. Oznacza to, że w przypadku korzystania z Compose wymagana jest wersja AGP 9.2.0 lub nowsza. (Id45cd)
  • Zaktualizowano Size artykułów (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 na dodatkowe zmiany. Zalecamy wyłączenie powiadomień o wycofaniu Orbiterów i śledzenie zmian w Orbiterach w nadchodzących wersjach.
  • Użytkownicy, którzy używają SceneCoreEntity do renderowania plików glTF, powinni upewnić się, że przekazują session.scene.activitySpace do parametru parent wywołania GltfModel.create, aby zapewnić renderowanie plików glTF.
  • Dodajemy interfejs API SpatialGltfModel, aby umożliwić deweloperom dodawanie plików Gltf do aplikacji Compose for XR. Deweloperzy mogą też wysyłać zapytania o animacje i węzły w modelach Gltf. (I8b542, b/495422586)
  • Zmieniono SceneCoreEntitySizeAdapter z klasy na interfejs (I5a784, b/475292310).
  • Zmieniono nazwę SurfaceProtection na SpatialExternalSurfaceProtection. Zaktualizowano SpatialExternalSurface kdocs (Ifad0a, b/485231082)
  • Wycofanie currentWindowAdaptiveInfo i wprowadzenie wersji 2 (I40ecf, b/424442112)
  • Modyfikator resizable jest teraz publiczny i można go stosować 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 docelowo ma być obsługiwany we wszystkich SubspaceComposables. (I9a3cd, b/479530787, b/478935063, b/478935063)
  • SpatialEnterTransition i SpatialExitTransition oznaczone jako @Immutable (If1710, b/487757837)
  • Interfejs API SpatialGltfModel jest oznaczony jako ograniczony w tej wersji, ponieważ wymaga dodatkowych testów. (Ibf003, b/466090694)
  • Zmieniono nazwę DeviceTrackingMode.LAST_KNOWN na SPATIAL_LAST_KNOWN (z wycofaną opcją zastępczą), dodano INERTIAL_LAST_KNOWN do śledzenia 3DoF i dodano TRACKING_DEGRADED do TrackingState. (Ie661c, b/445466590)
  • Usunięcie wycofanej funkcji SpatialLayoutSpacer (I7b36c)
  • Usunięcie wycofanego interfejsu API dopełnienia (If1886)
  • Dodano floatRange do wartości odchylenia. Usunięto wartość domyślną dla LayoutDirection (I9d74e)

Poprawki błędów

  • Dodaliśmy przykładowe kody 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 interfejsy API SpatialGltfModel i SpatialGltfModelAnimation, aby renderować pliki glTF i kontrolować animacje. Zmieniono SpatialGltfModelState na AutoCloseable. Teraz trzeba zamknąć, aby zwolnić zasoby. (I11fde, b/466065486, b/481379924). Jednak interfejs API SpatialGltfModel jest oznaczony jako ograniczony w tej wersji, ponieważ wymaga dodatkowych testów. (Ibf003, b/466090694)
  • Dodano wycofane puste przeciążenie dla SubspaceModifier.rotate. (Idceb6)
  • Zmieniono nazwę funkcji SpatialSmoothFeatheringEffect na spatialSmoothFeatheringEffect i przeniesiono ją do modułu rysowania. Zaktualizowano domyślną wartość wtapiania SpatialExternalSurface na null, co naśladuje starą funkcję ZeroFeatheringEffect. (I5fdaa, b/460426800)
  • Kontakt onPointSourceParamsAvailable został usunięty. W najbliższej przyszłości udostępnimy inny interfejs API do przestrzennego przetwarzania dźwięku. (I86507, b/458513439)
  • Dodano zachowanie RTL dla modyfikatorów przesunięcia podprzestrzeni. 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 zatwierdzenia.

Nowe funkcje

  • Dodaję parametr SuperSampling do 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 nowszych wersjach. Aplikacje, których dotyczy problem, powinny zostać zaktualizowane do najnowszych wersji.

Zmiany w interfejsie API

  • Zmiany dopełnienia modyfikatora podprzestrzeni w celu uwzględnienia kierunku układu. (I53e25)
  • Migracja SpatialCapabilities została zakończona i nie można jej 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ą parametry verticalAlignment lub horizontalAlignment, odpowiednio dla SpatialRow i SpatialColumn. (Iec390)
  • Połączenie przeciążonych interfejsów API funkcji SubspaceLayout (Idd30a)
  • Zmieniono nazwę SubspaceModifier.lookAtUser na rotateToLookAtUser, a parametru up na upDirection. (Icafb8)
  • Ustawianie SpatialRow jako funkcji wbudowanej (Ia2f20)
  • Ustawianie SpatialColumn jako funkcji wbudowanej (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 zatwierdzenia.

Zmiany w interfejsie API

  • Usuwanie wycofanego interfejsu API – ApplicationSubspace (Ia6596, b/468345186)
  • Zaktualizowano SpatialShape do interfejsu zapieczętowanego (I7e3f5, b/460426800)
  • Usuwanie wycofanych interfejsów API w SpatialAlignment. (Ib0b61, b/468011887)
  • Wycofujemy SpatialLayoutSpacer i wprowadzamy SpatialSpacer. (I2ebf3, b/466071383)
  • thought Zaktualizowaliśmy interfejs API UserSubspace, 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 zatwierdzenia.

Zmiany w interfejsie API

  • Dodanie modyfikatorów LookAtUser i Billboard, dzięki którym treści są zawsze skierowane w stronę użytkownika. (I49b99)
  • Dodaje możliwość ustawienia InteractionPolicy na SpatialExternalSurfaces i SpatialPanels, co pozwala na wykrywanie kliknięć i innych zdarzeń wejściowych 3D. (Iae155)
  • Dodano przeciążenie modyfikatora rozmiaru i requiredSize z szerokością, wysokością i głębokością jako wartościami Dp. (I92f79)
  • Interfejs ParentLayoutParamsModifier rozszerza teraz interfejs DelegatableSubspaceNode. (I1a6d4)
  • Interfejs ApplicationSubspace został wycofany na rzecz interfejsu Subspace API.
    • Zmieniono działanie interfejsu Subspace API, aby udostępniał tylko podprzestrzeń obejmującą całą aplikację w zalecanej pozycji i skali.
    • Wprowadzono interfejs API PlanarEmbeddedSubspace, który umożliwia osadzanie podprzestrzeni w kontekstach 2D. (Id3343)
  • Dodano flagę shouldAutoInvalidate do interfejsu API SubspaceModifier.Node. (I93902)
  • Dodano required(Size|Width|Depth|Height) w interfejsach API, które umożliwiają deweloperom ograniczenie rozmiaru @SubspaceComposable do określonego zakresu, ignorując ograniczenia pomiaru przychodzące z elementu nadrzędnego. (Ifaa78)
  • Dodaliśmy SubspaceModifier.onSizeChanged, który zapewnia proste, ukierunkowane wywołanie zwrotne, dzięki któremu deweloperzy mogą 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)
  • Dodaliśmy interfejs API SpatialGltfModel, który umożliwia deweloperom renderowanie glTF w Compose. (Icc91f)
  • Wprowadziliśmy interfejs API SpatialGltfModel do łatwego renderowania plików glTF (Iade67).

Poprawki błędów

  • Naprawiliśmy błąd układu w aplikacji SceneCoreEntity. Teraz powinna prawidłowo uwzględniać ograniczenia. (I11bb8)
  • Obniżono wersję 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 podprzestrzenią. (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

  • Ulepszono dokumentację KDoc dla SpatialMainPanel. (I27b70, b/444467891)
  • Wprowadziliśmy 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ą układów od lewej do prawej i od prawej do lewej. (I7db38, b/436289959)
  • Dodano interfejs podstawowy dla SubspaceModifier.Node, aby zwiększyć bezpieczeństwo wpisywania i użyteczność interfejsów rozszerzeń, takich jak:
    • CompositionLocalConsumerSubspaceModifierNode
    • LayoutCoordinatesAwareModifierNode
    • SubspaceLayoutModifierNode
    • CoreEntityNode (wewnętrzny) (Iede00, b/440599394, b/440599394)
  • Cofnięcie ograniczenia SpatialExternalSurface (I33315, b/439646773)
  • Wprowadź SubspaceModifier do funkcji kompozycyjnych Subspace i zastąp parametr ograniczeń SubspaceModifier parametrem SubspaceModifiers związanym z rozmiarem. Jeśli zasada allowUnboundedSubspace ma wartość Prawda, podprzestrzenie mogą nadal mieć nieograniczone ograniczenia. (Ib06e6, b/433331675)
  • Wycofujemy funkcje przesuwania i zmieniania rozmiaru SubspaceModifiers, ponieważ DragPolicy() i ResizePolicy() są teraz częścią interfejsu API SpatialPanel i SpatialExternalSurface (I397bf, b/437924639).
  • Dodaliśmy obsługę LayoutDirection w układach przestrzennych. Funkcja kompozycyjna używająca SpatialAlignment będzie teraz prawidłowo pozycjonować elementy zarówno w kontekście LTR, jak i RTL. (I964bb, b/436300273)
  • Dodaj parametry Resizable i Movable do interfejsów API Panel, aby mieć pewność, że te zachowania można stosować tylko do obsługiwanych kontenerów. (Id491c)
  • Dodano właściwości sizeIn, widthIn, heightIn, depthIn SubspaceModifiers, które umożliwiają ustawianie 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

  • Utwórz ponownie 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

  • Klasa adnotacji SubspaceComposable została ustawiona jako publiczna. (Ic2a34, b/399432430)
  • 2 nowe elementy kompozycyjne SpatialExternalSurface reprezentujące sfery 180° i 360°. (I40ef2, b/391705799)
  • Dodano SubspaceModifier.aspectRatio (Ide5ab, b/399729509, b/414762147)
  • Dodaliśmy interfejs API SceneCoreEntity, aby poprawić współdziałanie SceneCore i Compose for XR. (I50bb3, b/423020989)
  • Udostępniliśmy interfejs API GravityAlignedsubspace, aby obsługiwać funkcję unscaled And GravityAligned (I07359)

Zmiany w interfejsie API

  • SpatialDialog() będzie działać zgodnie z konfiguracją naciśnięcia SpatialDialogProperties.dismissOnBack. (Ib453b, b/416797132)
  • Zaktualizuj minimumPanelDimension do nowego domyślnego rozmiaru wymiaru Dimensions(0.1f, 0.1f, 0.1f), ponieważ jest on podany w metrach. (Ib852a)
  • Podprzestrzenie i orbitery będą teraz zachowywać swój stan wewnętrzny w przestrzeni głównej i gdy aplikacja działa w tle. W trybie obszaru domowego Subspace nadal będzie konfigurować scenę w ramach przygotowań do przełączenia na tryb pełnej przestrzeni. (I40317, b/416037751)
  • SpatialDialogs będzie teraz zachowywać swój stan, gdy aplikacja będzie działać w tle. (I6aa56)
  • ApplicationSubspace będzie teraz dziedziczyć zalecaną skalę i pozycję z systemu. (I4565f, b/418834194)
  • Dodaliśmy lepszy komunikat o błędzie i wywołujemy błąd wcześniej, gdy SubspaceComposable jest używany w kontekście innym niż SubspaceComposable. (Iee2ae, b/416484684)
  • Zmieniamy ExperimentalSubspaceVolumeApi z ostrzeżenia na błąd, ponieważ ostrzeżenia są często ignorowane w przypadku nieprawidłowego użycia interfejsów API funkcji kompozycyjnych. (I427aa, b/424864286)
  • Podprzestrzeń i ApplicationSubspace są teraz ograniczone przez recommendedContentBoxInFullSpace. Wcześniej było ograniczone przez pole widzenia urządzenia SpatialUser. (I41015, b/423074142)
  • Zaktualizowano SpatialElevation, aby używać minimalnego rozmiaru i nie używać już rozmiaru zakodowanego na stałe (I2dbe6, b/427785338)
  • Zaktualizuj sposób, w jaki wyświetlamy SpatialAcitivityPanel, aby aktualizować go po zmianie kluczowej zmiennej. (I0f64d, b/427999029)
  • Usuń VolumeConstraints.Unbounded i ustaw domyślne wartości ograniczeń na odpowiednik. (Ie24ec, b/407938414)
  • SpatialFeatheringSize nie jest już publiczny (I1c15b, b/399432430)
  • Zmieniono nazwę XR Placeable na SubspacePlaceable, aby odróżnić ją od Placeable w Compose. (I74874)
  • Usuwam ustawienia Orbiter i dodaję shouldRenderInNonSpatial jako nowy parametr. Dodatkowo usuwamy klasę EdgeOffset i dodajemy orbiterOffsetType jako nowy parametr, aby skonsolidować funkcje Orbiter(). Zmieniliśmy też nazwę OrbiterEdge na ContentEdge. (Iebf3d)
  • Zmieniono nazwę Measurable na SubspaceMeasurable, aby odróżnić ten typ od typu Measurable w Compose. (I9726c)
  • Zmień nazwę MeasureResult na SubspaceMeasureResult (I9f34d)
  • Usunięto interfejs API setSubspaceContent na rzecz interfejsu setContent w Compose z funkcją kompozycyjną Subspace. (Ifff4c, b/421427391, b/421427391)
  • Nazwa MeasurePolicy została zmieniona na SubspaceMeasurePolicy. (I37a9b, b/422553904)
  • Zmień SubspaceSemanticsInfo w interfejs zapieczętowany, ponieważ bez wartości domyślnych nie będziemy mogli dodawać elementów. (I372f9, b/423704068)
  • Zaktualizowano dokumentację SpatialExternalSurface, zmieniono nazwę ContentSecurityLevel na SurfaceProtection (I3c460, b/420982808)
  • Dodaliśmy przeciążony konstruktor modyfikatora movable, który umożliwia zakotwiczenie. (Ic0c70)
  • Dodaliśmy więcej opcji pozycjonowania etykietek, dzięki czemu deweloperzy mogą teraz kontrolować, czy etykietka jest umieszczona nad, pod, po lewej czy po prawej stronie kotwicy. Dodaj interfejs API, który przyjmuje kształt kursorów, aby można było udostępniać więcej niestandardowych kształtów. (Ie513c, b/374766087, b/418854637)
  • Usunięto użytkownika CoreEntity z roli PublishedApi (Ifee05)

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że podczas renderowania SpatialDialog migał. (Ife73c, b/401619909)
  • Rozwiązaliśmy problem, który uniemożliwiał SpatialDialog przyciemnienie panelu aktywności. (I8ca6c, b/367442109)
  • Naprawiono błąd, który powodował, że okno XR nie wyświetlało niektórych treści (I17cd5, b/418062437).
  • Rozwiązaliśmy problem, który powodował, że kliknięcie wewnątrz treści powodowało zamknięcie SpatialPopup. (If262c, b/417245722)
  • Rozwiązaliśmy problem, który powodował, że podczas łączenia resizable().movable() rozmiar panelu przestrzennego nie był prawidłowo zmieniany na nowy. (I02ee3, b/422264230)
  • Naprawiliśmy błąd, który powodował, że element topBar nakładał się na menu w SpatialComposeVideoPlayer (Id33bc, b/427168167)
  • Naprawiono błąd, który powodował, że promień narożnika nie był 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 wartości lokalnych kompozycji.
  • Dodaliśmy nowy interfejs API SpatialPanel, który jest zgodny ze stylem implementacji AndroidView i zastępuje poprzedni interfejs ViewBased SpatialPanel.
  • Dodano obiekt towarzyszący VolumeConstraints.Unbounded, który reprezentuje nieograniczone ograniczenia.
  • Dodano SubspaceModifier.onPointSourceParams, aby umożliwić korzystanie ze źródła dźwięku przestrzennego.
  • Dodano publiczny element ApplicationSubspace, który oferuje opcjonalny element VolumeConstraints do definiowania 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 przez bieżące pole widzenia elementu SpatialUser pod względem szerokości i wysokości. Użytkownicy mogą podać ograniczenia, które zostaną zastosowane, jeśli nie będzie można określić pola widzenia. W przeciwnym razie używane są domyślne wartości szerokości i wysokości pola widzenia.
  • Dodaliśmy właściwość SpatialExternalSurface, która może służyć do renderowania treści stereoskopowych. SpatialExternalSurface można dostosować za pomocą modyfikatorów (z wyjątkiem alfa) i efektu wtapiania krawędzi.
  • Dodaliśmy nowy modyfikator podprzestrzeni pointerHoverIcon, który umożliwia użytkownikom ustawianie 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 opublikowane z Kotlinem 2.0 wymagają do użycia wtyczki KGP w wersji 2.0.0 lub nowszej. (Idb6b5)
  • Obsługa przycisku Wstecz będzie teraz działać na panelach przestrzennych bez umieszczonych aktywności. Aby obsługa przycisku Wstecz działała, musisz określić android:enableOnBackInvokedCallback="true" w pliku manifestu Androida.
  • Obsługa przycisku Wstecz będzie teraz działać w oknach przestrzennych. Aby obsługa przycisku Wstecz działała, musisz określić android:enableOnBackInvokedCallback="true" w pliku manifestu Androida.
  • Komponenty SpatialPanel oparte na Compose i widoku mogą teraz dostosowywać swój rozmiar na podstawie 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 przez pole 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 przenoszenie elementu kompozycyjnego podprzestrzeni za pomocą modyfikatora movable.
  • Parametr name został usunięty z interfejsów API do danych przestrzennych, takich jak SpatialRow i SpatialPanel. Do debugowania drzew tworzenia przestrzennego używaj SubspaceModifier.testTag.
  • Usunięto nieobsługiwane przeciążenie metody SpatialPopup, które zawiera tylko parametry spatialElevationLevel i content. Użyj interfejsu, który obsługuje onDimissRequest.
  • Usunięto wywołanie zwrotne onPoseChange z modyfikatora Movable. Użyj w zamian zasady onMove.
  • Jeśli efekty SubspaceModifiers są odłączone lub są obecnie odłączane, nie będą już stosowane.
  • Dotychczasowy interfejs API SpatialRow został podzielony na SpatialRow i SpatialCurvedRow. Jeśli wcześniej używano parametru curveRadius w SpatialRow, użyj teraz 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 nakładać na siebie, a ich wartości będą mnożone, aby uzyskać ostateczną wartość przezroczystości lub skali.
  • Wywołanie zwrotne onPoseChange z modyfikatora Movable zostało zoptymalizowane pod kątem płynniejszego ruchu pozy.
  • Modyfikatory umożliwiające przenoszenie i zmianę rozmiaru będą teraz wykonywać wywołania zwrotne w głównym wątku, aby zmiany stanu powodowały ponowne komponowanie.
  • Dodano obserwację stanu do faz układu i pomiaru, aby zmiany stanu w SubspaceLayout powodowały zmianę układu.
  • Zoptymalizowaliśmy 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 błąd powodujący awarię w funkcji kompozycyjnej MainPanel(), który występował, gdy którykolwiek wymiar był ustawiony na 0, bezpośrednio lub podczas obliczania układu, np. obliczania SpatialRow/SpatialColumn. Zamiast tego panel będzie 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 maintainAspectRatio z modyfikatora zmiany rozmiaru. Format obrazu powinien zostać zachowany.
  • Rozwiązaliśmy problem z zagnieżdżonymi podprzestrzeniami, które były nieprawidłowo pozycjonowane w przypadku pojedynczej klatki.
  • Rozwiązaliśmy problem, który powodował, że czasami nie były stosowane zaokrąglone rogi, gdy powinny być.
  • NestedSubspaces nie będzie już wyświetlać się przez jedną klatkę w niewłaściwym miejscu.

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 zostały opublikowane bez istotnych zmian od ostatniej wersji alfa. Wersja 1.0.0-alpha03 zawiera te zatwierdzenia.

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

Nowe funkcje

  • Panel aktywności może teraz przyciemniać zawartość, gdy aktywowane jest okno przestrzenne.
  • Interfejs API Orbiter można teraz używać w kontekstach SubspaceComposable. Będzie on dołączać elementy Orbiter do najbliższego elementu nadrzędnego Composable opartego na SubspaceLayout.
  • Wprowadziliśmy parametr LayoutCoordinatesAwareModifierNode, aby umożliwić stosowanie niestandardowych modyfikatorów opartych na 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ż skalę, którą miał przed przeniesieniem.

Zmiany w interfejsie API

  • Usunięto SessionCallbackProvider na rzecz SpatialCapabilities.

Inne zmiany

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

Poprawki błędów

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

Wersja 1.0.0-alpha01

12 grudnia 2024 r.

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

Funkcje w pierwszej wersji

  • Pierwsza wersja Jetpack Compose for XR dla deweloperów. Używaj znanych pojęć z Compose, takich jak wiersze i kolumny, aby tworzyć układy interfejsu przestrzennego 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 elementy kompozycyjne podprzestrzeni i przestrzeni, takie jak panele przestrzenne i orbitery, które umożliwiają umieszczanie istniejącego interfejsu użytkownika opartego na Compose lub widokach 2D w układzie przestrzennym. Wprowadza on komponent podprzestrzeni głośności, który 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 element kompozycyjny 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 takich elementów jak istniejąca architektura aplikacji między XR a innymi formatami bez konieczności podnoszenia stanu w całym drzewie interfejsu użytkownika ani zmiany architektury aplikacji.

    • SpatialPanel: panel przestrzenny to element kompozycyjny podprzestrzeni, który umożliwia wyświetlanie treści aplikacji – na przykład odtwarzanie filmu, wyświetlanie obrazów lub innych treści.

    • Orbiter: orbiter to komponent interfejsu przestrzennego. Jest on przeznaczony do dołączenia do odpowiedniego panelu przestrzennego i zawiera elementy nawigacyjne oraz działania kontekstowe 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 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 funkcje przestrzenne będą włączone.

    • SpatialDialog: panel zostanie lekko przesunięty do tyłu w osi Z, aby wyświetlić okno dialogowe.
    • SpatialPopUp: panel zostanie nieco przesunięty do tyłu w osi Z, aby wyświetlić wyskakujące okienko.
    • SpatialElevation: można ustawić SpatialElevationLevel, aby dodać podniesienie.
  • SpatialCapabilities: możliwości przestrzenne mogą się zmieniać, gdy użytkownicy wchodzą w interakcję z aplikacją lub systemem, a nawet mogą być zmieniane przez samą aplikację, np. podczas przechodzenia do przestrzeni domowej lub pełnej przestrzeni. Aby uniknąć problemów, aplikacja musi sprawdzać 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 trybu passthrough, isSpatialAudioEnabled: dźwięk przestrzenny.

Znane problemy

  • Obecnie do korzystania z Jetpack Compose for XR wymagana jest wersja minSDK 30. Aby obejść ten problem, możesz dodać do pliku manifestu wpis <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>, który umożliwi kompilowanie i uruchamianie aplikacji z minSDK 23.
  • Aplikacje Jetpack XR wymagają obecnie uprawnienia android.permission.SCENE_UNDERSTANDING w pliku AndroidManifest.
  • Gdy aplikacja uruchamia się bezpośrednio w trybie pełnej przestrzeni za pomocą właściwości PROPERTY_XR_ACTIVITY_START_MODE w pliku manifestu, aktywności i aplikacje są początkowo otwierane w przestrzeni domowej, a następnie przechodzą do trybu pełnej przestrzeni.
  • Pliki glTF w komponentach Volume Composable mogą początkowo migotać w niewłaściwej lokalizacji.
  • Użycie elementu SpatialDialog w panelu, który został znacznie przesunięty, spowoduje przesunięcie treści w niewłaściwym kierunku.