Android XR est une extension de la plate-forme et de l'écosystème Android. Le SDK Android XR est conçu pour vous permettre de créer des applications XR à l'aide de frameworks et d'outils Android familiers, ou à l'aide de normes ouvertes telles qu'OpenXR et WebXR. Toutes les applications mobiles ou grand écran compatibles pourront être installées sur les casques XR depuis le Play Store. Consultez les considérations de compatibilité pour savoir si votre application est compatible.
Ce guide explique les points suivants:
- Choisir vos outils et technologies de développement
- Concevoir des applications pour Android XR
- Configurer le fichier manifeste de votre application
- Critères de compatibilité du fichier manifeste de l'application
- Comprendre les autorisations pour Android XR
- Assurer la qualité des applications Android XR
- Mettre en package et distribuer votre application pour Android XR
Sélectionner vos outils et technologies de développement
Lorsque vous créez une application pour Android XR, vous avez le choix entre les plates-formes et technologies de développement suivantes:
SDK Jetpack XR
Le SDK Jetpack XR contient des bibliothèques Jetpack Android XR conçues pour tirer parti des fonctionnalités uniques des appareils XR. Commencez avec ce SDK si vous souhaitez effectuer l'une des opérations suivantes:
- Optimiser ou améliorer une application mobile ou tablette Android existante
- Créer une application Android XR à l'aide d'Android Studio et de Jetpack
Si vous êtes déjà à l'aise avec le développement avec Android Jetpack, le SDK Jetpack XR est fait pour vous. Il est conçu pour s'intégrer parfaitement à ces frameworks et bibliothèques, et vous permet d'utiliser vos connaissances existantes pour créer des expériences XR immersives.
En savoir plus sur le développement avec le SDK Jetpack XR
Unity
Unity Engine est un moteur de développement 3D en temps réel qui permet aux artistes, concepteurs et développeurs de collaborer pour créer des expériences immersives et interactives. La prise en charge d'Android XR par Unity vous offre un haut niveau de contrôle sur les expériences 3D que vous développez, tout en profitant de la prise en charge d'OpenXR et de l'écosystème de développeurs d'Unity.
Si vous avez déjà créé une expérience XR avec Unity ou si vous connaissez le développement Unity, commencez par cette option.
En savoir plus sur le développement avec Unity pour Android XR
OpenXR
OpenXR est un standard ouvert sans redevances qui peut être utilisé pour créer des expériences XR multiplates-formes hautes performances. Android XR est compatible avec OpenXR 1.0 et 1.1. Nous étoffons la spécification avec de nouvelles extensions pour Android XR. Étant donné qu'Android XR est basé sur des normes ouvertes, les outils de développement compatibles avec OpenXR et Android devraient être compatibles avec Android XR.
En savoir plus sur la compatibilité d'Android XR avec OpenXR
WebXR
WebXR vous permet de créer des expériences immersives pour le Web. Il permet d'accéder aux appareils de RV et de RA dans les navigateurs Web compatibles, tels que Chrome sur Android XR.
Commencez par cette option si vous souhaitez créer une expérience XR pour le Web ou si vous souhaitez ajouter des fonctionnalités XR à une application Web. Les expériences WebXR existantes fonctionneront également sur Android XR.
En savoir plus sur la création d'applications Web avec WebXR
Concevoir pour la XR
La XR élargit la surface de conception au-delà des écrans plats traditionnels. Vous pouvez concevoir des expériences immersives qui mélangent la réalité physique et virtuelle. Que vous conceviez une toute nouvelle expérience ou que vous ajoutiez des éléments immersifs à une application existante, le guide de conception pour Android XR peut vous aider à vous lancer.
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_ACTIVITY_XR_START_MODE
La propriété android:name="android.window.PROPERTY_ACTIVITY_XR_START_MODE"
indique au système qu'une activité doit être lancée dans un mode spécifique lorsqu'elle est démarrée.
Cette propriété accepte trois valeurs:
XR_ACTIVITY_START_MODE_HOME_SPACE
(SDK Jetpack XR uniquement)XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED
(SDK Jetpack XR uniquement)XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED
(OpenXR uniquement)
XR_ACTIVITY_START_MODE_HOME_SPACE
(Applications compilées avec le SDK Jetpack XR uniquement)
Utilisez ce mode de démarrage pour lancer votre application dans un espace de la maison. Dans l'espace "Accueil", plusieurs applications peuvent s'exécuter côte à côte, ce qui permet aux utilisateurs de réaliser plusieurs tâches à la fois. Toute application Android pour mobile ou grand écran peut fonctionner dans Home Space, ainsi que les applications XR créées à l'aide du 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
(Applications compilées avec le SDK Jetpack XR uniquement)
Utilisez ce mode de démarrage pour lancer votre application en mode plein écran. Dans l'espace complet, une seule application s'exécute à la fois, sans limite d'espace, et toutes les autres applications sont masquées.
<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
(Applications créées avec OpenXR uniquement)
Les applications créées avec OpenXR se lancent en mode plein écran 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>
Fonctionnalités PackageManager pour les applications XR
Lorsque vous distribuez des applications via 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 présentées aux utilisateurs.
Les fonctionnalités suivantes sont spécifiques aux applications XR.
android.software.xr.immersive
Si votre application cible la plate-forme Android XR et ne s'exécute que sur les plates-formes compatibles avec XR, définissez la valeur sur "true". Si votre application comporte des fonctionnalités optimisées pour la RA, mais qu'elle peut également s'exécuter sur des appareils non RA, définissez la valeur sur "false".
Pour les applications créées avec OpenXR ou Unity, cette valeur doit obligatoirement être définie sur "true".
<uses-feature android:name="android.software.xr.immersive" android:required="true" />
android.hardware.xr.input.controller
Cette fonctionnalité indique que l'application nécessite l'entrée d'un contrôleur de mouvement à 6 degrés de liberté (6DoF) de haute précision pour fonctionner correctement. Si votre application est compatible avec les contrôleurs et ne peut pas fonctionner sans eux, définissez la valeur sur "true". Si votre application est compatible avec les contrôleurs, mais qu'elle peut fonctionner sans eux, définissez-la sur "false".
<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 elle, définissez la valeur sur "true". Si votre application est compatible avec le suivi des mains, mais qu'elle peut fonctionner sans lui, définissez-la sur "false".
<uses-feature android:name="android.hardware.xr.input.hand_tracking" android:required="true" />
android.hardware.xr.input.eye_tracking
Cet indicateur indique que l'application nécessite un suivi visuel haute fidélité pour que la saisie fonctionne correctement. Si votre application est compatible avec le suivi visuel pour la saisie et ne peut pas fonctionner sans elle, définissez la valeur sur "true". Si votre application est compatible avec le suivi visuel pour la saisie, mais qu'elle peut fonctionner sans lui, définissez-le sur "false".
<uses-feature android:name="android.hardware.xr.input.eye_tracking" android:required="true" />
Considérations de compatibilité du fichier manifeste de l'application pour les applications mobiles et sur grand écran
Comme décrit dans la section Fonctionnalités PackageManager pour les applications XR, les applications déclarent qu'elles utilisent une fonctionnalité en la déclarant dans un élément <uses-feature>
du fichier manifeste de l'application. Il est possible que certaines fonctionnalités, telles que la téléphonie ou le GPS, ne soient pas compatibles avec tous les appareils.
Fonctionnalités non compatibles
Le Google Play Store filtre les applications disponibles pour l'installation sur un appareil à l'aide des déclarations de fonctionnalités Android suivantes.
Matériel de la caméra
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
Connectivité
android.hardware.ipsec_tunnel_migration
Configuration de l'appareil
Configuration du facteur de forme
android.hardware.type.automotive
android.hardware.type.embedded
android.hardware.type.television
android.software.leanback_only
Entrée
android.software.input_methods
Position
Technologie NFC (communication en champ proche)
Configuration de la sécurité et matériel
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
Capteurs
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
Configuration logicielle
android.software.connectionservice
android.software.expanded_picture_in_picture
android.software.live_wallpaper
android.software.picture_in_picture
android.software.wallet_location_based_suggestions
Téléphonie
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
Réalité virtuelle (ancienne)
android.hardware.vr.headtracking
android.hardware.vr.high_performance
Widgets
Comprendre les autorisations pour la réalité XR
Tout comme les applications sur les appareils mobiles et d'autres facteurs de forme, certaines fonctionnalités proposées par les applications XR peuvent nécessiter que votre application déclare des autorisations dans son fichier AndroidManifest. Dans le cas d'autorisations dangereuses, votre application peut avoir besoin de demander des autorisations d'exécution. Pour en savoir plus, consultez les sections Autorisations sur Android et Bonnes pratiques concernant les autorisations.
Autorisations pour les fonctionnalités XR
Les autorisations suivantes peuvent être utilisées par les applications XR. Toutes les autorisations de cette section sont considérées comme dangereuses. Vous devez donc les déclarer dans le fichier manifeste de votre application et les demander au moment de l'exécution.
android.permission.EYE_TRACKING
Cas d'utilisation nécessitant cette autorisation
Représentation de la position et de l'orientation des yeux de l'utilisateur, à des fins d'avatar
Fonctionnalités du SDK Jetpack XR nécessitant cette autorisation
n/a
Extensions OpenXR nécessitant cette autorisation
Fonctionnalités Unity nécessitant cette autorisation
Android XR: visage en RA
android.permission.EYE_TRACKING_FINE
Cas d'utilisation nécessitant cette autorisation
Interactions et saisies par regard
Fonctionnalités du SDK Jetpack XR nécessitant cette autorisation
n/a
Extensions OpenXR nécessitant cette autorisation
Fonctionnalités Unity nécessitant cette autorisation
android.permission.FACE_TRACKING
Cas d'utilisation nécessitant cette autorisation
Suivre et afficher les expressions faciales
Fonctionnalités du SDK Jetpack XR nécessitant cette autorisation
n/a
Extensions OpenXR nécessitant cette autorisation
Fonctionnalités Unity nécessitant cette autorisation
android.permission.HAND_TRACKING
Cas d'utilisation nécessitant cette autorisation
Suivre les positions des articulations des mains et les vitesses angulaires et linéaires ; utiliser une représentation en maillage des mains de l'utilisateur
Fonctionnalités du SDK Jetpack XR nécessitant cette autorisation
n/a
Extensions OpenXR nécessitant cette autorisation
Fonctionnalités Unity nécessitant cette autorisation
android.permission.SCENE_UNDERSTANDING
Cas d'utilisation nécessitant cette autorisation
Estimation de la lumière ; projection du passthrough sur les surfaces de maillage ; exécution de raycasts sur les éléments de suivi dans l'environnement ; suivi des plans ; suivi des objets ; travail avec la profondeur pour l'occlusion et les tests de positionnement ; ancrages persistants.
Fonctionnalités du SDK Jetpack XR nécessitant cette autorisation
Suivi des vols
Test de positionnement
Persistance de l'ancre
Extensions OpenXR nécessitant cette autorisation
Fonctionnalités Unity nécessitant cette autorisation
Assurer la qualité des applications Android XR
Pour vous assurer que votre application offre une expérience utilisateur optimale, consultez nos Consignes relatives à la qualité des applications Android XR.
Mettre en package et distribuer votre application pour Android XR
Android XR propose un large éventail d'applications et d'expériences aux casques XR via Google Play. Le guide de création et de distribution d'applications pour Android XR contient des informations sur la prise en main du Play Store et de la Play Console, la publication de canaux, la préparation d'Android App Bundles et les restrictions de taille des applications.