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 febbraio 2025 - - - 1.0.0-alpha02

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:

Alla moda

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-alpha02

12 febbraio 2025

androidx.xr.compose:compose:1.0.0-alpha02 e androidx.xr.compose:compose-testing:1.0.0-alpha02 vengono rilasciati. La versione 1.0.0-alpha02 contiene questi commit.

Nuove funzionalità

  • Ora il riquadro delle attività può oscurare i contenuti quando è attivata una finestra di dialogo spaziale.
  • L'API Orbiter è ora utilizzabile nei contesti SubspaceComposable e collegherà gli Orbiter al relativo elemento principale composable basato su SubspaceLayout più vicino.
  • È stato introdotto LayoutCoordinatesAwareModifierNode per consentire modificatori basati sul posizionamento personalizzato.
  • Sono stati aggiunti metodi del ciclo di vita di attacco/scollegamento a SubspaceModifier.Node.
  • È stato aggiunto scaleWithDistance al modificatore mobile. Quando scaleWithDistance è attivato, l'elemento sottospazio spostato aumenta o diminuisce. Mantiene inoltre qualsiasi scala esplicita che aveva prima del movimento.

Modifiche all'API

  • SessionCallbackProvider è stato rimosso in favore di SpatialCapabilities.

Altre modifiche

  • Ridotto da minSDK a 24. Tutte le API Jetpack XR continuano a richiedere l'API 34 in fase di runtime.
  • I costruttori Orbiter EdgeOffset.inner, EdgeOffset.outer e EdgeOffset.overlap non sono più metodi @Composable, il che consente di utilizzarli in contesti non componibili.
  • Aggiorna i livelli di elevazione spaziale in modo che corrispondano alle ultime specifiche UX.
  • Implementa l'interfaccia SubspaceSemanticsInfo in MeasurableLayout.
  • SubspaceModifierElement rinominato in SubspaceModifierNodeElement.

Correzioni di bug

  • Correzioni per stabilizzare l'ordinamento SubspaceModifier. SubspaceModifier dovrebbe comportarsi in modo più affidabile. Ora i modificatori offset, ruota, scala, spostabile e ridimensionabile dovrebbero essere utilizzabili in qualsiasi ordine.

Versione 1.0.0-alpha01

12 dicembre 2024

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

Funzionalità della versione iniziale

  • Release 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 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'hoisting 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'altitudine.
  • 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

  • Attualmente è 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 eseguire la compilazione e l'esecuzione 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 componenti composibili del volume potrebbero inizialmente sfarfallare nella posizione sbagliata.
  • L'utilizzo di un riquadro SpatialDialog in un riquadro che è stato spostato in modo significativo spingerà i contenuti nella direzione sbagliata.