Inizia a utilizzare OpenXR per Android XR

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

Prima di iniziare a creare con le estensioni OpenXR supportate o con un motore supportato, esamina 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_FULL_SPACE_UNMANAGED (solo OpenXR)

XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED

Le app create con OpenXR vengono avviate in Schermo intero e devono utilizzare la modalità di avvio XR_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>

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>

<uses-native-library> OpenXR

Le applicazioni OpenXR devono dichiarare l'utilizzo della libreria OpenXR nativa per caricare correttamente il runtime. Senza questa dichiarazione, il runtime non viene caricato.

<manifest ... >

    <application ... >

    <uses-native-library android:name="libopenxr.google.so" android:required="false" />

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

Le app che hanno come target la piattaforma Android XR e sono create con OpenXR o Unity devono includere questa funzionalità nel manifest dell'app con l'attributo android:required impostato su true.

Le app che utilizzano il pacchetto di estensioni Android XR per Unity versione 1.0.0 o successive o il pacchetto Unity OpenXR: Android XR versione 0.5.0-exp.1 o successive non devono aggiungere manualmente questo elemento al manifest dell'app. Questi due pacchetti inseriranno questo elemento nel manifest dell'app per te.

I dispositivi possono specificare una versione per questa funzionalità, che indica la versione più recente di OpenXR supportata dal dispositivo. I 16 bit più significativi rappresentano il numero principale, mentre i 16 bit meno significativi rappresentano il numero secondario. Ad esempio, per specificare la versione 1.1 di OpenXR, il valore deve essere 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 versione 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 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" />

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 con OpenXR: