Actualités des produits

Mises à jour du SDK Android XR : présentation de la Preview développeur 4

Temps de lecture : 5 min

Aujourd'hui, nous sommes heureux de lancer la Preview développeur 4 du SDK Android XR, qui continue de mettre l'accent sur l'unification du développement multi-appareils pour les casques, les lunettes XR filaires et les lunettes intelligentes. Pour que notre plate-forme reste intuitive, nous adoptons une nomenclature plus descriptive pour nos formats. Les lunettes IA sont désormais des lunettes audio et les lunettes IA avec écran sont désormais des lunettes avec écran. Ces modifications apparaissent dans notre documentation à partir d'aujourd'hui.

Cette version contient de nombreuses mises à jour qui vous aident à créer des expériences incroyables pour les appareils XR, à proposer des expériences immersives plus profondes sur les casques XR et à simplifier la création d'expériences de réalité augmentée sur les lunettes audio et avec écran. De plus, nos bibliothèques principales, y compris XR Runtime, Jetpack SceneCore et ARCore pour Jetpack XR, passeront bientôt officiellement en version bêta.

Pour vous donner un accès anticipé au matériel et aux ressources permettant de créer des expériences immersives et de réalité augmentée sur les appareils à venir, tels que les lunettes audio et avec écran, ainsi que le Project Aura de XREAL, nous annonçons le programme Android XR Developer Catalyst. Découvrez-en plus et déposez votre candidature dès aujourd'hui. 

Créer des expériences de réalité augmentée pour les lunettes audio et avec écran

Pour commencer avec nos bibliothèques d'expériences de réalité augmentée, la Preview développeur 4 introduit de nouvelles API qui vous aident à créer et à tester vos applications.

Jetpack Projected : API Device Availability et ProjectedTestRule

La bibliothèque Jetpack Projected permet de faire passer les expériences d'application du téléphone au champ de vision de l'utilisateur. Nous avons ajouté l’API Device Availability, qui consolide l’état d’usure et les signaux de connectivité dans les valeurs Lifecycle.State Android standards. Cela vous permet d'ajuster le comportement de vos applications en fonction de l'appareil porté.

val xrDevice = XrDevice.getCurrentDevice(projectedContext)

// Observe the device lifecycle flow
xrDevice.getLifecycle().currentStateFlow
    .collect { state ->
        when (state) {
            Lifecycle.State.STARTED -> { /* Device is available (worn) */ }
            Lifecycle.State.CREATED -> { /* Device is unavailable (not worn) */ }
            Lifecycle.State.DESTROYED -> { /* Device is DISCONNECTED */ }
        }
    }

Pour simplifier les tests, la nouvelle ProjectedTestRule API de l'artefact de test projeté automatise la configuration des environnements de test projetés. Cela vous permet d'écrire des tests unitaires propres et fiables sans code passe-partout.

// from the 'androidx.xr.projected:projected-testing:1.0.0-alpha07' artifact
@get:Rule
val projectedTestRule = ProjectedTestRule()

@Test
fun testProjectedContextInitialization() {
    // by default, ProjectedTestRule automatically creates and connects
    // a projected device before each test
    val projectedContext = ProjectedContext.createProjectedDeviceContext(context)

    // assert the projected context is successfully initialized
    assertThat(projectedContext).isNotNull()
}

Jetpack Compose Glimmer : Google Sans Flex et nouveaux composants

Notre bibliothèque d'interface utilisateur pour les lunettes avec écran, Jetpack Compose Glimmer, inclut désormais Google Sans Flex pour une meilleure lisibilité sur les écrans optiques transparents. Nous avons également ajouté plusieurs composants interactifs :

  • Piles : conçues pour les groupes optimisés pour le pavé tactile, affichant un élément à la fois.
  • _Puces de titre_ : fournissent une catégorisation et un contexte pour les cartes de contenu.
glimmer (1).gif

Créer des expériences immersives pour les casques XR et les lunettes XR filaires

Si vous souhaitez créer des expériences entièrement immersives pour les casques XR et les lunettes XR filaires, nous avons plusieurs mises à jour importantes.

Transition vers la version bêta et architecture moderne

XR Runtime, Jetpack SceneCore et les fonctionnalités de perception ARCore pour Jetpack XR (cartes de profondeursuivi des yeux/mains, test de détection et ancres spatiales) passeront bientôt en version bêta. Nous avons donc simplifié les API Jetpack XR. Nous avons supprimé les anciens packages Guava et RxJava3 au profit d'une architecture moderne, axée sur Kotlin.

Jetpack SceneCore : glTF et maillages personnalisés

Nous étendons les fonctionnalités des modèles 3D en ajoutant la possibilité d'affiner les modèles 3D et d'accéder à des nœuds spécifiques avec un modèle 3D. À l'aide de GltfModelNode, vous pouvez modifier des propriétés telles que la pose, les matériaux et les textures, et même exécuter des animations pour des nœuds spécifiques.

// Create a new PBR material
pbrMaterial = KhronosPbrMaterial.create(
    session = xrSession,
    alphaMode = AlphaMode.OPAQUE
)

// Load a texture.
val texture = Texture.create(
    session = xrSession,
    path = Path("textures/texture_name.png")
)

// Apply the texture and configure occlusion to define how the material handles ambient lighting.
pbrMaterial.setOcclusionTexture(
    texture = texture,
    strength = 0.5f
)

// Access the hierarchy of nodes within the model entity.
val entityNodes = entity.nodes

// Find the specific node to apply the material override.
val myEntityNode = entityNodes.find { it.name == "node_name" }

// Apply the PBR material to the node.
myEntityNode?.setMaterialOverride(
   material = newMaterial
)

Nous ajoutons également des maillages personnalisés à SceneCore. Les maillages personnalisés vous permettent de créer une géométrie à la volée par programmation, ce qui est idéal pour créer des modèles 3D personnalisés. Cette fonctionnalité sera lancée en version expérimentale. Essayez-la et dites-nous ce que vous en pensez.

// Create the mesh
val roadMesh =
    CustomMesh.BuilderFromMeshData(session, roadVertexLayout)
        .addVertexData(ByteBufferRegion(roadDataBuffer, 0, vertexDataSize))
        .setIndexData(ByteBufferRegion(roadDataBuffer, vertexDataSize, indexDataSize))
        .setTopology(MeshSubsetTopology.TRIANGLES)
        .build()

// Define the material
val roadMaterial = KhronosPbrMaterial.create(session, AlphaMode.OPAQUE)

// Instantiate the entity using the custom mesh and material
val roadEntity =
    MeshEntity.create(
        session,
        roadMesh,
        listOf(roadMaterial),
        pose = roadPose,
    )

Compose for XR : compatibilité native avec glTF

Nous disposons désormais d'une compatibilité native avec glTF directement dans Compose for XR avec  SpatialGltfModel. Utilisez-le avec SpatiallGltfModelState pour accéder aux nœuds et aux animations dans le modèle glTF, ou utilisez-les pour ajouter des textures et des matériaux à vos modèles 3D.

val myGltfModelState = rememberSpatialGltfModelState(
        source = SpatialGltfModelSource.fromPath(
            Paths.get("models/my_animated_model.glb")
        )
    )

    val myGltfAnimation =
        myGltfModelState.animations.find { it.name == "animation_name" }

    DisposableEffect(myGltfAnimation) {
        myGltfAnimation?.loop()

        onDispose {
            myGltfAnimation?.stop()
        }
    }

    SpatialGltfModel(state = myGltfModelState, modifier = modifier)

ARCore pour Jetpack XR : Preview de l'API Geospatial pour les lunettes XR filaires

Nous proposons également une Preview anticipée de l'API Geospatial pour les lunettes XR filaires dans ARCore pour Jetpack XR. Cette mise à jour permet un ancrage de haute précision du contenu numérique lié à des établissements physiques dans plus de 87 pays.

En combinant le système VPS (Visual Positioning System) d'ARCore avec les capacités de raisonnement et audio de l'API Gemini Live, vous pouvez créer des expériences contextuelles qui comprennent à la fois l'emplacement et la position de votre utilisateur. Imaginez créer une visite guidée immersive par IA qui fournit des descriptions audio en temps réel des lieux à proximité, en combinant de manière transparente des informations numériques avec l'environnement physique.

Commencez à construire l'avenir dès aujourd'hui

C'est le moment idéal pour développer pour Android XR. Avec le SDK Jetpack XR qui passera bientôt en version bêta et un ensemble d'outils robustes à portée de main, explorez chacun des domaines suivants pour préparer les expériences de votre application pour la XR.  

Consultez la documentation, explorez les exemples et découvrez les expériences XR

Accédez au site officiel des développeurs Android pour obtenir des guides techniques complets, la documentation de référence de l'API et des instructions sur la configuration du nouvel émulateur. Inspirez-vous de nos exemples et expériences. Découvrez comment nous avons utilisé ces API pour créer des mises en page spatiales immersives, charger des modèles 3D, explorer l'audio spatial et plus encore.

Découvrez les nouveautés pour les moteurs de jeu

Nous avons ajouté la compatibilité officielle avec Unreal Engine et Godot, et nous avons lancé deux nouveaux outils pour accélérer le développement pour Android XR avec Unity et l’Android XR Interaction Framework. De plus, en fonction de vos commentaires, nous lançons l’Android XR Engine Hub pour vous permettre d’exécuter vos expériences directement à partir du moteur de votre choix.

Postulez au programme Android XR Developer Catalyst

Ne manquez pas l'occasion de développer pour le dernier matériel Android XR. Postulez dès aujourd'hui pour avoir la possibilité d'accéder au matériel en préversion, y compris notre prototype de lunettes audio et avec écran, ainsi que le Project Aura de XREAL.

En savoir plus et postuler dès aujourd'hui

Nous sommes impatients de découvrir les expériences XR incroyables que vous allez créer à mesure que nous nous rapprochons du lancement d'autres appareils Android XR plus tard cette année.

Découvrez cette annonce et toutes les mises à jour de Google I/O 2026 sur io.google.

Écrit par :

Lire la suite