ARCore pour Jetpack XR

Intégrez du contenu numérique dans le monde réel grâce aux capacités de perception.
Dernière mise à jour Version stable Version finale Version bêta Version alpha
19 mai 2026 - - - 1.0.0-alpha14

Déclarer des dépendances

Pour ajouter une dépendance sur ARCore pour Jetpack XR, vous devez ajouter le dépôt Maven de Google à votre projet. Pour en savoir plus, consultez la section Dépôt Maven de Google.

Ajoutez les dépendances correspondant aux artefacts dont vous avez besoin dans le fichier build.gradle de votre application ou de votre module :

Groovy

dependencies {
    implementation "androidx.xr.arcore:arcore:1.0.0-alpha14"
}

Kotlin

dependencies {
    implementation("androidx.xr.arcore:arcore:1.0.0-alpha14")
}

Pour en savoir plus sur les dépendances, consultez Ajouter des dépendances de compilation.

Commentaires

Vos commentaires nous aident à améliorer Jetpack. N'hésitez pas à nous contacter si vous découvrez de nouveaux problèmes ou si vous avez des idées pour améliorer cette bibliothèque. Veuillez consulter les problèmes existants de cette bibliothèque avant d'en signaler un nouveau. Vous pouvez ajouter votre vote à un problème existant en cliquant sur le bouton en forme d'étoile.

Signaler un nouveau problème

Pour en savoir plus, consultez la documentation sur l'outil Issue Tracker.

Version 1.0

Version 1.0.0-alpha14

19 mai 2026

Publication d'androidx.xr.arcore:arcore-*:1.0.0-alpha14. Liste des commits de la version 1.0.0-alpha14

Modifications apportées à l'API

  • Nous abandonnons GeospatialMode.VPS_AND_GPS au profit de GeospatialMode.SPATIAL et introduisons un nouveau mode de suivi à faible consommation d'énergie, GeospatialMode.INERTIAL, qui n'utilise que l'IMU et le GPS. (I1e6cd)
  • Les classes d'exception d'ancrage personnalisées AnchorInvalidUuidException, AnchorNotAuthorizedException, AnchorUnsupportedLocationException, AnchorRuntimeFailureException et AnchorUnsupportedObjectException sont désormais des instances RuntimeException et ne sont pas destinées à être vérifiées. (I9356e)
  • Ajout de l'API ArCoreTestRule, y compris TestArDevice, TestAugmentableObject, TestDepthMap, TestEye, TestFace, TestGeospatial, TestHand, TestPlane, TestRenderViewpoint et TestTrackable (I0ad3c)
  • Supprime AnchorLoadInvalidUuid, AnchorCreateUnsupportedObject, AnchorCreateUnsupportedLocation et AnchorCreateNotAuthorized. Toutes ces erreurs sont désormais des exceptions dans l'environnement d'exécution. Supprime AnchorCreateIllegalState. Dans la plupart des cas, il a été remplacé par AnchorCreateTrackingUnavailable. Ajoute AnchorException et les classes dérivées AnchorInvalidUuidException, AnchorNotAuthorizedException, AnchorUnsupportedLocationException, AnchorRuntimeFailureException et AnchorUnsupportedObjectException. (I4c4dd)

Problèmes connus

  • Le suivi géospatial peut être perdu dans des scénarios de connectivité difficiles lors de l'utilisation de l'implémentation du runtime arcore-projected. Pour résoudre le problème, supprimez cette implémentation de l'environnement d'exécution de votre application et utilisez arcore-play-services à la place. Il s'agira de la configuration par défaut dans la prochaine version.

Contribution externe

  • Ajout de l'API AugmentedImage pour le suivi des repères personnalisés (I0cf09)

Version 1.0.0-alpha13

6 mai 2026

Publication d'androidx.xr.arcore:arcore-*:1.0.0-alpha13. Liste des commits de la version 1.0.0-alpha13

Modifications apportées à l'API

  • TrackingState et VpsAvailabilityResult ont été déplacés vers androidx.xr.arcore package, et les types dans androidx.xr.runtime sont désormais obsolètes. (Ic7930, b/480462213)
  • Changement de nom : Plane.Type devient PlaneType. (I8c90c, b/482675376)
  • Changement de nom : Hand.HandSide devient HandSide. (Ica562, b/482675376)
  • Changement de nom : Plane.Label devient PlaneLabel. (Ic6b67, b/482675376)
  • Changement de nom : Geospatial.Surface devient GeospatialSurface. (I1a8be, b/482675376)
  • Geospatial.State a été renommé GeospatialState. (I203fa, b/482675376)
  • L'API NativeData a été déplacée vers la bibliothèque xr:runtime:runtime. (I87954, b/494251500)
  • Session.create et Session.configure ne sont plus exhaustifs et nécessitent des clauses else dans les instructions when. (I9885e, b/495805998, b/495805998)
  • androidx.xr.runtime.FieldOfView est maintenant obsolète. Utilisez androidx.xr.runtime.math.FieldOfView à la place. (Ia01a0, b/480233045)
  • L'Orbiter utilise désormais un OrbiterAnchorPoint + VolumeOffset ou un OrbiterPoseProvider au lieu de la position, du décalage, de l'offsetType, de l'alignement et de l'élévation. Le paramètre shouldRenderInNonSpatial a également été supprimé. Si le développeur ne souhaite pas que l'orbiteur s'affiche dans un espace non spatial, il doit l'encapsuler dans une instruction if et vérifier SpatialCapabilities. (I9fbb3, b/462428503)
  • Ajout de modificateurs déplaçables. Ces modificateurs fonctionnent bien, pour le moment, avec SpatialPanels et SpatialExternalSurface. Ils seront également bientôt disponibles pour SpatialGltfModels. Toutefois, l'objectif est de les prendre en charge correctement pour tous les SubspaceComposables. (I9a3cd, b/479530787, b/478935063, b/478935063)
  • Les développeurs sont censés observer le flux ArDevice.state pour surveiller State.trackingState et ajuster le rendu ou les avertissements de leur application en conséquence en fonction de la fidélité du suivi. (Ic00f0, b/445466590)
  • Les valeurs d'énumération HandJointType ont été renommées. (Ifbc83, b/482670596)
  • Les constantes FaceConfidenceRegion ont été renommées. (Ia62d5, b/482670596)
  • Les constantes FaceBlendShapeType ont été renommées. (I33b8b, b/482670596)
  • Ajout de CreatePoseFromGeospatialPoseErrorInternal et de CreateGeospatialPoseFromPoseErrorInternal. (I4bcf1, b/482666615)
  • DeviceTrackingMode.LAST_KNOWN a été renommé SPATIAL_LAST_KNOWN (avec un remplacement obsolète), INERTIAL_LAST_KNOWN a été ajouté pour le suivi 3DoF et TRACKING_DEGRADED a été ajouté à TrackingState. (Ie661c, b/445466590)
  • Abandon de GroupEntity. Pour disposer d'une entité avec uniquement la fonctionnalité d'entité de base, appelez Entity.create, qui renverra une interface d'entité. (I4c450, b/473867483)
  • Ajout de l'API XrLog. Définissez XrLog.isEnabled sur true pour activer la journalisation dans JetpackXR et utilisez XrLog.Level pour définir le niveau de journalisation. (I76a1f, b/463460895, b/487378441)

Correction de bugs

  • Ajoutez la prise en charge de l'état de suivi des appareils aux appareils OpenXR. (I91485, b/445466590)

Version 1.0.0-alpha12

25 mars 2026

Publication d'androidx.xr.arcore:arcore-*:1.0.0-alpha12. Liste des commits de la version 1.0.0-alpha12

Modifications apportées à l'API

  • Config.augmentedObjectCategories est passé d'une liste à un ensemble. (I25a64, b/487376359)
  • Les types androidx.xr.arcore.Eye et androidx.xr.arcore.Hand. (I42438, b/449032900)
  • Ajout de la surcharge Session.create pour permettre la transmission d'un contexte Android pour la portée des ressources. (I7d3fe, b/415805990, b/477386334)
  • La valeur passe de FakeRuntimeAnchor.ANCHOR_RESOURCE_LIMIT à FakeRuntimeAnchor.anchorResourceLimit. (I90841, b/431992235)
  • L'API TiltGesture est désormais expérimentale, car elle peut être modifiée ou supprimée à l'avenir. Pour utiliser cette API, activez @ExperimentalGesturesApi (Ic9858).
  • Ajout de la possibilité de définir des catégories pour le suivi AugmentedObject dans la configuration (I1f6e4, b/480220930)

Correction de bugs

  • Correction du build Chrome en mettant à jour le fichier META-INF/services/ avec l'emplacement réel de PerceptionRuntimeFactory. (I7a801, b/481288291)

Version 1.0.0-alpha11

25 février 2026

Publication d'androidx.xr.arcore:arcore-*:1.0.0-alpha11. Liste des commits de la version 1.0.0-alpha11

Version 1.0.0-alpha10

28 janvier 2026

Publication d'androidx.xr.arcore:arcore-*:1.0.0-alpha10. Liste des commits de la version 1.0.0-alpha10

Nouvelles fonctionnalités

  • Présentation de l'API TiltGesture, qui fournit un Flow réactif pour la détection stable de l'état d'inclinaison (HAUT/BAS) de l'appareil avec la progression de la transition. (Ic269f, b/448152779)
  • ARCore pour Jetpack XR utilise désormais le mécanisme de journalisation XR Runtime. Pour en savoir plus, consultez androidx.xr.runtime.Log. (l52735, b/448697662)

Modifications apportées à l'API

  • Geospatial.createPoseFromGeospatialPose fonctionne désormais sur les appareils compatibles avec OpenXR. (l362c6)

Version 1.0.0-alpha09

3 décembre 2025

Publication d'androidx.xr.arcore:arcore-*:1.0.0-alpha09. Liste des commits de la version 1.0.0-alpha09

Version 1.0.0-alpha08

19 novembre 2025

Publication d'androidx.xr.arcore:arcore-*:1.0.0-alpha08. Liste des commits de la version 1.0.0-alpha08

Nouvelles fonctionnalités

  • ARCore pour Jetpack XR est désormais compatible avec les appareils sur lesquels les services Google Play pour la RA sont disponibles.
  • Ajout d'API Geospatial pour la disponibilité du VPS et la conversion de pose (I144dc)

Version 1.0.0-alpha07

22 octobre 2025

Publication d'androidx.xr.arcore:arcore-*:1.0.0-alpha07. Liste des commits de la version 1.0.0-alpha07

Correction de bugs

  • :xr:arcore:arcore-openxr ajouté en tant que dépendance d'implémentation à :xr:arcore:arcore (I47315, b/446999229)

Version 1.0.0-alpha06

24 septembre 2025

Publication d'androidx.xr.arcore:arcore-*:1.0.0-alpha06. Liste des commits de la version 1.0.0-alpha06

Modifications apportées à l'API

  • La compatibilité des tests pour ARCore a été migrée vers le module xr:arcore:arcore-testing. (I25469)
  • Ajout de ArDevice et RenderViewpoint pour permettre aux applications de récupérer la pose et la configuration d'affichage de l'appareil à des fins de rendu. (Ib7e3f)
  • Renommez les énumérations HandJointType avec le préfixe HAND_JOINT_TYPE_. (I3f7cd)
  • HandJointType a été déplacé de xr:runtime:runtime vers xr:arcore:arcore. (Iadb9c, b/409058039)
  • Hand.State expose désormais un java.nio.FloatBuffer avec les poses des articulations dans un format qui permet d'accéder facilement aux applications axées sur les performances. (I55e27)

Version 1.0.0-alpha05

30 juillet 2025

Publication d'androidx.xr.arcore:arcore:1.0.0-alpha05, androidx.xr.arcore:arcore-guava:1.0.0-alpha05 et androidx.xr.arcore:arcore-rxjava3:1.0.0-alpha05. Liste des commits de la version 1.0.0-alpha05

Nouvelles fonctionnalités

  • Ajoutez getPrimaryHandSide pour que le développeur puisse obtenir les informations sur le côté droit (I270bd).
  • Ajouter l'API de vérification de la disponibilité du VPS géospatial (I58573)
  • Ajout de l'API ARCore pour checkVpsAvailability (Idbded)
  • Fonctions d'extension stateFlowable ajoutées à :xr:arcore:arcore-rxjava3 pour être utilisées par les développeurs Java. (I083aa, b/427247794)

Modifications apportées à l'API

  • Les valeurs de configuration *Mode ont été renommées pour refléter leur comportement. (I6d247, b/414648065)
  • L'artefact ARCore principal (xr:arcore:arcore) ne contiendra que des API asynchrones de style Kotlin. Les développeurs Java peuvent s'appuyer sur la bibliothèque xr:arcore:arcore-rxjava3 pour accéder aux API compatibles. (Ia525e, b/422794329)
  • L'artefact ARCore principal (xr:scenecore:scenecore) ne contiendra que des API asynchrones de style Kotlin. Les développeurs Java peuvent s'appuyer sur la bibliothèque xr:arcore:arcore-guava pour accéder aux API compatibles. (Iffcb4, b/422773524)
  • Anchor.persistAsync() ajouté à AnchorGuava pour être utilisé par les développeurs Java. (I4af1c, b/425984631)
  • Earth.createAnchorOnSurfaceAsync(Session, Double, Double, Double, Quaternion, Surface) ajouté à EarthGuava pour être utilisé par les développeurs Java. (I66357, b/425992992)
  • Les développeurs Java utiliseront les fonctions d'extension pour GltfModel.createAsync dans GltfModel.kt. Les fonctions asynchrones dans GltfModel seront supprimées. (I0af60)
  • Cette bibliothèque utilise désormais les annotations de nullité JSpecify, qui sont de type "type-use". Les développeurs Kotlin doivent utiliser l'argument de compilateur suivant pour garantir une utilisation correcte : -Xjspecify-annotations=strict (il s'agit de la valeur par défaut à partir de la version 2.1.0 du compilateur Kotlin) (Ia8420, b/326456246).
  • Fonctions d'extension subscribeAsFlowable ajoutées à :xr:arcore:arcore-rxjava3 pour être utilisées par les développeurs Java. (Id3e49, b/427277298)

Version 1.0.0-alpha04

7 mai 2025

Publication d'androidx.xr.arcore:arcore:1.0.0-alpha04. Liste des commits de la version 1.0.0-alpha04

Modifications apportées à l'API

  • Les projets publiés avec Kotlin 2.0 nécessitent KGP 2.0.0 ou version ultérieure pour être utilisés. (Idb6b5)
  • TrackingState et HandJointType ont été déplacés d'ARCore vers Runtime.
  • Hand.State.isActive (boolean) a été remplacé par Hand.State.trackingState (androidx.xr.runtime.TrackingState).
  • Anchor.load renvoie Anchor.AnchorLoadInvalidUuid si l'UUID n'est pas valide.

Version 1.0.0-alpha03

26 février 2025

Publication d'androidx.xr.arcore:arcore:1.0.0-alpha03 sans modification notable par rapport à la dernière version alpha. Liste des commits de la version 1.0.0-alpha03

Version 1.0.0-alpha02

12 février 2025

Publication d'androidx.xr.arcore:arcore:1.0.0-alpha02. Liste des commits de la version 1.0.0-alpha02

Nouvelles fonctionnalités

  • Ajout de la compatibilité avec le suivi des mains. Utilisez Hand.left et Hand.right pour accéder aux informations de suivi.
  • Les API qui génèrent une ancre (Anchor.create, Anchor.load, Plane.createAnchor) renvoient désormais toutes AnchorCreateResult et implémentent correctement AnchorCreateResourcesExhausted.

Corrections de bugs

  • Anchor.detach ne provoque plus de plantage fatal en raison d'une condition de concurrence avec le thread de mise à jour de la session.
  • Anchor.create est plus stable lorsqu'il est exécuté sur un émulateur.

Version 1.0.0-alpha01

12 décembre 2024

Publication d'androidx.xr.arcore:arcore-* 1.0.0-alpha01.

Fonctionnalités de la version initiale

Inspirée de la bibliothèque ARCore existante, la bibliothèque ARCore pour Jetpack XR permet de mélanger du contenu numérique avec le monde réel. Cette bibliothèque inclut le suivi du mouvement, les ancres persistantes, les tests de sélection et l'identification des plans avec étiquetage sémantique (par exemple, le sol, les murs et les plateaux de table). Consultez le guide du développeur pour en savoir plus sur l'utilisation d'ARCore pour Jetpack XR.

  • Session : ARCore pour Jetpack XR utilise le Jetpack XR Runtime en coulisses pour alimenter ses fonctionnalités. Vous utiliserez une session pour interagir avec la plupart des API ARCore pour Jetpack XR. Veuillez donc consulter sa documentation.

  • Plane : utilisez les plans pour comprendre le monde qui vous entoure. Chaque plan possède un Label qui le décrit sémantiquement. Vous pouvez utiliser subscribe pour être averti des derniers plans détectés ou state pour être averti des modifications apportées à un plan spécifique.

  • Anchor : lien entre un objet virtuel et un lieu réel. Les ancres peuvent être associées à un emplacement spécifique dans l'espace (à l'aide de create) ou à un Trackable (à l'aide de createAnchor).

    • Les ancres peuvent être réutilisées d'une session à l'autre. Vous pouvez utiliser persist pour les stocker, getPersistedAnchorUuids pour les énumérer et load pour les récupérer. Assurez-vous de unpersist les clés une fois qu'elles ne sont plus utilisées.

    • Les ancres sont interopérables entre ARCore pour Jetpack XR et Jetpack SceneCore. Vous pouvez créer un AnchorEntity à l'aide d'une ancre. Si vous disposez déjà d'une AnchorEntity, vous pouvez utiliser getAnchor pour récupérer son ancre de sauvegarde.

    • Offrez des interactions utilisateur naturelles à l'aide de hitTest. Un hitTest utilise un Ray pour déterminer les contenus qu'il croise et créer un Anchor à partir de cet emplacement. Envisagez d'effectuer un hitTest à partir d'un InputEvent.

Problèmes connus

  • Il peut s'écouler un certain temps entre l'appel de unpersist et la suppression de son UUID des résultats renvoyés par getPersistedAnchorUuids.

  • create ne valide pas que le système dispose de suffisamment de ressources pour renvoyer de nouvelles ancres. La création d'un nombre excessif d'ancres peut entraîner un plantage.

  • Il n'est actuellement pas possible de rendre persistant un ancrage qui l'a déjà été, puis a été supprimé.

  • L'utilisation dans l'émulateur est prise en charge, mais le comportement peut ne pas être aussi stable que lors de l'exécution sur un appareil réel. En particulier, les appels à create peuvent échouer avec une erreur de code natif et mettre fin immédiatement à l'activité.

  • Dans certains cas, une RuntimeException peut être générée par erreur lors de l'appel de persist avec le message "L'ancrage n'a pas été conservé". Dans ce cas, la fonction réussit quand même et l'ancrage est conservé. Nous vous recommandons d'encapsuler l'appel à persist avec un bloc try pour contourner le problème.