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>
Propriété PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED
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 :