Inizia a creare esperienze immersive

Dispositivi XR applicabili
Queste indicazioni ti aiutano a creare esperienze per questi tipi di dispositivi XR.
Visori XR
Occhiali XR con cavo

Dopo aver installato e configurato Android Studio, creato un progetto e configurato l'SDK Jetpack XR, puoi iniziare a creare esperienze coinvolgenti.

Prima di iniziare a esplorare tutti i modi in cui puoi creare, rivedi le informazioni e completa le attività nelle sezioni seguenti per assicurarti che la tua app sia configurata per lo sviluppo di XR immersiva.

Configura il file manifest dell'app

Come per gli altri progetti di app per Android, la tua app Android XR deve avere un file AndroidManifest.xml con impostazioni manifest specifiche. Il file manifest descrive le informazioni essenziali sulla tua app agli strumenti di compilazione Android, al sistema operativo Android e a Google Play. Per ulteriori informazioni, consulta la guida alla panoramica del file manifest dell'app.

Per le app differenziate per XR, il file manifest deve contenere i seguenti elementi e attributi:

Proprietà PROPERTY_XR_ACTIVITY_START_MODE

La proprietà android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE" indica al sistema che un'attività deve essere avviata in una modalità specifica quando viene avviata.

Questa proprietà ha i seguenti valori:

  • 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_HOME_SPACE

Usa questa modalità di avvio per lanciare l'app nello spazio Home. Nello spazio Home, più app possono essere eseguite una accanto all'altra, in modo che gli utenti possano svolgere più attività contemporaneamente. Qualsiasi app per Android per dispositivi mobili o schermi di grandi dimensioni può funzionare in Spazio Home, 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

Utilizza questa modalità di avvio per lanciare l'app in Schermo intero. In Spazio completo, viene eseguita un'app alla volta, senza limiti di spazio, e tutte le altre app sono 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>

La proprietà android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED" indica che l'applicazione deve essere avviata con un tipo specifico di confine. La tua app deve specificare XR_BOUNDARY_TYPE_LARGE se è progettata per consentire agli utenti di muoversi nel loro spazio fisico. La specifica di XR_BOUNDARY_TYPE_NO_RECOMMENDATION non fornisce consigli per il tipo di perimetro di sicurezza, quindi il sistema utilizza il tipo già in uso.

<manifest ... >

   <application ... >
       <property
           android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED"
           android:value="XR_BOUNDARY_TYPE_LARGE" />
   </application>
</manifest>

Funzionalità di PackageManager per le app XR

Quando distribuisci app tramite il Google Play Store, puoi specificare le funzionalità hardware o software richieste nel 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 XR.

android.software.xr.api.spatial

Le app create utilizzando l'SDK Jetpack XR devono includere questa funzionalità nel manifest dell'app. Il valore che imposti per l'attributo android:required dipende dal canale di rilascio della tua app.

Se i tuoi app bundle includono funzionalità o contenuti differenziati per XR in un APK mobile esistente e vengono pubblicati nel canale di rilascio mobile, imposta l'attributo android:required su false:

<!-- If you are publishing an existing mobile APK using the mobile release track, set android:required to false.-->
<uses-feature android:name="android.software.xr.api.spatial" android:required="false" />

Se la tua app è creata appositamente per i dispositivi compatibili con XR e viene pubblicata nel canale di rilascio dedicato ad Android XR, imposta l'attributo android:required su true:

<!-- If you are publishing a separate APK for XR using the dedicated Android XR release track, set android:required to true.-->
<uses-feature android:name="android.software.xr.api.spatial" android:required="true" />

android.hardware.xr.input.controller

Questa funzionalità indica che l'app richiede l'input di un controller di movimento a 6DoF (gradi di libertà) 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 senza, impostala su false.

<!-- Sets android:required to true, indicating that your app can't function on devices without controllers. -->
<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 rilevamento della mano ad alta fedeltà per funzionare correttamente, inclusi posizione, orientamento e velocità delle articolazioni della mano dell'utente. Se la tua app supporta il monitoraggio della mano e non può funzionare senza questa funzionalità, imposta il valore su true. Se la tua app supporta il monitoraggio della mano, ma può funzionare senza, impostalo su false.

<!-- Sets android:required to true, indicating that your app can't function on devices without hand tracking. -->
<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 un eye tracking ad alta fedeltà per l'input per funzionare correttamente. Se la tua app supporta il tracciamento 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 senza, impostalo su false.

<!-- Sets android:required to true, indicating that your app can't function on devices without eye tracking. -->
<uses-feature android:name="android.hardware.xr.input.eye_tracking" android:required="true" />

Considerazioni sulla compatibilità del file manifest dell'app per app mobile e per schermi 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.

Per visualizzare un elenco delle funzionalità abilitate per un dispositivo, esegui adb shell pm list features.

Funzionalità non supportate

I filtri del Google Play Store disponibili per l'installazione su un dispositivo filtrano le applicazioni utilizzando le seguenti dichiarazioni di funzionalità di Android.

Hardware della videocamera

android.hardware.camera.ar

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.flash

android.hardware.camera.level.full

Connettività

android.hardware.ethernet

android.hardware.uwb

android.hardware.ipsec_tunnel_migration

Configurazione del dispositivo

android.hardware.ram.low

Configurazione del fattore di forma

android.hardware.type.automotive

android.hardware.type.embedded

android.hardware.type.pc

android.hardware.type.television

android.hardware.type.watch

android.software.leanback

android.software.leanback_only

android.software.live_tv

Input

android.hardware.consumerir

android.software.input_methods

Posizione

android.hardware.location.gps

NFC (Near Field Communication)

android.hardware.nfc

android.hardware.nfc.ese

android.hardware.nfc.hce

android.hardware.nfc.hcef

android.hardware.nfc.uicc

android.hardware.nfc.beam

Configurazione di sicurezza e hardware

android.hardware.se.omapi.ese

android.hardware.se.omapi.sd

android.hardware.se.omapi.uicc

android.hardware.biometrics.face

android.hardware.fingerprint

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.light

android.hardware.sensor.relative_humidity

android.hardware.sensor.stepcounter

android.hardware.sensor.stepdetector

Configurazione software

android.software.backup

android.software.connectionservice

android.software.expanded_picture_in_picture

android.software.live_wallpaper

android.software.picture_in_picture

android.software.telecom

android.software.wallet_location_based_suggestions

Telefonia

android.hardware.telephony

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

android.software.sip

android.software.sip.voip

Realtà virtuale (legacy)

android.hardware.vr.headtracking

android.hardware.vr.high_performance

android.software.vr.mode

Widget

android.software.app_widgets

Passaggi successivi

Ora che hai terminato la configurazione del manifest dell'app e la revisione delle informazioni importanti, scopri i modi in cui puoi creare esperienze coinvolgenti: