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
30 juillet 2025 - - - 1.0.0-alpha05

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-alpha05"
}

Kotlin

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

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-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. La version 1.0.0-alpha05 contient ces commits.

Nouvelles fonctionnalités

  • Ajoutez getPrimaryHandSide pour que le développeur puisse obtenir les informations sur le côté (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 de 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. La version 1.0.0-alpha04 contient ces commits.

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. La version 1.0.0-alpha03 contient ces commits.

Version 1.0.0-alpha02

12 février 2025

Publication d'androidx.xr.arcore:arcore:1.0.0-alpha02. La version 1.0.0-alpha02 contient ces commits.

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 offre des fonctionnalités permettant de mélanger le 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 tables). 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 runtime Jetpack XR 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é rendu non persistant.

  • L'utilisation dans l'émulateur est acceptée, 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.