Jetpack Compose na potrzeby XR

Tworzenie deklaratywnie układów UI przestrzennego, które korzystają z funkcji przestrzennych Androida XR.
Ostatnia aktualizacja Wersja stabilna Wersja kandydująca Wersja Beta Wersja alfa
12 grudnia 2024 r. - - - 1.0.0-alpha01

Deklarowanie zależności

Aby dodać zależność od XR Compose, musisz dodać repozytorium Google Maven do projektu. Więcej informacji znajdziesz w repozytorium Maven firmy 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-alpha01"

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

Kotlin

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

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

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

Opinia

Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli zauważysz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk z gwiazdką.

Tworzenie nowego zgłoszenia

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

Wersja 1.0

Wersja 1.0.0-alpha01

12 grudnia 2024 r.

androidx.xr.compose:compose-*1.0.0-alpha01 został zwolniony.

Funkcje wersji początkowej

  • Pierwsza wersja Jetpack Compose dla deweloperów przeznaczona na urządzenia XR. Korzystaj z dobrze znanych koncepcji Compose, takich jak wiersze i kolumny, aby tworzyć układy UI przestrzennego w XR, niezależnie od tego, czy przenosisz istniejące aplikacje 2D do XR, czy tworzysz nową aplikację XR od podstaw. Biblioteka ta zawiera komponenty do tworzenia aplikacji w przestrzeni i w przestrzeni 3D, takie jak panele 3D i orbitery, które umożliwiają umieszczanie dotychczasowego interfejsu użytkownika opartego na Compose 2D lub Views w układzie 3D. Wprowadza ona komponent podprzestrzeni Volume, który umożliwia umieszczanie elementów SceneCore, takich jak modele 3D, względem interfejsu użytkownika. Więcej informacji znajdziesz w tym przewodniku dla programistów:

    • Subspace: ten komponent można umieścić w dowolnym miejscu w hierarchii UI aplikacji, co umożliwia zachowanie układów interfejsu 2D i przestrzennego bez utraty kontekstu między plikami. Dzięki temu łatwiej jest udostępniać takie elementy jak istniejąca architektura aplikacji między XR a innymi formatami bez konieczności przenoszenia stanu przez całe drzewo interfejsu użytkownika ani przeprojektowywania aplikacji.

    • SpatialPanel: panel przestrzenny to komponent podprzestrzeni, który umożliwia wyświetlanie treści aplikacji. Możesz na przykład wyświetlić film, obrazy statyczne lub inne treści w panelu przestrzennym.

    • Orbiter: orbiter to przestrzenny element interfejsu. Jest ona przeznaczona do dołączania do odpowiedniego panelu przestrzennego i zawiera elementy nawigacji oraz działania kontekstowe powiązane z tym panelem. Jeśli na przykład utworzysz panel przestrzenny, aby wyświetlać treści wideo, możesz dodać elementy sterujące odtwarzaniem filmu w orbicie.

    • Objętość: umieszczanie elementów SceneCore, takich jak modele 3D, względem interfejsu.

  • Układ przestrzenny: możesz utworzyć wiele paneli przestrzennych i umieścić je w ramach układu przestrzennego za pomocą elementów SpatialRow, SpatialColumn, SpatialBoxSpatialLayoutSpacer. Użyj SubspaceModifier, aby dostosować układ.

  • Komponenty UI 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 przesunie się nieco w głębi, aby wyświetlić podwyższone okno dialogowe.
    • SpatialPopUp: panel przesunie się nieco w głębi, aby wyświetlić wyskakujące okienko
    • SpatialElevation: można ustawić opcję SpatialElevationLevel, aby dodać wzniesienie.
  • SpatialCapabilities: możliwości przestrzenne mogą się zmieniać, gdy użytkownicy korzystają z aplikacji lub systemu, a nawet mogą być zmieniane przez samą aplikację – na przykład przez przejście do pokoju domowego lub pełnego pokoju. Aby uniknąć problemów, aplikacja musi sprawdzić wartość LocalSpatialCapabilities.current, aby określić, które interfejsy API są obsługiwane w bieżącym środowisku. isSpatialUiEnabled: Elementy UI przestrzennego (np. SpatialPanel) isContent3dEnabled: obiekty 3D isAppEnvironmentEnabled: środowisko isPassthroughControlEnabled: czy aplikacja może kontrolować stan przepuszczania isSpatialAudioEnabled: dźwięk przestrzenny

Znane problemy

  • Obecnie do korzystania z Jetpack Compose na potrzeby XR wymagana jest minimalna wersja 30. Aby skompilować i uruchomić aplikację z wartością minSDK 23, możesz dodać do pliku manifestu wpis <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>.
  • Aplikacje Jetpack XR wymagają obecnie w pliku AndroidManifest.xml użycia uprawnienia android.permission.SCENE_UNDERSTANDING.
  • Gdy aplikacja uruchamia się bezpośrednio w Trybie pełnym, korzystając z właściwości PROPERTY_XR_ACTIVITY_START_MODE w pliku manifestu, czynności lub aplikacje są początkowo otwierane w obszarze Home, a potem przechodzą do Trybu pełnego.
  • Modele glTF w elementach składanych w objętości mogą początkowo migać w niewłaściwym miejscu.
  • Użycie SpatialDialog w panelu, który został przesunięty, spowoduje przesunięcie treści w niewłaściwym kierunku.