Новости о продуктах

Обновления для Android XR SDK: представляем Developer Preview 4.

5 минут чтения
Amy Zeppenfeld и Stevan Silva

Сегодня мы рады представить четвертую версию Android XR SDK для разработчиков, продолжая уделять основное внимание унификации кроссплатформенной разработки для гарнитур, проводных XR-очков и интеллектуальных очков . Чтобы наша платформа оставалась интуитивно понятной, мы переходим к более описательным названиям форм-факторов: теперь AI-очки называются аудиоочками, а AI-очки с дисплеем — очками с дисплеем. Эти изменения уже сегодня отображаются в нашей документации.

В этом релизе множество обновлений, которые помогут вам создавать невероятные возможности для XR-устройств, обеспечивать более глубокое погружение в виртуальную реальность на XR-гарнитурах и упрощать создание дополненной реальности на аудио- и дисплейных очках. Кроме того, наши основные библиотеки, включая XR Runtime, Jetpack SceneCore и ARCore для Jetpack XR, скоро официально перейдут в бета-версию!

Чтобы предоставить вам ранний доступ к оборудованию и ресурсам для создания захватывающих и дополненных впечатлений на будущих устройствах — таких как дисплеи, аудиоочки и проект Aura от XREAL — мы объявляем о запуске программы Android XR Developer Catalyst Program . Узнайте больше и начните подавать заявку уже сегодня.

Создание дополненной реальности для аудио- и дисплейных очков.

Начиная с наших библиотек для дополненной реальности, в Developer Preview 4 представлены новые API, которые помогут вам создавать и тестировать ваши приложения.

Jetpack Projected: API для проверки доступности устройств и ProjectedTestRule.

Библиотека Jetpack Projected помогает связать работу приложений с телефоном с полем зрения пользователя. Мы добавили API доступности устройства, который объединяет сигналы о состоянии ношения и подключении в стандартные значения Android Lifecycle.State . Это позволяет корректировать поведение приложений в зависимости от того, носится ли устройство.

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 */ }
        }
    }

Для упрощения тестирования новый API ProjectedTestRule в артефакте projected-testing автоматизирует настройку тестовых сред. Это помогает писать чистые и надежные модульные тесты без шаблонного кода.

// 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 и новые компоненты

Наша библиотека пользовательского интерфейса для очков с дисплеями, Jetpack Compose Glimmer, теперь включает Google Sans Flex для улучшения читаемости на прозрачных оптических дисплеях. Мы также добавили несколько интерактивных компонентов:

  • Стопки : Предназначены для групп, оптимизированных для сенсорных панелей, отображая по одному элементу за раз.
  • Заголовочные карточки : Обеспечивают категоризацию и контекст для карточек контента.
мерцание (1).gif

Создание захватывающих впечатлений для XR-гарнитур и проводных XR-очков

Если вы хотите создавать полностью иммерсивные приложения для XR-гарнитур и проводных XR-очков, у нас есть несколько важных обновлений.

Бета-переход и современная архитектура

XR Runtime, Jetpack SceneCore и ARCore для функций восприятия Jetpack XR ( карты глубины , отслеживание глаз/рук , проверка попаданий и пространственные якоря ) скоро перейдут в бета-версию, поэтому мы оптимизировали API Jetpack XR. Мы удалили устаревшие пакеты Guava и RxJava3 в пользу современной архитектуры, ориентированной на Kotlin.

Jetpack SceneCore: glTF и пользовательские сетки

Мы расширяем возможности 3D-моделирования, добавляя возможность точной настройки 3D-моделей и доступа к определенным узлам 3D-модели. Используя GltfModelNode , вы можете изменять такие свойства, как поза, материалы и текстуры, и даже запускать анимацию для определенных узлов.

// 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
)

Мы также добавляем в SceneCore пользовательские сетки. Пользовательские сетки позволяют программно создавать геометрию на лету, что идеально подходит для создания пользовательских 3D-моделей. Эта функция будет запущена в экспериментальном режиме, поэтому попробуйте и поделитесь своим мнением!

// 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: встроенная поддержка glTF

Теперь в Compose for XR доступна встроенная поддержка glTF с помощью SpatialGltfModel . Используйте её вместе с SpatialGltfModelState для доступа к узлам и анимациям в модели glTF или для добавления текстур и материалов к вашим 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 для Jetpack XR: Предварительная версия геопространственного API для проводных XR-очков

Мы также предоставляем предварительную версию геопространственного API для проводных XR-очков в ARCore для Jetpack XR. Это обновление обеспечивает высокоточную привязку цифрового контента к реальным местоположениям в более чем 87 странах.

Сочетая систему визуального позиционирования (VPS) ARCore с возможностями анализа и обработки звука API Gemini Live, вы можете создавать контекстно-ориентированные приложения, которые понимают как местоположение, так и положение пользователя. Представьте себе создание захватывающей пешеходной экскурсии с использованием искусственного интеллекта, которая предоставляет аудиоописания близлежащих мест в режиме реального времени, органично сочетая цифровую информацию с физической средой.

Начните строить будущее уже сегодня!

Сейчас потрясающее время для разработки приложений под Android XR. Вскоре SDK Jetpack XR перейдет в бета-версию, и у вас будет доступ к мощному набору новых инструментов. Изучите каждую из следующих областей, чтобы подготовить ваше приложение к работе с XR!

Ознакомьтесь с документацией, изучите примеры и посмотрите эксперименты в области расширенной реальности.

Перейдите на официальный сайт разработчиков Android, чтобы ознакомиться с полными техническими руководствами, справочником API и инструкциями по настройке нового эмулятора. Вдохновитесь нашими примерами и экспериментами. Посмотрите, как мы использовали эти API для создания захватывающих пространственных макетов, загрузки 3D-моделей, исследования пространственного звука и многого другого!

Ознакомьтесь с новинками в игровых движках.

Мы добавили официальную поддержку Unreal Engine и Godot , а также запустили два новых инструмента для ускорения разработки Android XR с использованием Unity и Android XR Interaction Framework . Кроме того, на основе ваших отзывов мы представляем Android XR Engine Hub , который позволит вам запускать ваши приложения непосредственно из предпочитаемого вами движка.

Подайте заявку на участие в программе Android XR Developer Catalyst Program.

Не упустите свой шанс разработать приложение для новейшего оборудования Android XR. Подайте заявку сегодня, чтобы получить доступ к предрелизным версиям оборудования, включая прототип наших аудио- и дисплейных очков и проект Aura от XREAL.

Узнайте больше и подайте заявку сегодня!

Мы с нетерпением ждём, когда вы создадите потрясающие XR-приложения по мере приближения к запуску новых устройств Android XR в конце этого года!

Ознакомьтесь с этим объявлением и всеми обновлениями Google I/O 2026 на сайте io.google .

Автор:

Продолжить чтение