Jetpack Compose per XR

Crea in modo dichiarativo layout dell'interfaccia utente spaziale che sfruttano le funzionalità spaziali di Android XR.
Ultimo aggiornamento Release stabile Candidato per la release Versione beta Versione alpha
12 dicembre 2024 - - - 1.0.0-alpha01

Dichiarazione delle dipendenze

Per aggiungere una dipendenza a XR compose, devi aggiungere il repository Maven di Google al tuo progetto. Per ulteriori informazioni, consulta il repository Maven di Google.

Aggiungi le dipendenze per gli elementi necessari nel file build.gradle per la tua app o il tuo modulo:

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

Per ulteriori informazioni sulle dipendenze, consulta Aggiungere dipendenze di compilazione.

Feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa raccolta. Prima di crearne uno nuovo, dai un'occhiata ai problemi esistenti in questa raccolta. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.

Creare un nuovo problema

Per ulteriori informazioni, consulta la documentazione del Monitoraggio problemi.

Versione 1.0

Versione 1.0.0-alpha01

12 dicembre 2024

androidx.xr.compose:compose-*1.0.0-alpha01 viene rilasciato.

Funzionalità della versione iniziale

  • Versione iniziale per sviluppatori di Jetpack Compose per XR. Utilizza concetti di Compose familiari, come righe e colonne, per creare layout dell'interfaccia utente spaziale in XR, indipendentemente dal fatto che tu stia eseguendo il porting di un'app 2D esistente in XR o creando una nuova app XR da zero. Questa libreria fornisce composibili nello spazio e nello spazio sottostante, ad esempio pannelli e orbiter spaziali, che ti consentono di posizionare l'interfaccia utente 2D esistente basata su Compose o su Views in un layout spaziale. Viene introdotto il composable sottospazio Volume, che consente di posizionare entità SceneCore, come i modelli 3D, rispetto all'interfaccia utente. Scopri di più in questa guida per gli sviluppatori:

    • Subspace: questo composable può essere posizionato in qualsiasi punto della gerarchia dell'interfaccia utente dell'app, consentendoti di mantenere i layout per l'interfaccia utente 2D e spaziale senza perdere il contesto tra i file. In questo modo è più facile condividere elementi come l'architettura dell'app esistente tra XR e altri fattori di forma senza dover eseguire l'elevazione dello stato nell'intera struttura dell'interfaccia utente o ristrutturare l'app.

    • SpatialPanel: un riquadro spaziale è un componente componibile sottospaziale che ti consente di visualizzare i contenuti dell'app. Ad esempio, in un riquadro spaziale puoi visualizzare la riproduzione di video, immagini fisse o qualsiasi altro contenuto.

    • Orbiter: un orbiter è un componente dell'interfaccia utente spaziale. È progettato per essere collegato a un riquadro spaziale corrispondente e contiene attività di navigazione e contestuali relative a quel riquadro spaziale. Ad esempio, se hai creato un riquadro spaziale per visualizzare contenuti video, puoi aggiungere i controlli di riproduzione video all'interno di un orbiter.

    • Volume: posiziona le entità SceneCore, ad esempio i modelli 3D, rispetto all'interfaccia utente.

  • Layout spaziale: puoi creare più riquadri spaziali e posizionarli all'interno di un layout spaziale utilizzando SpatialRow, SpatialColumn, SpatialBox e SpatialLayoutSpacer. Utilizza i SubspaceModifier per personalizzare il layout.

  • Componenti dell'interfaccia utente spaziale: questi elementi possono essere riutilizzati nell'interfaccia utente 2D e i relativi attributi spaziali saranno visibili solo quando le funzionalità spaziali sono attivate.

    • SpatialDialog: il riquadro si spingerà leggermente indietro in profondità z per visualizzare una finestra di dialogo in primo piano.
    • SpatialPopUp: il riquadro si spingerà leggermente indietro in Z-depth per visualizzare un popup rialzato
    • SpatialElevation: SpatialElevationLevel può essere impostato per aggiungere l'elevazione.
  • SpatialCapabilities: le funzionalità spaziali possono cambiare man mano che gli utenti interagiscono con la tua app o con il sistema oppure possono essere modificate anche dalla tua app stessa, ad esempio passando allo spazio della casa o allo spazio completo. Per evitare problemi, l'app deve verificare la presenza di LocalSpatialCapabilities.current per determinare quali API sono supportate nell'ambiente corrente. isSpatialUiEnabled: elementi dell'interfaccia utente spaziale (ad es. SpatialPanel) isContent3dEnabled: oggetti 3D isAppEnvironmentEnabled: l'ambiente isPassthroughControlEnabled: indica se l'applicazione può controllare o meno lo stato di passthrough isSpatialAudioEnabled: audio spaziale

Problemi noti

  • Al momento è necessaria una versione minima dell'SDK pari a 30 per utilizzare Jetpack Compose per XR. Come soluzione alternativa, puoi aggiungere la seguente voce manifest <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> per poter compilare ed eseguire con un minSDK di 23.
  • Al momento le app Jetpack XR richiedono la richiesta dell'autorizzazione android.permission.SCENE_UNDERSTANDING in AndroidManifest.
  • Quando un'app viene avviata direttamente nello spazio intero utilizzando la proprietà PROPERTY_XR_ACTIVITY_START_MODE nel file manifest, le attività/le applicazioni vengono inizialmente aperte nello spazio Home prima di passare allo spazio intero.
  • I file glTF nei composabili di volume potrebbero inizialmente tremolare nella posizione sbagliata.
  • L'utilizzo di un riquadro SpatialDialog in un riquadro che è stato spostato in modo significativo spingerà i contenuti nella direzione sbagliata.