Jetpack Compose untuk XR

Buat tata letak UI spasial secara deklaratif yang memanfaatkan kemampuan spasial Android XR.
Update Terbaru Rilis Stabil Kandidat Rilis Rilis Beta Rilis Alfa
12 Desember 2024 - - - 1.0.0-alpha01

Mendeklarasikan dependensi

Untuk menambahkan dependensi pada XR compose, Anda harus menambahkan repositori Maven Google ke project Anda. Baca repositori Maven Google untuk mengetahui informasi selengkapnya.

Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle bagi aplikasi atau modul Anda:

Groovy

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

Untuk informasi dependensi selengkapnya, lihat Menambahkan dependensi build.

Masukan

Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.

Laporkan masalah baru

Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.

Versi 1.0

Versi 1.0.0-alpha01

12 Desember 2024

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

Fitur Rilis Awal

  • Rilis developer awal Jetpack Compose untuk XR. Gunakan konsep Compose yang sudah dikenal seperti baris dan kolom untuk membuat tata letak UI spasial di XR, baik Anda mem-porting aplikasi 2D yang ada ke XR atau membuat aplikasi XR baru dari awal. Library ini menyediakan subruang dan composable spasial: seperti panel spasial dan orbiter, yang memungkinkan Anda menempatkan UI berbasis Compose 2D atau View yang ada dalam tata letak spasial. Versi ini memperkenalkan composable Volume subspace, yang memungkinkan Anda menempatkan entity SceneCore, seperti model 3D, relatif terhadap UI. Pelajari lebih lanjut di panduan developer ini:

    • Subspace: Composable ini dapat ditempatkan di mana saja dalam hierarki UI aplikasi, sehingga Anda dapat mempertahankan tata letak untuk UI 2D dan spasial tanpa kehilangan konteks antar-file. Hal ini memudahkan Anda untuk berbagi hal-hal seperti arsitektur aplikasi yang ada antara XR dan faktor bentuk lainnya tanpa perlu mengangkat status melalui seluruh hierarki UI atau mendesain ulang aplikasi.

    • SpatialPanel: Panel spasial adalah composable subspace yang memungkinkan Anda menampilkan konten aplikasi–misalnya, Anda dapat menampilkan pemutaran video, gambar diam, atau konten lainnya di panel spasial.

    • Orbiter: Orbiter adalah komponen UI spasial. Panel ini dirancang untuk dilampirkan ke panel spasial yang sesuai, dan berisi navigasi serta item tindakan kontekstual yang terkait dengan panel spasial tersebut. Misalnya, jika telah membuat panel spasial untuk menampilkan konten video, Anda dapat menambahkan kontrol pemutaran video di dalam orbiter.

    • Volume: Menempatkan entity SceneCore, seperti model 3D, relatif terhadap UI Anda.

  • Tata Letak Spasial: Anda dapat membuat beberapa panel spasial dan menempatkannya dalam Tata Letak Spasial menggunakan SpatialRow, SpatialColumn, SpatialBox, dan SpatialLayoutSpacer. Gunakan SubspaceModifier untuk menyesuaikan tata letak Anda.

  • Komponen UI spasial: Elemen ini dapat digunakan kembali di UI 2D Anda, dan atribut spasialnya hanya akan terlihat saat kemampuan spasial diaktifkan.

    • SpatialDialog: Panel akan sedikit didorong ke belakang dalam kedalaman z untuk menampilkan dialog yang ditinggikan.
    • SpatialPopUp: Panel akan sedikit didorong kembali dalam kedalaman z untuk menampilkan pop-up yang ditinggikan
    • SpatialElevation: SpatialElevationLevel dapat disetel untuk menambahkan elevasi.
  • SpatialCapabilities: Kemampuan spasial dapat berubah saat pengguna berinteraksi dengan aplikasi atau sistem Anda, atau bahkan dapat diubah oleh aplikasi Anda sendiri—misalnya, berpindah ke Ruang Rumah atau Ruang Penuh. Untuk menghindari masalah, aplikasi Anda perlu memeriksa LocalSpatialCapabilities.current untuk menentukan API mana yang didukung di lingkungan saat ini. isSpatialUiEnabled: Elemen UI spasial (misalnya, SpatialPanel) isContent3dEnabled: Objek 3D isAppEnvironmentEnabled: Lingkungan isPassthroughControlEnabled: Apakah aplikasi dapat mengontrol status passthrough atau tidak isSpatialAudioEnabled: Audio spasial

Masalah Umum

  • Saat ini, minSDK 30 diperlukan untuk menggunakan Jetpack Compose untuk XR. Sebagai solusi, Anda dapat menambahkan entri manifes <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> berikut agar dapat mem-build dan menjalankan dengan minSDK 23.
  • Aplikasi Jetpack XR saat ini memerlukan permintaan izin android.permission.SCENE_UNDERSTANDING di AndroidManifest.
  • Saat aplikasi diluncurkan langsung ke Ruang Penuh menggunakan properti PROPERTY_XR_ACTIVITY_START_MODE dalam manifesnya, Aktivitas/Aplikasi awalnya dibuka di Ruang Layar Utama sebelum bertransisi ke Ruang Penuh.
  • glTF di Volume Composables pada awalnya mungkin berkedip di lokasi yang salah.
  • Menggunakan SpatialDialog di panel yang telah dipindahkan secara signifikan akan mendorong konten ke arah yang salah.