Android XR è un'estensione della piattaforma e dell'ecosistema Android. L'SDK Android XR è progettato per consentirti di creare app XR utilizzando framework e strumenti Android familiari o standard aperti come OpenXR e WebXR. Tutte le app compatibili per dispositivi mobili o con schermi di grandi dimensioni potranno essere installate sui visori XR dal Play Store. Esamina i considerazioni sulla compatibilità per verificare se la tua app è compatibile.
Questa guida illustra le seguenti aree:
- Selezione di strumenti e tecnologie di sviluppo
- Progettare app per Android XR
- Configurazione del file manifest dell'app
- Considerazioni sulla compatibilità del file manifest dell'app
- Informazioni sulle autorizzazioni per Android XR
- Garantire la qualità delle app per Android XR
- Pacchettizzazione e distribuzione dell'app per Android XR
Seleziona gli strumenti e le tecnologie di sviluppo
Quando crei un'app per Android XR, puoi scegliere tra le seguenti piattaforme e tecnologie di sviluppo:
SDK Jetpack XR
L'SDK Jetpack XR contiene librerie Jetpack per Android XR progettate per sfruttare le funzionalità uniche dei dispositivi XR. Inizia con questo SDK se vuoi:
- Ottimizzare o migliorare un'app mobile o per tablet Android esistente
- Creare una nuova app Android XR utilizzando Android Studio e Jetpack
Se hai già dimestichezza con lo sviluppo con Android Jetpack, l'SDK di Jetpack XR è la soluzione perfetta per te. È progettato per integrarsi perfettamente con questi framework e librerie e ti consente di utilizzare le conoscenze esistenti per creare esperienze XR immersive.
Scopri di più sullo sviluppo con l'SDK Jetpack XR.
Unity
Unity Engine è un motore di sviluppo 3D in tempo reale che consente a artisti, designer e sviluppatori di collaborare per creare esperienze immersive e interattive. Il supporto di Android XR di Unity ti offre un elevato livello di controllo sulle esperienze 3D che sviluppi, sfruttando al contempo il supporto di OpenXR e l'ecosistema di sviluppatori di Unity.
Se hai già un'esperienza XR creata con Unity o se hai familiarità con lo sviluppo di Unity, inizia con questa opzione.
Scopri di più sullo sviluppo con Unity per Android XR.
OpenXR
OpenXR è uno standard aperto esente da royalty che può essere utilizzato per creare esperienze XR multipiattaforma ad alte prestazioni. Android XR supporta OpenXR 1.0 e 1.1 e stiamo ampliando la specifica con nuove estensioni per Android XR. Poiché Android XR è basato su standard aperti, gli strumenti di sviluppo che supportano OpenXR e Android dovrebbero essere compatibili con Android XR.
Scopri di più sul supporto di OpenXR per Android XR.
WebXR
WebXR ti consente di creare esperienze immersive per il web. Fornisce l'accesso ai dispositivi VR e AR in browser web compatibili come Chrome su Android XR.
Inizia con questa opzione se vuoi creare un'esperienza XR per il web o se vuoi aggiungere funzionalità XR a un'app web. Le esperienze WebXR esistenti funzioneranno anche su Android XR.
Scopri di più sulla creazione di app web con WebXR.
Progettare per XR
L'XR espande la superficie di progettazione oltre gli schermi piatti tradizionali; puoi progettare esperienze immersive che fondono la realtà fisica e quella virtuale. Che tu stia sviluppando un'esperienza completamente nuova o aggiungendo elementi immersivi a un'app esistente, la guida al design per Android XR può aiutarti a iniziare.
Configura il file manifest dell'app
Come per altri progetti di app per Android, l'app Android XR deve avere un file AndroidManifest.xml con impostazioni manifest specifiche. Il file manifest descrive informazioni essenziali sulla tua app agli strumenti di compilazione Android, al sistema operativo Android e a Google Play. Per ulteriori informazioni, consulta la guida di panoramica del file manifest dell'app.
Per le app XR differenziate, il file manifest deve contenere i seguenti elementi e attributi:
Proprietà PROPERTY_ACTIVITY_XR_START_MODE
La proprietà android:name="android.window.PROPERTY_ACTIVITY_XR_START_MODE"
consente al sistema di sapere che un'attività deve essere avviata in una modalità specifica quando viene avviata.
Esistono tre valori possibili per questa proprietà:
XR_ACTIVITY_START_MODE_HOME_SPACE
(solo SDK Jetpack XR)XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED
(solo SDK Jetpack XR)XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED
(solo OpenXR)
XR_ACTIVITY_START_MODE_HOME_SPACE
(solo per le app create con l'SDK Jetpack XR)
Usa questa modalità di avvio per avviare l'app nello spazio della casa. In Home Space, più app possono essere eseguite affiancate, in modo che gli utenti possano svolgere più attività contemporaneamente. Qualsiasi app Android per dispositivi mobili o con schermi di grandi dimensioni può funzionare in Spazio Casa, così come le app XR create utilizzando l'SDK Jetpack XR.
<manifest ... >
<application ... >
<property
android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
android:value="XR_ACTIVITY_START_MODE_HOME_SPACE" />
<activity
android:name="com.example.myapp.MainActivity" ... >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED
(solo per le app create con l'SDK Jetpack XR)
Usa questa modalità di avvio per avviare l'app in Spazio intero. In Spazio intero viene eseguita una sola app alla volta, senza limiti di spazio e tutte le altre app vengono nascoste.
<manifest ... >
<application ... >
<property
android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
android:value="XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED" />
<activity
android:name="com.example.myapp.MainActivity" ... >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED
(solo app create con OpenXR)
Le app create con OpenXR vengono avviate in Full Space e devono utilizzare la modalità di avvioXR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED
. Spazio intero non gestito
indica ad Android XR che l'app utilizza OpenXR.
<manifest ... >
<application ... >
<property
android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
android:value="XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED" />
<activity
android:name="com.example.myapp.MainActivity" ... >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
<uses-native-library> OpenXR
(solo app create con OpenXR)
Le applicazioni OpenXR devono dichiarare l'utilizzo della libreria OpenXR nativa per caricare correttamente il relativo runtime. Senza questa dichiarazione, il runtime non verrà caricato.
<manifest ... >
<application ... >
<uses-native-library android:name="libopenxr.google.so" android:required="true" />
<activity
android:name="com.example.myapp.MainActivity" ... >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Funzionalità di PackageManager per le app XR
Quando distribuisci le app tramite il Google Play Store, puoi specificare le funzionalità hardware o software richieste nel file manifest dell'app. L'elemento
uses-feature
consente al Play Store di filtrare in modo appropriato le app
mostrate agli utenti.
Le seguenti funzionalità sono specifiche per le app differenziate per la realtà virtuale e la realtà aumentata.
android.software.xr.api.spatial
Le app create utilizzando l'SDK Jetpack XR devono includere questa funzionalità nel file manifest dell'app. Il valore impostato per l'attributo android:required
dipende dal canale di rilascio della tua app.
Se la tua app raggruppa funzionalità o contenuti differenziati per la realtà virtuale in un APK mobile esistente ed è pubblicata nel canale di rilascio mobile, devi impostare l'attributo android:required
su false
. Se la tua app è creata specificamente per i dispositivi compatibili con la realtà virtuale ed è pubblicata nel canale di rilascio dedicato Android XR, devi impostare l'attributo android:required
su true
.
<uses-feature android:name="android.software.xr.api.spatial" android:required="true" />
android.software.xr.api.openxr
Le app che hanno come target la piattaforma Android XR e sono create con OpenXR o Unity devono includere questa funzionalità nel file manifest dell'app con l'attributo android:required
impostato su true
.
Le app che utilizzano il pacchetto di estensioni Android XR per Unity nella versione 1.0.0 o successive o il pacchetto Unity OpenXR: Android XR nella versione 0.5.0-exp.1 o successive non devono aggiungere questo elemento manualmente al file manifest dell'app. Questi due pacchetti inietteranno questo elemento nel file manifest dell'app per conto tuo.
I dispositivi possono specificare una versione per questa funzionalità, che indica la versione più recente di OpenXR supportata dal dispositivo. I 16 bit più elevati rappresentano il numero maggiore e i 16 bit più bassi rappresentano il numero minore. Ad esempio, per specificare la versione 1.1 di OpenXR, il valore verrà impostato su "0x00010001".
Le app possono utilizzare la versione della funzionalità per indicare una versione minima di OpenXR richiesta dall'app. Ad esempio, se la tua app richiede il supporto di OpenXR 1.1, dichiara la seguente funzionalità:
<uses-feature android:name="android.software.xr.api.openxr"
android:version="0x00010001"
android:required="true" />
android.hardware.xr.input.controller
Questa funzionalità indica che l'app richiede l'input di un controller di movimento a 6 gradi di libertà (DoF) di alta precisione per funzionare correttamente. Se la tua app supporta i controller e non può funzionare senza, imposta il valore su true. Se la tua app supporta i controller, ma può funzionare anche senza, imposta il valore su false.
<uses-feature android:name="android.hardware.xr.input.controller" android:required="true" />
android.hardware.xr.input.hand_tracking
Questo flag indica che l'app richiede il monitoraggio delle mani ad alta fedeltà per funzionare correttamente, inclusa la posizione, l'orientamento e la velocità delle articolazioni della mano dell'utente. Se la tua app supporta il rilevamento delle mani e non può funzionare senza, imposta il valore su true. Se la tua app supporta il rilevamento delle mani, ma può funzionare anche senza, imposta il valore su false.
<uses-feature android:name="android.hardware.xr.input.hand_tracking" android:required="true" />
android.hardware.xr.input.eye_tracking
Questo flag indica che l'app richiede il monitoraggio oculare ad alta fedeltà per il corretto funzionamento dell'input. Se la tua app supporta il monitoraggio oculare per l'input e non può funzionare senza, imposta il valore su true. Se la tua app supporta il monitoraggio oculare per l'input, ma può funzionare anche senza, imposta il valore su false.
<uses-feature android:name="android.hardware.xr.input.eye_tracking" android:required="true" />
Considerazioni sulla compatibilità del file manifest dell'app per le app per dispositivi mobili e con schermi grandi
Come descritto nella sezione Funzionalità di PackageManager per le app XR, le app dichiarano di utilizzare una funzionalità dichiarandola in un elemento <uses-feature>
nel file manifest dell'app. Alcune funzionalità, come la telefonia o il GPS, potrebbero non essere compatibili con tutti i dispositivi.
Funzionalità non supportate
Il Google Play Store filtra le applicazioni disponibili per l'installazione su un dispositivo utilizzando le seguenti dichiarazioni di funzionalità Android.
Hardware della videocamera
android.hardware.camera.autofocus
android.hardware.camera.capability.manual_post_processing
android.hardware.camera.capability.manual_sensor
android.hardware.camera.capability.raw
android.hardware.camera.concurrent
android.hardware.camera.external
android.hardware.camera.level.full
Connettività
android.hardware.ipsec_tunnel_migration
Configurazione del dispositivo
Configurazione del fattore di forma
android.hardware.type.automotive
android.hardware.type.embedded
android.hardware.type.television
android.software.leanback_only
Input
android.software.input_methods
Posizione
NFC (Near Field Communication)
Configurazione di sicurezza e hardware
android.hardware.se.omapi.uicc
android.hardware.biometrics.face
android.hardware.identity_credential
android.hardware.identity_credential_direct_access
android.hardware.keystore.limited_use_key
android.hardware.keystore.single_use_key
android.hardware.strongbox_keystore
Sensori
android.hardware.sensor.accelerometer_limited_axes
android.hardware.sensor.accelerometer_limited_axes_uncalibrated
android.hardware.sensor.ambient_temperature
android.hardware.sensor.barometer
android.hardware.sensor.gyroscope_limited_axes
android.hardware.sensor.gyroscope_limited_axes_uncalibrated
android.hardware.sensor.heading
android.hardware.sensor.heartrate
android.hardware.sensor.heartrate.ecg
android.hardware.sensor.hinge_angle
android.hardware.sensor.relative_humidity
android.hardware.sensor.stepcounter
android.hardware.sensor.stepdetector
Configurazione software
android.software.connectionservice
android.software.expanded_picture_in_picture
android.software.live_wallpaper
android.software.picture_in_picture
android.software.wallet_location_based_suggestions
Telefonia
android.hardware.telephony.calling
android.hardware.telephony.cdma
android.hardware.telephony.data
android.hardware.telephony.euicc
android.hardware.telephony.euicc.mep
android.hardware.telephony.gsm
android.hardware.telephony.ims
android.hardware.telephony.mbms
android.hardware.telephony.messaging
android.hardware.telephony.radio.access
android.hardware.telephony.subscription
Realtà virtuale (legacy)
android.hardware.vr.headtracking
android.hardware.vr.high_performance
Widget
Informazioni sulle autorizzazioni per XR
Come per le app su dispositivi mobili e altri fattori di forma, alcune funzionalità offerte dalle app XR potrebbero richiedere che la tua app dichiare le autorizzazioni nel file AndroidManifest. Nel caso di autorizzazioni pericolose, la tua app potrebbe dover richiedere autorizzazioni di runtime. Per saperne di più, consulta le sezioni Autorizzazioni su Android e Best practice per le autorizzazioni.
Le seguenti autorizzazioni potrebbero essere utilizzate dalle app XR. Tutte le autorizzazioni in questa sezione sono considerate pericolose, quindi devi dichiararle nel file manifest dell'app e richiederle in fase di runtime.
android.permission.EYE_TRACKING_COARSE
Rappresentazione della posizione, dello stato e dell'orientamento degli occhi dell'utente, ad esempio per l'utilizzo con gli avatar. Utilizza questa autorizzazione quando sono necessari dati di monitoraggio degli occhi con bassa precisione.
SDK Jetpack XR
n/a
Estensioni OpenXR
Funzionalità di Unity
android.permission.EYE_TRACKING_FINE
Sguardo per selezione, input e interazioni.
SDK Jetpack XR
n/a
Estensioni OpenXR
Funzionalità di Unity
android.permission.FACE_TRACKING
Monitoraggio e rendering delle espressioni facciali.
SDK Jetpack XR
n/a
Estensioni OpenXR
Funzionalità di Unity
android.permission.HAND_TRACKING
Monitoraggio delle posizioni delle articolazioni delle mani e delle velocità angolari e lineari; utilizzo di una rappresentazione mesh delle mani dell'utente.
SDK Jetpack XR
Estensioni OpenXR
Funzionalità di Unity
android.permission.SCENE_UNDERSTANDING_COARSE
Stima della luce; proiezione del passthrough sulle superfici del mesh; esecuzione di raycast contro gli elementi tracciabili nell'ambiente; monitoraggio del piano; monitoraggio degli oggetti; ancore permanenti.
SDK Jetpack XR
Estensioni OpenXR
Funzionalità di Unity
android.permission.SCENE_UNDERSTANDING_FINE
Texture di profondità.
SDK Jetpack XR
n/a
Estensioni OpenXR
Funzionalità di Unity
Garantire la qualità delle app per Android XR
Per assicurarti che la tua app offra un'esperienza utente ottimale, consulta le nostre linee guida per la qualità delle app Android XR.
Pacchettizzare e distribuire l'app per Android XR
Android XR offre un'ampia gamma di app ed esperienze per i visori XR tramite Google Play. Nella guida per il packaging e la distribuzione di app per Android XR, troverai informazioni su come iniziare a utilizzare il Play Store e Play Console, sui canali di pubblicazione, sulla preparazione di app bundle per Android e sulle limitazioni delle dimensioni delle app.