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 eseguire una delle seguenti operazioni:
- 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 Jetpack XR è la soluzione ideale 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 differenziate per realtà virtuale e realtà aumentata, 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 Home. 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 Spazio intero e devono utilizzare la modalità di avvioXR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED
. Lo spazio completo 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>
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 XR.
android.software.xr.immersive
Se la tua app ha come target la piattaforma Android XR e viene eseguita solo su piattaforme che supportano XR, imposta il valore su true. Se la tua app include alcune funzionalità ottimizzate per la realtà virtuale, ma può essere eseguita anche su dispositivi non XR, imposta il valore su false.
Per le app create con OpenXR o Unity è obbligatorio impostare questo valore su true.
<uses-feature android:name="android.software.xr.immersive" 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 display di grandi dimensioni
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 delle 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 dichiarante le autorizzazioni nel file AndroidManifest dell'app. Nel caso di autorizzazioni pericolose, la tua app potrebbe dover richiedere autorizzazioni di runtime. Per informazioni più dettagliate, leggi l'articolo Autorizzazioni su Android e le best practice per le autorizzazioni.
Autorizzazioni per le funzionalità XR
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
Casi d'uso che richiedono questa autorizzazione
Rappresentazione della posizione e dell'orientamento degli occhi dell'utente, ai fini degli avatar
Funzionalità dell'SDK Jetpack XR che richiedono questa autorizzazione
n/a
Estensioni OpenXR che richiedono questa autorizzazione
Funzionalità di Unity che richiedono questa autorizzazione
Android XR: AR Face
android.permission.EYE_TRACKING_FINE
Casi d'uso che richiedono questa autorizzazione
Input e interazioni con il puntatore oculare
Funzionalità dell'SDK Jetpack XR che richiedono questa autorizzazione
n/a
Estensioni OpenXR che richiedono questa autorizzazione
Funzionalità di Unity che richiedono questa autorizzazione
android.permission.FACE_TRACKING
Casi d'uso che richiedono questa autorizzazione
Monitoraggio e rendering delle espressioni facciali
Funzionalità dell'SDK Jetpack XR che richiedono questa autorizzazione
n/a
Estensioni OpenXR che richiedono questa autorizzazione
Funzionalità di Unity che richiedono questa autorizzazione
android.permission.HAND_TRACKING
Casi d'uso che richiedono questa autorizzazione
Monitoraggio delle posizioni delle articolazioni delle mani e delle velocità angolari e lineari; utilizzo di una rappresentazione mesh delle mani dell'utente
Funzionalità dell'SDK Jetpack XR che richiedono questa autorizzazione
n/a
Estensioni OpenXR che richiedono questa autorizzazione
Funzionalità di Unity che richiedono questa autorizzazione
android.permission.SCENE_UNDERSTANDING
Casi d'uso che richiedono questa autorizzazione
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; lavoro con la profondità per l'occlusione e il test di hit; ancore permanenti.
Funzionalità dell'SDK Jetpack XR che richiedono questa autorizzazione
Rilevamento aerei
Test di corrispondenza
Persistenza dell'ancora
Estensioni OpenXR che richiedono questa autorizzazione
Funzionalità di Unity che richiedono questa autorizzazione
Garantire la qualità delle app per Android XR
Per assicurarti che la tua app offra un'esperienza utente eccezionale, consulta le nostre norme sulla qualità delle app per Android XR.
Pacchettizzare e distribuire l'app per Android XR
Android XR offre un'ampia gamma di app ed esperienze per le cuffie 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.