Premiers pas avec OpenXR pour Android XR

Appareils XR concernés
Ces conseils vous aident à créer des expériences pour ces types d'appareils XR.
Casques XR
Lunettes XR filaires

Avant de commencer à créer des applications avec les extensions OpenXR ou un moteur compatibles, consultez les informations et effectuez les tâches des sections suivantes pour vous assurer que votre application est configurée pour le développement XR immersif.

Configurer le fichier manifeste de votre application

Comme pour les autres projets d'applications Android, votre application Android XR doit disposer d'un fichier AndroidManifest.xml avec des paramètres de fichier manifeste spécifiques. Le fichier manifeste fournit aux outils de compilation Android, au système d'exploitation Android et à Google Play des informations essentielles sur votre application. Pour en savoir plus, consultez le guide de présentation du fichier manifeste d'application.

Pour les applications différenciées XR, votre fichier manifeste doit contenir les éléments et attributs suivants :

Propriété PROPERTY_XR_ACTIVITY_START_MODE

La propriété android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE" indique au système qu'une activité doit être lancée dans un mode spécifique lorsqu'elle démarre.

Cette propriété accepte les valeurs suivantes :

  • XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED (OpenXR uniquement)

XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED

Les applications conçues avec OpenXR se lancent en mode Full Space et doivent utiliser le mode de démarrage XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED. L'espace complet non géré indique à Android XR que l'application utilise 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 propriété android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED" indique que l'application doit être lancée avec un type de limite spécifique. Votre application doit spécifier XR_BOUNDARY_TYPE_LARGE si elle est conçue pour permettre aux utilisateurs de se déplacer dans leur espace physique. Si vous spécifiez XR_BOUNDARY_TYPE_NO_RECOMMENDATION, aucune recommandation n'est fournie pour le type de limite de sécurité. Le système utilise donc le type déjà en place.

<manifest ... >

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

<uses-native-library> OpenXR

Les applications OpenXR doivent déclarer l'utilisation de la bibliothèque OpenXR native pour charger correctement son environnement d'exécution. Sans cette déclaration, le temps d'exécution ne peut pas se charger.

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

Fonctionnalités de PackageManager pour les applications XR

Lorsque vous distribuez des applications sur le Google Play Store, vous pouvez spécifier les fonctionnalités matérielles ou logicielles requises dans le fichier manifeste de l'application. L'élément uses-feature permet au Play Store de filtrer correctement les applications affichées aux utilisateurs.

Les fonctionnalités suivantes sont spécifiques aux applications différenciées XR.

android.software.xr.api.openxr

Les applications ciblant la plate-forme Android XR et conçues avec OpenXR ou Unity doivent inclure cette fonctionnalité dans le fichier manifeste de l'application, avec l'attribut android:required défini sur true.

Les applications qui utilisent le package d'extensions Android XR pour Unity version 1.0.0 ou ultérieure ou le package Unity OpenXR : Android XR version 0.5.0-exp.1 ou ultérieure n'ont pas besoin d'ajouter cet élément manuellement au fichier manifeste de l'application. Ces deux packages injecteront cet élément dans le fichier manifeste de l'application pour vous.

Les appareils peuvent spécifier une version pour cette fonctionnalité, qui indique la version la plus récente d'OpenXR compatible avec l'appareil. Les 16 bits supérieurs représentent le nombre principal, et les 16 bits inférieurs représentent le nombre mineur. Par exemple, pour spécifier OpenXR version 1.1, la valeur doit être définie sur "0x00010001".

Les applications peuvent utiliser la version de la fonctionnalité pour indiquer la version minimale d'OpenXR requise par l'application. Par exemple, si votre application nécessite la compatibilité avec OpenXR version 1.1, déclarez la fonctionnalité suivante :

<uses-feature android:name="android.software.xr.api.openxr"
    android:version="0x00010001"
    android:required="true" />

android.hardware.xr.input.controller

Cette fonctionnalité indique que l'application nécessite une entrée d'un contrôleur de mouvement 6 DoF (degrés de liberté) de haute précision pour fonctionner correctement. Si votre application est compatible avec les manettes et ne peut pas fonctionner sans elles, définissez la valeur sur true. Si votre application est compatible avec les manettes, mais peut fonctionner sans, définissez-la sur 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

Cet indicateur indique que l'application nécessite un suivi des mains haute fidélité pour fonctionner correctement, y compris la position, l'orientation et la vitesse des articulations de la main de l'utilisateur. Si votre application est compatible avec le suivi des mains et ne peut pas fonctionner sans, définissez la valeur sur true. Si votre application est compatible avec le suivi des mains, mais peut fonctionner sans, définissez-le sur 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

Ce flag indique que l'application nécessite un suivi oculaire haute fidélité pour que la saisie fonctionne correctement. Si votre application est compatible avec le suivi du regard pour la saisie et ne peut pas fonctionner sans, définissez la valeur sur true. Si votre application est compatible avec le suivi du regard pour la saisie, mais peut fonctionner sans, définissez-le sur 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" />

Étapes suivantes

Maintenant que vous avez terminé de configurer le fichier manifeste de votre application et d'examiner les informations importantes, découvrez comment créer des applications avec OpenXR :