Présentation de la compilation pour Android XR

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

Connectivité

android.hardware.ethernet

android.hardware.uwb

android.hardware.ipsec_tunnel_migration

Configuration de l'appareil

android.hardware.ram.low

Configuration du facteur de forme

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

Entrée

android.hardware.consumerir

android.software.input_methods

Position

android.hardware.location.gps

Technologie NFC (communication en champ proche)

android.hardware.nfc

android.hardware.nfc.ese

android.hardware.nfc.hce

android.hardware.nfc.hcef

android.hardware.nfc.uicc

android.hardware.nfc.beam

Configuration de la sécurité et matériel

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

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

android.hardware.sensor.relative_humidity

android.hardware.sensor.stepcounter

android.hardware.sensor.stepdetector

Configuration logicielle

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

Téléphonie

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

Réalité virtuelle (ancienne)

android.hardware.vr.headtracking

android.hardware.vr.high_performance

android.software.vr.mode

Widgets

android.software.app_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

XR_ANDROID_avatar_eyes

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

XR_EXT_eye_gaze_interaction

Fonctionnalités Unity nécessitant cette autorisation

Eye Gaze Interaction

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

XR_ANDROID_face_tracking

Fonctionnalités Unity nécessitant cette autorisation

XRFaceTrackingFeature

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

XR_ANDROID_hand_mesh

XR_EXT_hand_tracking

Fonctionnalités Unity nécessitant cette autorisation

XR Hands

XRHandMeshFeature

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

XR_ANDROID_anchor_persistence

XR_ANDROID_depth_texture

XR_ANDROID_light_estimation

XR_ANDROID_composition_layer_passthrough_mesh

XR_ANDROID_raycast

XR_ANDROID_trackables

XR_ANDROID_trackables_object

Fonctionnalités Unity nécessitant cette autorisation

XRAnchorFeature

XRDepthTextureFeature

XRLightEstimationFeature

XRPassthroughFeature

XRTrackableFeature

XRObjectTrackingFeature

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.