ARCore для Jetpack XR

Переносите цифровой контент в реальный мир с помощью функций восприятия.
Последнее обновление Основная версия Release Candidate Бета-версия Альфа-версия
7 октября 2026 г. - 1.0.0-rc02 - -

Как объявлять зависимости

Чтобы добавить зависимость от ARCore для Jetpack XR, необходимо добавить в проект хранилище Google Maven. Подробная информация приведена в репозитории Google Maven.

Добавьте в файл build.gradle приложения или модуля зависимости для нужных артефактов:

классный

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

Котлин

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

Подробнее о зависимостях приведено в статье Добавление зависимостей сборки.

Отзыв

Ваши отзывы помогают нам улучшать Jetpack. Если вы обнаружите проблемы или решите что-то предложить, отправьте отзыв. Прежде чем создавать новую проблему, ознакомьтесь с существующими. Вы можете добавить свой голос к существующей проблеме, нажав на значок звездочки.

Как создать новую проблему

Дополнительную информацию можно найти в документации по системе отслеживания ошибок.

Версия 1.0

Версия 1.0.0-rc02

7 октября 2026 г.

Выход androidx.xr.arcore:arcore-*:1.0.0-rc02. Версия 1.0.0-rc02 содержит эти коммиты.

Исправление ошибок

  • Устранена проблема, из-за которой OpenXrRuntime не удавалось настроить сеанс, если отслеживание дополненных изображений не поддерживалось. (I8b9759)
  • Исправлены различные проблемы, в том числе: улучшено управление памятью в XrInstanceManager с помощью applicationContext, устранены потенциальные проблемы, связанные с жизненным циклом, за счет упрощения механизмов кеширования Session и Scene, а также улучшен ReferenceCleaner, чтобы обеспечить безопасную для потоков регистрацию очистки и явное удаление. (Id0b76c)

Версия 1.0.0-rc01

9 сентября 2026 г.

Выход androidx.xr.arcore:arcore-*:1.0.0-rc01. Версия 1.0.0-rc01 содержит эти коммиты.

Версия 1.0.0-beta02

12 августа 2026 г.

Выход androidx.xr.arcore:arcore-*:1.0.0-beta02. Версия 1.0.0-beta02 содержит эти коммиты.

Исправление ошибок

  • Исправлена проблема с параллелизмом при сохранении якорей OpenXR. (I15c8b)
  • В большем количестве классов реализован контейнер toString() для отладки. (I587e8)

Версия 1.0.0-beta01

15 июля 2026 г.

Выход androidx.xr.arcore:arcore-*:1.0.0-beta01. Версия 1.0.0-beta01 содержит эти коммиты.

Изменения в API

  • Изменен модификатор изменяемого размера. Теперь вместо двух модификаторов используется один: ResizePolicy (I7fb0f, b/496257436, b/519672992).
  • Добавлен параметр movable overload с параметром movePolicy, а параметры transformingMovable и movable объявлены устаревшими (Ic88c1, b/481781189)
  • Удален параметр TrackingState.TRACKING_DEGRADED из общедоступного API и сопоставлены состояния среды выполнения карты с состоянием PAUSED. Обновите TrackingState, чтобы использовать перечисления вместо целочисленных значений для преобразования строк и преобразования во время выполнения. (I3eb5b, b/524326338)
  • Функция Session.create преобразована в функцию suspend. (I5d27f)
  • Прекращена поддержка функции ProjectedPermissionsResultContract (I141d5, b/515699436)
  • Обновлено AnchorEntity до AnchorSpace (Ifa95e, b/513619219)

Версия 1.0.0-alpha15

17 июня 2026 г.

Выход androidx.xr.arcore:arcore-*:1.0.0-alpha15. Версия 1.0.0-alpha15 содержит эти коммиты.

Изменения в API

  • Поле "HitResult.createAnchor" удалено. Разработчики могут создать якорь, представляющий HitResult, если отслеживаемый объект результата является Anchorable, передав позицию попадания в функцию createAnchor объекта Anchorable. (Ia851e)
  • Поле "AnchorUnsupportedObject" удалено. Она больше не возникает в среде выполнения ARCore JXR. (Ia851e)
  • androidx.xr.arcore.Anchor и androidx.xr.arcore.ArDevice теперь поддерживают androidx.xr.arcore.Trackable. (I57b65)
  • Depth.left, Depth.right и Depth.mono теперь не могут иметь нулевое значение (I1fc5e)
  • Face.getUserFace теперь не может иметь нулевое значение (I0eac1)
  • RenderViewpoint.left, RenderViewpoint.right и RenderViewpoint.mono теперь не могут иметь нулевое значение (Icf7fa).
  • Hand.left и Hand.right не могут иметь нулевое значение (Icef37).
  • Добавлен API QrCode (Ia0bbe).

Версия 1.0.0-alpha14

19 мая 2026 г.

Выход androidx.xr.arcore:arcore-*:1.0.0-alpha14. Версия 1.0.0-alpha14 содержит эти коммиты.

Изменения в API

  • Мы отказываемся от использования GeospatialMode.VPS_AND_GPS в пользу GeospatialMode.SPATIAL и добавляем новый режим отслеживания с низким энергопотреблением – GeospatialMode.INERTIAL, в котором используются только IMU и GPS. (I1e6cd)
  • Пользовательские классы исключений для привязки: AnchorInvalidUuidException, AnchorNotAuthorizedException, AnchorUnsupportedLocationException, AnchorRuntimeFailureException и AnchorUnsupportedObjectException теперь являются экземплярами RuntimeException, которые не предназначены для проверки. (I9356e)
  • Добавлен API ArCoreTestRule, в том числе TestArDevice, TestAugmentableObject, TestDepthMap, TestEye, TestFace, TestGeospatial, TestHand, TestPlane, TestRenderViewpoint и TestTrackable (I0ad3c)
  • Удаляет AnchorLoadInvalidUuid, AnchorCreateUnsupportedObject, AnchorCreateUnsupportedLocation и AnchorCreateNotAuthorized. Теперь все эти ошибки являются исключениями во время выполнения. Удаляет AnchorCreateIllegalState. В большинстве случаев он заменен на AnchorCreateTrackingUnavailable. Добавляет AnchorException и производные классы AnchorInvalidUuidException, AnchorNotAuthorizedException, AnchorUnsupportedLocationException, AnchorRuntimeFailureException и AnchorUnsupportedObjectException. (I4c4dd)

Внешний вклад

  • Добавлен API AugmentedImage для отслеживания собственных маркеров (I0cf09).

Версия 1.0.0-alpha13

6 мая 2026 г.

Выход androidx.xr.arcore:arcore-*:1.0.0-alpha13. Версия 1.0.0-alpha13 содержит эти коммиты.

Изменения в API

  • TrackingState и VpsAvailabilityResult были перенесены в androidx.xr.arcore package, а типы в androidx.xr.runtime теперь считаются устаревшими. (Ic7930, b/480462213)
  • Название "Plane.Type" изменено на "PlaneType". (I8c90c, b/482675376)
  • Название "Hand.HandSide" изменено на "HandSide". (Ica562, b/482675376)
  • Название "Plane.Label" изменено на "PlaneLabel". (Ic6b67, b/482675376)
  • Название "Geospatial.Surface" изменено на "GeospatialSurface". (I1a8be, b/482675376)
  • Название "Geospatial.State" изменено на "GeospatialState". (I203fa, b/482675376)
  • API NativeData перенесен в библиотеку xr:runtime:runtime. (I87954, b/494251500)
  • Session.create и Session.configure теперь не являются исчерпывающими и требуют использования предложений else в операторах when. (I9885e, b/495805998, b/495805998)
  • Поддержка androidx.xr.runtime.FieldOfView прекращена. Используйте вместо него androidx.xr.runtime.math.FieldOfView. (Ia01a0, b/480233045)
  • В Orbiter теперь можно использовать OrbiterAnchorPoint + VolumeOffset или OrbiterPoseProvider вместо position, offset, offsetType, alignment и elevation. Также удален параметр shouldRenderInNonSpatial. Если разработчик не хочет, чтобы орбитер отображался в не пространственном режиме, ему следует заключить орбитер в оператор if и проверить SpatialCapabilities. (I9fbb3, b/462428503)
  • Добавлены перемещаемые модификаторы. В настоящее время эти модификаторы хорошо работают с SpatialPanels и SpatialExternalSurface. В ближайшее время они также будут поддерживаться в SpatialGltfModels. Однако мы планируем обеспечить поддержку всех SubspaceComposables. (I9a3cd, b/479530787, b/478935063, b/478935063)
  • Разработчики должны соблюдать ArDevice.state Flow, чтобы отслеживать State.trackingState и соответствующим образом корректировать отрисовку или предупреждения в приложении в зависимости от точности отслеживания. (Ic00f0, b/445466590)
  • Переименованы значения перечисления HandJointType. (Ifbc83, b/482670596)
  • Переименованы константы FaceConfidenceRegion. (Ia62d5, b/482670596)
  • Переименованы константы FaceBlendShapeType. (I33b8b, b/482670596)
  • Добавлено: CreatePoseFromGeospatialPoseErrorInternal и CreateGeospatialPoseFromPoseErrorInternal. (I4bcf1, b/482666615)
  • Переименован параметр DeviceTrackingMode.LAST_KNOWN в SPATIAL_LAST_KNOWN (с устаревшим резервным значением), добавлен параметр INERTIAL_LAST_KNOWN для отслеживания 3DoF и параметр TRACKING_DEGRADED в TrackingState. (Ie661c, b/445466590)
  • Прекращена поддержка функции GroupEntity. Чтобы создать объект с базовыми функциями, вызовите Entity.create, который вернет интерфейс Entity. (I4c450, b/473867483)
  • Добавлен API XrLog. Установите для XrLog.isEnabled значение true, чтобы включить ведение журнала в JetpackXR, и используйте XrLog.Level, чтобы задать уровень журнала. (I76a1f, b/463460895, b/487378441)

Исправление ошибок

  • Добавьте поддержку отслеживания состояния устройства в устройства OpenXR. (I91485, b/445466590)

Версия 1.0.0-alpha12

25 марта 2026 г.

Выход androidx.xr.arcore:arcore-*:1.0.0-alpha12. Версия 1.0.0-alpha12 содержит эти коммиты.

Изменения в API

  • Изменил тип Config.augmentedObjectCategories с List на Set. (I25a64, b/487376359)
  • Типы androidx.xr.arcore.Eye и androidx.xr.arcore.Hand. (I42438, b/449032900)
  • Добавлена перегрузка Session.create, позволяющая передавать контекст Android для определения области действия ресурса. (I7d3fe, b/415805990, b/477386334)
  • Изменяет FakeRuntimeAnchor.ANCHOR_RESOURCE_LIMIT на FakeRuntimeAnchor.anchorResourceLimit. (I90841, b/431992235)
  • TiltGesture API стал экспериментальным, поскольку в будущем он может быть изменен или удален. Чтобы использовать этот API, включите @ExperimentalGesturesApi (Ic9858).
  • Добавлена возможность задавать категории для отслеживания AugmentedObject в конфигурации (I1f6e4, b/480220930).

Исправление ошибок

  • Исправлена сборка Chrome путем обновления файла META-INF/services/ с фактическим местоположением PerceptionRuntimeFactory. (I7a801, b/481288291)

Версия 1.0.0-alpha11

25 февраля 2026 г.

Выход androidx.xr.arcore:arcore-*:1.0.0-alpha11. Версия 1.0.0-alpha11 содержит эти коммиты.

Версия 1.0.0-alpha10

28 января 2026 г.

Выход androidx.xr.arcore:arcore-*:1.0.0-alpha10. Версия 1.0.0-alpha10 содержит эти коммиты.

Новые функции

  • Представляем API TiltGesture, который предоставляет реактивный Flow для стабильного определения состояния наклона устройства (вверх/вниз) с прогрессом перехода. (Ic269f, b/448152779)
  • В ARCore для Jetpack XR теперь используется механизм ведения журналов XR Runtime. Узнать больше можно на странице androidx.xr.runtime.Log. (l52735, b/448697662)

Изменения в API

  • Geospatial.createPoseFromGeospatialPose теперь работает на устройствах с поддержкой OpenXR. (l362c6)

Версия 1.0.0-alpha09

3 декабря 2025 г.

Выход androidx.xr.arcore:arcore-*:1.0.0-alpha09. Версия 1.0.0-alpha09 содержит эти коммиты.

Версия 1.0.0-alpha08

19 ноября 2025 г.

Выход androidx.xr.arcore:arcore-*:1.0.0-alpha08. Версия 1.0.0-alpha08 содержит эти коммиты.

Новые функции

  • ARCore для Jetpack XR теперь поддерживает устройства, на которых доступны Сервисы Google Play для AR.
  • Добавлены геопространственные API для определения доступности VPS и преобразования позы (I144dc).

Версия 1.0.0-alpha07

22 октября 2025 г.

Выход androidx.xr.arcore:arcore-*:1.0.0-alpha07. Версия 1.0.0-alpha07 содержит эти коммиты.

Исправление ошибок

  • :xr:arcore:arcore-openxr добавлен в качестве зависимости реализации в :xr:arcore:arcore (I47315, b/446999229)

Версия 1.0.0-alpha06

24 сентября 2025 г.

Выход androidx.xr.arcore:arcore-*:1.0.0-alpha06. Версия 1.0.0-alpha06 содержит эти коммиты.

Изменения в API

  • Поддержка тестирования разметки ARCore перенесена в модуль xr:arcore:arcore-testing. (I25469)
  • Добавление ArDevice и RenderViewpoint, чтобы приложения могли получать позу устройства и конфигурацию дисплея для отрисовки. (Ib7e3f)
  • Переименовать перечисления HandJointType с префиксом HAND_JOINT_TYPE_. (I3f7cd)
  • HandJointType был перемещен из xr:runtime:runtime в xr:arcore:arcore. (Iadb9c, b/409058039)
  • Hand.State теперь предоставляет java.nio.FloatBuffer с позами суставов в формате, который позволяет легко получить доступ к приложениям, ориентированным на производительность. (I55e27)

Версия 1.0.0-alpha05

30 июля 2025 г.

androidx.xr.arcore:arcore:1.0.0-alpha05, androidx.xr.arcore:arcore-guava:1.0.0-alpha05 и androidx.xr.arcore:arcore-rxjava3:1.0.0-alpha05. Версия 1.0.0-alpha05 содержит эти коммиты.

Новые функции

  • Добавьте getPrimaryHandSide, чтобы разработчик мог получить информацию о правой стороне (I270bd).
  • Добавлен API для проверки доступности VPS (I58573).
  • Добавьте ARCore API для checkVpsAvailability (Idbded)
  • В :xr:arcore:arcore-rxjava3 добавлены функции-расширения stateFlowable, которые могут использовать разработчики на Java. (I083aa, b/427247794)

Изменения в API

  • Значения конфигурации *Mode были переименованы, чтобы лучше отражать их поведение. (I6d247, b/414648065)
  • Основной артефакт ARCore (xr:arcore:arcore) будет содержать только асинхронные API в стиле Kotlin. Разработчики на Java могут использовать библиотеку xr:arcore:arcore-rxjava3 для доступа к совместимым API. (Ia525e, b/422794329)
  • Основной артефакт ARCore (xr:scenecore:scenecore) будет содержать только асинхронные API в стиле Kotlin. Разработчики на Java могут использовать библиотеку xr:arcore:arcore-guava для доступа к совместимым API. (Iffcb4, b/422773524)
  • Anchor.persistAsync() добавлен в AnchorGuava для использования разработчиками Java. (I4af1c, b/425984631)
  • Earth.createAnchorOnSurfaceAsync(Session, Double, Double, Double, Quaternion, Surface) добавлен в EarthGuava для использования разработчиками Java. (I66357, b/425992992)
  • Разработчики на Java будут использовать функции расширения для GltfModel.createAsync в GltfModel.kt. Асинхронные функции в GltfModel будут удалены. (I0af60)
  • Теперь в этой библиотеке используются аннотации JSpecify для проверки на наличие нулевых значений, которые применяются к типам. Разработчикам на Kotlin следует использовать следующий аргумент компилятора, чтобы обеспечить правильное использование: -Xjspecify-annotations=strict (это значение по умолчанию, начиная с версии 2.1.0 компилятора Kotlin) (Ia8420, b/326456246).
  • В :xr:arcore:arcore-rxjava3 добавлены функции-расширения subscribeAsFlowable, которые могут использовать разработчики на Java. (Id3e49, b/427277298)

Версия 1.0.0-alpha04

7 мая 2025 г.

Выход androidx.xr.arcore:arcore:1.0.0-alpha04. Версия 1.0.0-alpha04 содержит эти коммиты.

Изменения в API

  • Для проектов, выпущенных с Kotlin 2.0, требуется KGP 2.0.0 или более поздней версии. (Idb6b5)
  • TrackingState и HandJointType перенесены из ARCore в Runtime.
  • Значение "Hand.State.isActive (boolean)" изменено на "Hand.State.trackingState (androidx.xr.runtime.TrackingState)".
  • Anchor.load возвращает Anchor.AnchorLoadInvalidUuid, если UUID недействителен.

Версия 1.0.0-alpha03

26 февраля 2025 г.

androidx.xr.arcore:arcore:1.0.0-alpha03 не содержит значительных изменений по сравнению с последней альфа-версией. Версия 1.0.0-alpha03 содержит эти коммиты.

Версия 1.0.0-alpha02

12 февраля 2025 г.

Выход androidx.xr.arcore:arcore:1.0.0-alpha02. Версия 1.0.0-alpha02 содержит эти коммиты.

Новые функции

  • Добавлена поддержка отслеживания рук. Чтобы получить доступ к информации об отслеживании, используйте методы Hand.left и Hand.right.
  • API, которые создают якорь (Anchor.create, Anchor.load, Plane.createAnchor), теперь возвращают AnchorCreateResult и правильно реализуют AnchorCreateResourcesExhausted.

Исправление ошибок

  • Исключение Anchor.detach больше не приводит к критическому сбою из-за состояния гонки с потоком обновления сеанса.
  • Anchor.create стабильнее работает в эмуляторе

Версия 1.0.0-alpha01

12 декабря 2024 г.

Выход androidx.xr.arcore:arcore-* 1.0.0-alpha01.

Функции первоначальной версии

Библиотека ARCore для Jetpack XR, созданная на основе существующей библиотеки ARCore, позволяет объединять цифровой контент с реальным миром. Эта библиотека включает отслеживание движения, постоянные якоря, проверку попадания и идентификацию плоскостей с семантической маркировкой (например, пол, стены и столешницы). Подробнее о работе с ARCore для Jetpack XR рассказывается в руководстве для разработчиков.

  • Session: ARCore для Jetpack XR использует Jetpack XR Runtime для работы своих функций. Сеанс используется для взаимодействия с большинством API ARCore для Jetpack XR, поэтому ознакомьтесь с его документацией.

  • Plane: используйте плоскости, чтобы лучше понимать окружающий мир. У каждого плана есть Label, описывающий его семантически. Вы можете использовать subscribe, чтобы получать уведомления о последних обнаруженных самолетах, или state, чтобы получать уведомления об изменениях, связанных с определенным самолетом.

  • Anchor – связь между виртуальным объектом и реальным местоположением. Якоря можно прикрепить к определенному местоположению в пространстве (с помощью create) или к Trackable (с помощью createAnchor).

    • Якоря можно использовать повторно в разных сеансах. Для хранения используется persist, для перечисления – getPersistedAnchorUuids, а для извлечения – load. Обязательно unpersist их, когда они больше не нужны.

    • Якоря совместимы с ARCore для Jetpack XR и Jetpack SceneCore. Вы можете создать AnchorEntity, используя якорь, или, если у вас есть существующий AnchorEntity, использовать getAnchor, чтобы получить его опорную точку.

    • Обеспечьте естественное взаимодействие с помощью hitTest. При проверке попадания используется Ray, чтобы определить, с каким контентом пересекается луч, и создать на основе этого местоположения Anchor. Попробуйте провести проверку попадания из InputEvent.

Известные проблемы

  • Между вызовом unpersist и удалением его UUID из результатов, возвращаемых функцией getPersistedAnchorUuids, может пройти некоторое время.

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

  • Сохранение якоря, который ранее был сохранен, а затем удален, в настоящее время не поддерживается.

  • Использовать эмулятор можно, но его работа может быть менее стабильной, чем на реальном устройстве. В частности, вызовы create могут завершаться с ошибкой нативного кода и немедленно прекращать работу.

  • В некоторых случаях при вызове persist может быть ошибочно сгенерировано исключение RuntimeException с сообщением "Якорь не сохранен". В таких случаях функция все равно будет выполнена успешно, и якорь будет сохранен. В качестве временного решения мы рекомендуем обернуть вызов persist в блок try.