Jetpack Compose для XR

Создавайте декларативные пространственные макеты пользовательского интерфейса, использующие пространственные возможности Android XR.
Последнее обновление Стабильный релиз Предварительная версия релиза Бета-версия Альфа-версия
12 августа 2026 г. - - - 1.0.0-alpha17

Объявление зависимостей

Чтобы добавить зависимость от XR Compose, необходимо добавить репозиторий Google Maven в ваш проект. Для получения дополнительной информации ознакомьтесь с информацией в репозитории Google Maven .

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

классный

dependencies {
    implementation "androidx.xr.compose:compose:1.0.0-alpha17"

    // Use to write unit tests
    testImplementation "androidx.xr.compose:compose-testing:1.0.0-alpha17"
}

Котлин

dependencies {
    implementation("androidx.xr.compose:compose:1.0.0-alpha17")

    // Use to write unit tests
    testImplementation("androidx.xr.compose:compose-testing:1.0.0-alpha17")
}

Для получения дополнительной информации о зависимостях см. раздел «Добавление зависимостей сборки» .

Обратная связь

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

Создать новую задачу

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

Версия 1.0

Версия 1.0.0-alpha17

12 августа 2026 г.

Выпущены androidx.xr.compose:compose:1.0.0-alpha17 и androidx.xr.compose:compose-testing:1.0.0-alpha17 . Версия 1.0.0-alpha17 содержит следующие коммиты .

Изменения в API

  • Удалите класс значения Meter , он заменен на virtualPixelDensity в Scenecore . ( I690ee )
  • API SpatialGltfModel в настоящее время является экспериментальным и требует активации для использования. ( I4557e )
  • Сделать так, чтобы изменяемый размер system допускал значение null ( Ib0093 )
  • Отображаемая Density в SubspaceSemanticsInfo для тестирования. ( I2e826 )
  • Переименуйте параметр ResizePolicy по умолчанию в system и добавьте новый параметр Default без параметров ( Ic8b16 ).
  • Функция FollowTarget помечена как экспериментальная. Весь API FollowingSubspace теперь является экспериментальным. ( Id4ee3 )
  • Удаление API GltfAnimation ( IC2894 )
  • Переименован параметризованный метод MovePolicy.default() в MovePolicy.system() . Введено свойство val MovePolicy.Default для представления стандартного поведения перемещения по умолчанию. ( Iedcc9 )
  • Расширить требования к включению ExperimentalMoveAnchorPolicy для PlaneSemantic и PlaneOrientation ( Ief927 )
  • Удалите resetMins из VolumeConstraints.offset ( Ib2f2f )
  • Удалена устаревшая функция SceneCoreEntitySizeAdapter . ( Ib6722 )
  • Удалена устаревшая перегрузка Subspace с помощью allowUnboundedSubspace . ( I8e97f )
  • Удалена перегрузка устаревшего модификатора семантики. ( I4ac10 )

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

  • Исправлена ​​ошибка, из-за которой дочерние элементы Composable с прикрепленной InteractionPolicy запускали события ввода ( Icdba6 ).

Версия 1.0.0-alpha16

15 июля 2026 г.

Выпущены androidx.xr.compose:compose:1.0.0-alpha16 и androidx.xr.compose:compose-testing:1.0.0-alpha16 . Версия 1.0.0-alpha16 содержит следующие коммиты .

Изменения в API

  • Удаление API ComponentOverride ( I820c4 )
  • API GltfAnimation и SpatialGltfModelAnimation помечены как экспериментальные. Некоторые свойства были преобразованы в геттеры. ( I8d689 , b/524771027 )
  • Исправлено общее поведение плотности за счет установления постоянного коэффициента преобразования между Meter и пикселями. Устаревший Meter.kt, теперь можно использовать Session.scene.virtualPixelDensity в качестве альтернативы. ( I122ff , b/430097855 , b/474168798 )
  • Обновите модификатор resizable, чтобы вместо двух модификаторов использовался ResizePolicy ( I7fb0f , b/496257436 , b/519672992 ).
  • Добавлен параметр допуска: Dp = Dp(0.5f) ко всем общедоступным утверждениям равенства размеров и позиций с плавающей запятой в SubspaceAssertions.kt . Поведение допуска по умолчанию ( 0.5.dp ) полностью задокументировано. ( I266cb , b/521491915 )
  • Добавлена ​​перегрузка метода movable с параметром movePolicy , а transformingMovable и movable объявлены устаревшими ( Ic88c1 , b/481781189 ).
  • Добавлены новые неинтерактивные варианты стандартного элемента списка и сегментированного элемента списка, соответствующие спецификациям Material Expressive. Неинтерактивная версия устарела. ( Ide4de , b/491994186 )
  • Для модификатора Subspace параметр allowUnboundedSubspace теперь устарел и скрыт. Теперь неограниченное поведение следует достигать с помощью SubspaceModifier.requiredSizeIn ( maxWidth = Dp.Infinity , maxHeight = Dp.Infinity , maxDepth = Dp.Infinity ) в модификаторе Subspace. Параметр allowUnboundedSubspace был удален из FollowingSubspace . ( Ia72ae , b/433624021 )
  • Session.create преобразована в функцию приостановки. ( I5d27f )
  • Добавлена SubspaceModifier.spatializedAudioOutput , позволяющая пространственно обрабатывать воспроизведение звука через ExoPlayer или SoundEffectPlayer ( I46697 , b/489421980 , b/497867019 ).
  • Обновлены ComponentActivity.requestHomeSpace() и requestFullSpace() , теперь они возвращают SpaceRequestResult для проверки статуса. ( If1672 )
  • AnchorEntity был переименован в AnchorSpace ( Ifa95e , b/513619219 )
  • Метод unrestricted fromResource из SpatialGltfModelSource ( I1f5a1 , b/503047416 )
  • Члены класса SubspaceSemanticsMatcher являются публичными: свойство description , сопутствующие фабричные методы ( expectValue , keyIsDefined , keyNotDefined ), функции-члены ( matches , matchesAny ) и операторы ( and , or , not ). ( I972a4 , b/460427288 )
  • Обновлены SubspaceModifier.semantics , SubspaceModifier.testTag , SubspaceSemanticsInfo , SubspaceSemanticsModifierNode для использования специально подобранных типов пространственной семантики. ( I80dea , b/460427288 )
  • В SpatialAlignment переименовано position для align , а отдельные методы смещения по направлению удалены в пользу единого API align . ( I9bdb2 , b/479805937 )
  • Удалены устаревшие API космического режима из SpatialConfiguration . ( I1ef5c , b/458712461 )
  • Введен SubspaceSemanticsConfiguration . Это класс для настройки семантических свойств пространственного узла. Этот класс безопасно предоставляет методы запросов для 3D-семантики, не раскрывая при этом базовые возможности 2D-семантики внешним потребителям. ( Id025e , b/460427288 )
  • Представлен SubspaceSemanticsPropertyReceiver : специальная оболочка, которая ограничивает свойства контейнера 3D-макета допустимыми полями (первоначально testTag и contentDescription ). ( I5cf5c , b/460427288 )

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

  • Обновлен модификатор ` hasContentDescription для `Semantic`, теперь по умолчанию используется сопоставление подстрок. ( I08214 )
  • Добавлена ​​ограниченная функция FollowBehavior.ExponentialDecay() , которая обеспечивает плавное следование, управляемое упругой физикой. ( I7449c , b/485639909 , b/500493335 )

Это затронет большинство API. В частности, CompositionLocal LocalSession и все CompositionLocals , зависящие от LocalSession (например, LocalSpatialConfiguration , LocalSpatialCapabilities и т. д.), теперь будут возвращать значение null или его не-XR версии до инициализации Session .

Как только Session станет доступна, будет запущена перекомпозиция с правильным состоянием. ( I0cfa4 , b/514712835 , b/514712835 )

  • Уточнена документация для ComponentActivity.requestHomeSpace и ComponentActivity.requestFullSpace относительно поведения приостановки, отмены и параллельного выполнения. Обновлены тесты для проверки распространения CancellationException . ( I22f75 , b/493289528 )

Версия 1.0.0-alpha15

17 июня 2026 г.

Выпущены androidx.xr.compose:compose:1.0.0-alpha15 и androidx.xr.compose:compose-testing:1.0.0-alpha15 . Версия 1.0.0-alpha15 содержит следующие коммиты .

Изменения в API

  • Устаревшая ResizePolicy и старый модификатор resizable заменены новой перегрузкой SubspaceModifier.resizable и SubspaceModifier.transformingResizable . ( I9e4bc )
  • Обновлены API SpatialGltfModel : добавлена ​​поддержка загрузки моделей из ресурсов через SpatialGltfModelSource fromResource Переименована переменная speed в playbackSpeed ​​в SpatialGltfModelAnimation и добавлен метод resume(). SpatialGltfModelStatus и Loading теперь являются объектами. ( I523de )
  • API rotateToLookAtUser помечен как экспериментальный. ( I86c16 )
  • Переместили и переименовали защищенную переменную targetCurrentPose в локальную переменную currentTargetPoseMeter . ( Ia557c )
  • Обновите документацию kdocs для SpatialPanel и SpatialExternalSurface , чтобы указать, где объект отображается в пределах размера его макета ( I72104 ).
  • Логика загрузки SpatialGltfModel инкапсулирована в SpatialGltfModelState , а поведение при сбоях уточнено. ( Ibe98b )
  • Уточнена depth в SubspaceModifer.size в документации kdocs ( I0f84f )

Версия 1.0.0-alpha14

19 мая 2026 г.

Выпущены androidx.xr.compose:compose:1.0.0-alpha14 и androidx.xr.compose:compose-testing:1.0.0-alpha14 . Версия 1.0.0-alpha14 содержит следующие коммиты .

Изменения в API

  • Введена transformingMovable для управления трехмерным перемещением по умолчанию, а также новая перегрузка для функции movable для обработки пользовательских вариантов перемещения. ( I50960 )
  • SpatialGltfModel.fromData() был удален. ( I4d083 )
  • Добавлен новый интерфейс узла-модификатора, SubspaceMeasuredSizeAwareModifierNode , который предоставляет обратный вызов onRemeasured после прохода измерения. SubspaceLayoutAwareModifierNode теперь расширяет этот новый интерфейс. Модификатор onSizeChanged был обновлен для использования onRemeasured , что гарантирует запуск обратного вызова сразу после измерения, а не после размещения. ( Iafbae )
  • Обновлена InteractionPolicy для Interface ( I0ff30 )
  • Обновлен Compose compileSdk до API 37. Это означает, что для использования Compose требуется минимальная версия AGP 9.2.0. ( Id45cd )
  • Обновленный Size kdocs ( Iefa9a )

Версия 1.0.0-alpha13

6 мая 2026 г.

Выпущены androidx.xr.compose:compose:1.0.0-alpha13 и androidx.xr.compose:compose-testing:1.0.0-alpha13 . Версия 1.0.0-alpha13 содержит следующие коммиты .

Изменения в API

  • В API Orbiter ожидаются дополнительные изменения, поэтому мы рекомендуем отключить уведомления об устаревании Orbiter и следить за изменениями в Orbiter в будущих релизах.
  • Тем, кто использует SceneCoreEntity для рендеринга glTF-файлов, следует убедиться, что они передают session.scene.activitySpace в качестве параметра parent вызова GltfModel.create , чтобы гарантировать рендеринг glTF-файлов.
  • Добавление API SpatialGltfModel , позволяющего разработчикам добавлять GLTF-модели в свои приложения Compose For XR. Разработчики также могут запрашивать анимацию и узлы внутри своих GLTF-моделей. ( I8b542 , b/495422586 )
  • Преобразует SceneCoreEntitySizeAdapter из класса в интерфейс ( I5a784 , b/475292310 )
  • Переименована SurfaceProtection в SpatialExternalSurfaceProtection . Обновлена ​​документация kdocs SpatialExternalSurface ( Ifad0a , b/485231082 ).
  • Объявить currentWindowAdaptiveInfo устаревшим и ввести его версию V2 ( I40ecf , b/424442112 )
  • Модификатор resizable теперь является общедоступным и применим к группам (например, SpatialRow ). ( I2bcf6 , b/348483527 , b/489753178 , b/479530787 )
  • Модификатор movable теперь доступен публично. В настоящее время этот модификатор хорошо работает для SpatialPanels и SpatialExternalSurface ; однако планируется обеспечить его хорошую поддержку для всех SubspaceComposables . ( I9a3cd , b/479530787 , b/478935063 , b/478935063 )
  • SpatialEnterTransition и SpatialExitTransition помечены как @Immutable ( If1710 , b/487757837 )
  • API SpatialGltfModel помечен как ограниченный для данного выпуска до проведения дополнительных тестов. ( Ibf003 , b/466090694 )
  • Переименовано DeviceTrackingMode.LAST_KNOWN в SPATIAL_LAST_KNOWN (с устаревшим резервным вариантом), добавлено INERTIAL_LAST_KNOWN для отслеживания 3 степеней свободы и добавлено TRACKING_DEGRADED в TrackingState . ( Ie661c , b/445466590 )
  • Удаление устаревшего SpatialLayoutSpacer ( I7b36c )
  • Удаление устаревшего API для заполнения ( If1886 )
  • Добавлен floatRange к значениям смещения. Удалено значение по умолчанию для LayoutDirection ( I9d74e ).

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

  • Добавлены примеры кода и документация KDoc для SpatialColumn , SpatialRow и SpatialCurvedRow . ( Iaf54f , b/495777633 )

Версия 1.0.0-alpha12

25 марта 2026 г.

Выпущены androidx.xr.compose:compose:1.0.0-alpha12 и androidx.xr.compose:compose-testing:1.0.0-alpha12 . Версия 1.0.0-alpha12 содержит следующие коммиты .

Изменения в API

  • Добавлены API SpatialGltfModel и SpatialGltfModelAnimation для рендеринга glTF-файлов и управления анимацией. Изменено состояние SpatialGltfModelState на AutoCloseable , теперь его необходимо закрыть, чтобы освободить ресурсы. ( I11fde , b/466065486 , b/481379924 ). Однако API SpatialGltfModel помечен как ограниченный для этого релиза до проведения дополнительных тестов. ( Ibf003 , b/466090694 )
  • Добавлена ​​устаревшая пустая перегрузка для SubspaceModifier.rotate . ( Idceb6 )
  • Функция SpatialSmoothFeatheringEffect переименована в spatialSmoothFeatheringEffect и перемещена в модуль отрисовки. Значение сглаживания по умолчанию SpatialExternalSurface обновлено до null, что имитирует старую функциональность ZeroFeatheringEffect. ( I5fdaa , b/460426800 )
  • Удален onPointSourceParamsAvailable . В ближайшем будущем будет доступен другой API для пространственной обработки звука. ( I86507 , b/458513439 )
  • Добавлено поведение RTL для модификаторов подпространства смещения. Также добавлена absoluteOffset , позволяющая игнорировать направление компоновки. ( I30e4b , b/474409165 )

Версия 1.0.0-alpha11

25 февраля 2026 г.

Выпущены androidx.xr.compose:compose:1.0.0-alpha11 и androidx.xr.compose:compose-testing:1.0.0-alpha11 . Версия 1.0.0-alpha11 содержит следующие коммиты .

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

  • Добавление параметра SuperSampling к SpatialExternalSurfaces ( Icd4d1 )

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

  • Проблема с SurfaceEntity в SceneCore может приводить к сбоям приложений при создании экземпляров SpatialExternalSurface . Эта проблема решена в androidx.xr.scenecore:scenecore-*:1.0.0-alpha13 , androidx.xr.compose:compose:1.0.0-alpha12 и их последующих релизах. Затронутым приложениям следует обновиться до последних версий.

Изменения в API

  • Изменения в заполнении модификаторов подпространства для учета направления компоновки. ( I53e25 )
  • SpatialCapabilities теперь закрыта и не может быть расширена. ( I07aef )
  • API-интерфейсы SpatialRow и SpatialColumn , принимающие общий параметр SpatialAlignment устарели; вместо них используйте API-интерфейсы, принимающие либо verticalAlignment , либо horizontalAlignment для SpatialRow и SpatialColumn соответственно. ( Iec390 )
  • Объединение перегрузки API функций SubspaceLayout ( IDD30a )
  • Переименована SubspaceModifier.lookAtUser в rotateToLookAtUser , а параметр up в upDirection . ( Icafb8 )
  • Превращение функции SpatialRow во встроенную функцию ( Ia2f20 )
  • Превращение SpatialColumn во встроенную функцию ( I681be )
  • Удалён API для рекламных щитов ( Ib76cd )

Версия 1.0.0-alpha10

28 января 2026 г.

Выпущены androidx.xr.compose:compose:1.0.0-alpha10 и androidx.xr.compose:compose-testing:1.0.0-alpha10 . Версия 1.0.0-alpha10 содержит следующие коммиты .

Изменения в API

  • Удаление устаревшего API - ApplicationSubspace ( Ia6596 , b/468345186 )
  • Обновлена SpatialShape до герметичного интерфейса ( I7e3f5 , b/460426800 )
  • Удаление устаревших API в SpatialAlignment . ( Ib0b61 , b/468011887 )
  • Прекращение поддержки SpatialLayoutSpacer и введение SpatialSpacer . ( I2ebf3 , b/466071383 )
  • Обновлен API UserSubspace : термин «ленивая блокировка» заменен на «мягкая блокировка». ( I9ded1 , b/464035984 )

Версия 1.0.0-alpha09

3 декабря 2025 г.

Выпущены androidx.xr.compose:compose:1.0.0-alpha09 и androidx.xr.compose:compose-testing:1.0.0-alpha09 . Версия 1.0.0-alpha09 содержит следующие коммиты .

Изменения в API

  • Добавление модификаторов LookAtUser и Billboard, позволяющих контенту всегда быть обращенным к пользователю. ( I49b99 )
  • Добавляет возможность устанавливать InteractionPolicy для SpatialExternalSurfaces и SpatialPanels , что позволяет обнаруживать щелчки и другие события ввода в 3D-пространстве. ( Iae155 )
  • Добавлена ​​перегрузка модификаторов size и requiredSize с шириной, высотой и глубиной в качестве значений Dp. ( I92f79 )
  • Интерфейс ParentLayoutParamsModifier теперь наследует DelegatableSubspaceNode . ( I1a6d4 )
  • ApplicationSubspace устарела, в пользу неё используется API Subspace.
    • Поведение API подпространства изменено таким образом, чтобы предоставлять подпространство, охватывающее все приложение, только в рекомендуемом положении и масштабе.
    • Представлен API PlanarEmbeddedSubspace , позволяющий создавать вложенные подпространства в двумерном контексте. ( Id3343 )
  • В API SubspaceModifier.Node добавлен флаг shouldAutoInvalidate ( I93902 )
  • Добавлено required(Size|Width|Depth|Height) в API, позволяющие разработчикам ограничивать размер @SubspaceComposable определенным диапазоном, игнорируя входящие ограничения измерений родительского элемента. ( Ifaa78 )
  • Добавлена SubspaceModifier.onSizeChanged , которая предоставляет разработчикам простой, сфокусированный коллбэк для реагирования на изменение размера объекта @SubspaceComposable . ( I994f9 )
  • Удалён API для работы с объёмом. Вместо API для работы с объёмом следует использовать API SceneCoreEntity . ( I4162b )
  • Разделить SubspaceLayoutModifierNode.requestRelayout на invalidateMeasurement/invalidatePlacement . ( I14805 )
  • Добавлен API SpatialGltfModel , позволяющий разработчикам отображать файлы glTF в Compose. ( Icc91f )
  • Представлен компонуемый API SpatialGltfModel для упрощения рендеринга glTF-файлов ( Iade67 ).

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

  • Исправлена ​​ошибка компоновки в SceneCoreEntity . Теперь он должен корректно учитывать свои ограничения. ( I11bb8 )
  • Уменьшить размер модулей jxr-compose до Compile sdk = 34 ( I2d5db )

Версия 1.0.0-alpha08

22 октября 2025 г.

Выпущены androidx.xr.compose:compose:1.0.0-alpha08 и androidx.xr.compose:compose-testing:1.0.0-alpha08 . Версия 1.0.0-alpha08 содержит следующие коммиты .

Изменения в API

  • Изменена ResizePolicy для приема onResizeStart , onResizeUpdate и onResizeEnd . ( I7e21f )

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

  • Предотвращение сбоя при уничтожении Activity с подпространством. ( I595a1 )

Версия 1.0.0-alpha07

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

Выпущены androidx.xr.compose:compose:1.0.0-alpha07 и androidx.xr.compose:compose-testing:1.0.0-alpha07 . Версия 1.0.0-alpha07 содержит следующие коммиты .

Изменения в API

  • Улучшена документация KDocs для SpatialMainPanel . ( I27b70 , b/444467891 )
  • Введена SpatialArrangement для размещения дочерних элементов вдоль главной оси в трехмерных макетах, таких как SpatialRow и SpatialColumn . Этот новый API предоставляет знакомые параметры размещения из 2D Compose, включая Start , End , Center , SpaceBetween , SpaceAround и SpaceEvenly , с полной поддержкой как LTR, так и RTL направлений компоновки. ( I7db38 , b/436289959 )
  • Добавлен базовый интерфейс для SubspaceModifier.Node для повышения типобезопасности и удобства использования интерфейсов расширения, например:
    • CompositionLocalConsumerSubspaceModifierNode
    • LayoutCoordinatesAwareModifierNode
    • SubspaceLayoutModifierNode
    • CoreEntityNode (internal) ( Iede00 , b/440599394 , b/440599394 )
  • Unrestrict SpatialExternalSurface ( I33315 , b/439646773 )
  • Ввести SubspaceModifier для компонуемых объектов Subspace и заменить параметр constraints с SubspaceModifier на SubspaceModifiers , зависящие от размера. Если allowUnboundedSubspace имеет значение true, объекты Subspaces по-прежнему могут иметь неограниченные ограничения. ( Ib06e6 , b/433331675 )
  • Модификаторы SubspaceModifiers позволяющие перемещать и изменять размер элементов, теперь считаются устаревшими, поскольку DragPolicy() и ResizePolicy() стали частью API SpatialPanel и SpatialExternalSurface ( I397bf , b/437924639 ).
  • Добавлена ​​поддержка LayoutDirection в пространственных макетах. Теперь при использовании SpatialAlignment элементы будут корректно располагаться как в контекстах LTR, так и RTL. ( I964bb , b/436300273 )
  • Добавьте параметры Resizable и Movable в API Panel , чтобы гарантировать, что эти свойства могут применяться только к поддерживаемым контейнерам. ( Id491c )
  • Добавлены SubspaceModifiers sizeIn , widthIn , heightIn , depthIn позволяющие задавать точные минимальные и максимальные ограничения для ширины, высоты и глубины. ( I1af09 , b/433330761 )

Версия 1.0.0-alpha06

13 августа 2025 г.

Выпущены androidx.xr.compose:compose:1.0.0-alpha06 и androidx.xr.compose:compose-testing:1.0.0-alpha06 . Версия 1.0.0-alpha06 содержит следующие коммиты .

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

  • Восстановить ComposeXrOwnerLocals при уничтожении владельца жизненного цикла. ( 9123ce1 )

Версия 1.0.0-alpha05

30 июля 2025 г.

Выпущены androidx.xr.compose:compose:1.0.0-alpha05 и androidx.xr.compose:compose-testing:1.0.0-alpha05 . Версия 1.0.0-alpha05 содержит следующие коммиты .

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

  • Класс аннотации SubspaceComposable стал общедоступным. ( Ic2a34 , b/399432430 )
  • Два новых компонента SpatialExternalSurface Composable, представляющие сферы с углом обзора 180 и 360 градусов. ( I40ef2 , b/391705799 )
  • Добавлен SubspaceModifier.aspectRatio ( Ide5ab , b/399729509 , b/414762147 )
  • Добавлен API SceneCoreEntity для улучшения взаимодействия между SceneCore и Compose for XR. ( I50bb3 , b/423020989 )
  • Предоставлен API GravityAlignedsubspace для поддержки функции Unscaled And GravityAligned ( I07359 )

Изменения в API

  • Функция SpatialDialog() будет следовать конфигурации нажатия клавиши SpatialDialogProperties.dismissOnBack . ( Ib453b , b/416797132 )
  • Обновите minimumPanelDimension до нового значения по умолчанию Dimensions(0.1f, 0.1f, 0.1f) поскольку он представлен в метрах. ( Ib852a )
  • Теперь подпространства и орбитальные аппараты будут сохранять своё внутреннее состояние в домашнем пространстве и при работе приложения в фоновом режиме. В режиме домашнего пространства подпространство по-прежнему будет настраивать свою сцену в рамках подготовки к переключению в полномасштабный космический режим. ( I40317 , b/416037751 )
  • Теперь SpatialDialogs будут сохранять свое состояние, когда приложение находится в фоновом режиме. ( I6aa56 )
  • Теперь ApplicationSubspace будет наследовать рекомендуемый масштаб и положение от системы. ( I4565f , b/418834194 )
  • Добавлено более информативное сообщение об ошибке, и ошибка возникает раньше, когда SubspaceComposable используется в контексте, отличном от SubspaceComposable . ( Iee2ae , b/416484684 )
  • Изменение статуса ExperimentalSubspaceVolumeApi с Warning на Error, поскольку предупреждения часто игнорируются при неправильном использовании компонуемых API. ( I427aa , b/424864286 )
  • Теперь параметры Subspace и ApplicationSubspace ограничены параметром recommendedContentBoxInFullSpace . Ранее они ограничивались полем зрения SpatialUser . ( I41015 , b/423074142 )
  • Обновите SpatialElevation , чтобы использовать минимальный размер, а не жестко заданный размер ( I2dbe6 , b/427785338 ).
  • Обновите способ скриминга SpatialAcitivityPanel , чтобы он обновлялся при изменении ключевой переменной. ( I0f64d , b/427999029 )
  • Удалите свойство VolumeConstraints.Unbounded и установите значения ограничений по умолчанию на эквивалентные. ( Ie24ec , b/407938414 )
  • SpatialFeatheringSize больше не является общедоступным ( I1c15b , b/399432430 ).
  • Переименовали XR Placeable в SubspacePlaceable , чтобы отличить его от Placeable из Compose. ( I74874 )
  • Удалены настройки Orbiter и добавлен новый параметр shouldRenderInNonSpatial . Кроме того, удален класс EdgeOffset и добавлен новый параметр orbiterOffsetType для объединения функций Orbiter() . А также переименован OrbiterEdge в ContentEdge . ( Iebf3d )
  • Переименование Measurable в SubspaceMeasurable для отличия от типа Measurable в Compose. ( I9726c )
  • Переименовать MeasureResult в SubspaceMeasureResult ( I9f34d )
  • Удалён API setSubspaceContent в пользу использования setContent из Compose с компонуемым Subspace . ( Ifff4c , b/421427391 , b/421427391 )
  • MeasurePolicy переименован в SubspaceMeasurePolicy . ( I37a9b , b/422553904 )
  • Преобразуйте SubspaceSemanticsInfo в закрытый интерфейс, поскольку без значений по умолчанию мы не сможем добавлять элементы. ( I372f9 , b/423704068 )
  • Обновлена ​​документация SpatialExternalSurface , ContentSecurityLevel переименован в SurfaceProtection ( I3c460 , b/420982808 )
  • Предоставлен перегруженный конструктор для модификатора movable, позволяющий устанавливать привязку. ( Ic0c70 )
  • Добавлено больше параметров позиционирования для всплывающих подсказок, чтобы разработчики могли контролировать, где подсказка располагается: выше, ниже, слева или справа от якоря. Добавлен API, принимающий параметр Shape для курсоров, что позволит предоставлять больше пользовательских форм. ( Ie513c , b/374766087 , b/418854637 )
  • Удален CoreEntity как PublishedApi ( Ifee05 )

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

  • Исправлена ​​ошибка, из-за которой SpatialDialog мерцал во время рендеринга. ( Ife73c , b/401619909 )
  • Исправлена ​​ошибка, из-за которой SpatialDialog не мог скрыть панель действий. ( I8ca6c , b/367442109 )
  • Исправлена ​​ошибка, из-за которой диалоговое окно XR не отображало часть содержимого ( I17cd5 , b/418062437 )
  • Исправлена ​​ошибка, из-за которой всплывающее окно SpatialPopup закрывалось при нажатии внутри контента. ( If262c , b/417245722 )
  • Исправлена ​​ошибка, из-за которой при использовании цепочки вызовов resizable().movable() SpatialPanel некорректно изменял свой размер до нового значения. ( I02ee3 , b/422264230 )
  • Исправлена ​​ошибка, из-за которой topBar перекрывала меню в SpatialComposeVideoPlayer ( Id33bc , b/427168167 ).
  • Исправлена ​​ошибка, из-за которой не отображался радиус скругления углов ( I975fe , b/428261830 )

Версия 1.0.0-alpha04

7 мая 2025 г.

Выпущены androidx.xr.compose:compose:1.0.0-alpha04 и androidx.xr.compose:compose-testing:1.0.0-alpha04 . Версия 1.0.0-alpha04 содержит следующие коммиты .

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

  • Добавлен интерфейс CompositionLocalConsumerSubspaceModifierNode , позволяющий пользовательским типам SubspaceModifier получать доступ к локальным значениям композиции.
  • Добавлен новый API SpatialPanel , который соответствует стилю реализации Compose AndroidView и является устаревшим для предыдущего ViewBased SpatialPanel .
  • Добавлен сопутствующий объект VolumeConstraints.Unbounded , представляющий неограниченные ограничения.
  • Добавлена SubspaceModifier.onPointSourceParams для обеспечения возможности использования пространственного источника звука.
  • Добавлен общедоступный ApplicationSubspace , предлагающий необязательные значения VolumeConstraints для определения трехмерной области, в которой приложение может отображать пространственный контент. По умолчанию, если ограничения не указаны, Subspace будет ограничен по ширине и высоте текущим полем зрения SpatialUser . Пользователи могут указать ограничения, которые будут использоваться, если поле зрения определить невозможно. В противном случае используются значения ширины и высоты поля зрения по умолчанию.
  • Добавлена SpatialExternalSurface , которую можно использовать для рендеринга стереоскопического контента. SpatialExternalSurface настраивается с помощью модификаторов (кроме альфа-канала) и эффекта сглаживания краев.
  • Добавлен новый модификатор подпространства pointerHoverIcon , позволяющий пользователям устанавливать значок для пространственного указателя.

Изменения в API

  • Снято ограничение RequiresApi(34) для всех пакетов Jetpack XR. Это ограничение было излишним, поскольку Jetpack XR в настоящее время доступен только на устройствах с уровнем API 34 и выше. ( Iae0f8 )
  • Для использования проектов, выпущенных с Kotlin 2.0, требуется KGP 2.0.0 или более поздняя версия. ( Idb6b5 )
  • Теперь функция возврата будет работать на пространственных панелях без встроенных активностей. Для корректной работы функции возврата необходимо указать android:enableOnBackInvokedCallback="true" в манифесте Android.
  • Теперь обработка обратных вызовов будет работать для пространственных диалогов. Для корректной работы обработки обратных вызовов необходимо указать android:enableOnBackInvokedCallback="true" в манифесте Android.
  • Теперь панели SpatialPanel создаваемые с помощью Compose и View, могут изменять свой размер в зависимости от содержимого.
  • Теперь разработчики могут устанавливать собственные значения SpatialElevationLevel и не ограничены предопределенными уровнями.
  • Теперь уровень высоты орбитального аппарата можно настроить с помощью параметра elevation .
  • Теперь подпространство по умолчанию может быть ограничено по ширине и высоте полем зрения SpatialUser . Если поле зрения определить невозможно, используются значения ширины и высоты поля зрения по умолчанию.
  • Добавлены новые функции обратного вызова onMoveStart и onMoveEnd к модификатору Movable . Функции onMoveStart и onMoveEnd вызываются, когда пользователь начинает и заканчивает перемещение подпространства, компонуемого с помощью модификатора movable.
  • Параметр name был удален из пространственных API, таких как SpatialRow и SpatialPanel . Для отладки пространственных деревьев компоновки используйте вместо него SubspaceModifier.testTag .
  • Удалена неподдерживаемая перегрузка SpatialPopup , которая содержит только spatialElevationLevel и content . Пожалуйста, используйте интерфейс, поддерживающий onDimissRequest .
  • Функция обратного вызова onPoseChange из модификатора Movable удалена. Используйте вместо неё onMove .
  • SubspaceModifiers перестанут оказывать своё воздействие, если они отсоединены или отсоединяются в данный момент.
  • Существующий API SpatialRow был разделён на SpatialRow и SpatialCurvedRow . Если ранее использовался параметр curveRadius из SpatialRow , теперь вместо него следует использовать SpatialCurvedRow , который обеспечивает аналогичное поведение.
  • В системах с относительно свежим образом системы панели MainPanel и ActivityPanel больше не отображают заголовки окон.
  • Модификаторы альфа-канала и масштаба теперь суммируются и будут умножать свои значения для получения конечного значения альфа-канала или масштаба.
  • Функция обратного вызова onPoseChange из модификатора Movable была оптимизирована для более плавного изменения позы.
  • Теперь модификаторы, изменяемые по размеру и перемещаемые, будут выполнять свои обратные вызовы в основном потоке, чтобы гарантировать, что изменения состояния будут вызывать перекомпозицию.
  • Добавлено отслеживание состояния на этапах компоновки и измерения, чтобы гарантировать, что изменения состояния в SubspaceLayout будут запускать процесс перестановки.
  • Оптимизированы обновления цепочки модификаторов для более эффективного повторного использования существующих модификаторов.

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

  • Игра прекращается при появлении диалогового окна SpatialDialog . ( Ic4594 )
  • Запросы на переадресацию, отправленные во время отсоединения узлов-модификаторов, теперь будут игнорироваться.
  • Удалены фазы перераспределения нагрузки, запускаемые модификаторами Movable и Resizable.
  • Исправлена ​​ошибка, приводившая к сбою в функции MainPanel() , которая возникала при обнулении любого из измерений, либо напрямую, либо во время вычисления компоновки, например, при вычислении SpatialRow/SpatialColumn . Теперь панель будет скрыта. Обратите внимание, что это исправление касается именно сбоев на этапе компоновки; изменение размера панели до нуля с помощью взаимодействия с пользователем будет обрабатываться отдельно. Скрытая панель не имеет элементов пользовательского интерфейса.
  • Исправлена ​​ошибка, связанная с maintainAspectRatio из модификатора resizable. Теперь соотношение сторон должно сохраняться.
  • Исправлена ​​ошибка, связанная с вложенными подпространствами, из-за которой они неправильно позиционировались в течение одного кадра.
  • Исправлена ​​ошибка, из-за которой скругленные углы иногда не применялись, хотя должны были.
  • NestedSubspaces больше не будут отображаться в неправильном месте в течение одного кадра.

Версия 1.0.0-alpha03

26 февраля 2025 г.

Выпущены androidx.xr.compose:compose:1.0.0-alpha03 и androidx.xr.compose:compose-testing:1.0.0-alpha03 без существенных изменений по сравнению с последней альфа-версией. Версия 1.0.0-alpha03 содержит следующие коммиты

Версия 1.0.0-alpha02

12 февраля 2025 г.

Выпущены androidx.xr.compose:compose:1.0.0-alpha02 и androidx.xr.compose:compose-testing:1.0.0-alpha02 . Версия 1.0.0-alpha02 содержит следующие коммиты .

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

  • Теперь панель действий может отображать свое содержимое при активации пространственного диалога.
  • API Orbiter теперь можно использовать в контекстах SubspaceComposable , и он будет прикреплять Orbiter к ближайшему родительскому объекту, основанному на SubspaceLayout .
  • Введена LayoutCoordinatesAwareModifierNode , позволяющая создавать пользовательские модификаторы на основе позиционирования.
  • Добавлены методы жизненного цикла attach/detach в SubspaceModifier.Node .
  • Добавлена scaleWithDistance к модификатору movable. При включении scaleWithDistance перемещаемый элемент подпространства будет увеличиваться или уменьшаться. При этом он сохранит любой заданный масштаб, который был у него до перемещения.

Изменения в API

  • Заменен SessionCallbackProvider на SpatialCapabilities .

Другие изменения

  • minSDK уменьшен до 24. Все API Jetpack XR по-прежнему требуют API 34 во время выполнения.
  • Конструкторы Orbiter EdgeOffset.inner , EdgeOffset.outer и EdgeOffset.overlap больше не являются методами @Composable , что позволяет использовать их в контекстах, не допускающих компонуемость.
  • Обновите пространственные уровни высоты в соответствии с последними требованиями к пользовательскому интерфейсу.
  • Реализуйте интерфейс SubspaceSemanticsInfo в MeasurableLayout .
  • Переименован SubspaceModifierElement в SubspaceModifierNodeElement .

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

  • Исправлены ошибки, стабилизирующие порядок использования SubspaceModifier . Работа SubspaceModifier должна быть более надежной. Модификаторы Offset, rotate, scale, movable и resizable теперь можно использовать в любом порядке.

Версия 1.0.0-alpha01

12 декабря 2024 г.

Выпущена версия androidx.xr.compose:compose-*1.0.0-alpha01 .

Особенности первоначального выпуска

  • Первый релиз Jetpack Compose для XR для разработчиков. Используйте знакомые концепции Compose, такие как строки и столбцы, для создания пространственных макетов пользовательского интерфейса в XR, независимо от того, переносите ли вы существующее 2D-приложение в XR или создаете новое XR-приложение с нуля. Эта библиотека предоставляет подпространственные и пространственные компонуемые элементы: такие как пространственные панели и орбитеры, которые позволяют размещать существующий 2D-интерфейс Compose или интерфейс на основе Views в пространственном макете. Она представляет компонуемый элемент подпространства Volume, который позволяет размещать объекты SceneCore, такие как 3D-модели, относительно вашего пользовательского интерфейса. Подробнее см. в этом руководстве для разработчиков :

    • Subspace : Этот компонуемый элемент можно разместить в любом месте иерархии пользовательского интерфейса вашего приложения, что позволяет сохранять макеты для 2D и пространственного интерфейса без потери контекста между файлами. Это упрощает обмен такими элементами, как существующая архитектура приложения, между XR и другими форм-факторами без необходимости переносить состояние по всему дереву пользовательского интерфейса или перестраивать архитектуру приложения.

    • SpatialPanel : Пространственная панель — это компонуемый подпространство, позволяющее отображать контент приложения — например, воспроизведение видео, статичные изображения или любой другой контент в пространственной панели.

    • Orbiter : Orbiter — это пространственный компонент пользовательского интерфейса. Он предназначен для прикрепления к соответствующей пространственной панели и содержит элементы навигации и контекстных действий, связанных с этой пространственной панелью. Например, если вы создали пространственную панель для отображения видеоконтента, вы можете добавить элементы управления воспроизведением видео внутрь Orbiter.

    • Volume : Размещайте объекты SceneCore, такие как 3D-модели, относительно вашего пользовательского интерфейса.

  • Spatial Layout: You can create multiple spatial panels and place them within a Spatial Layout using SpatialRow , SpatialColumn , SpatialBox , and SpatialLayoutSpacer . Use SubspaceModifier s to customize your layout.

  • Spatial UI components: These elements can be reused in your 2D UI, and their spatial attributes will only be visible when spatial capabilities are enabled.

    • SpatialDialog : Panel will push slightly back in z-depth to display an elevated dialog.
    • SpatialPopUp : Panel will push slightly back in z-depth to display an elevated popup
    • SpatialElevation : SpatialElevationLevel can be set to add elevation.
  • SpatialCapabilities: Spatial capabilities can change as users interact with your app or the system, or can even be changed by your app itself—for example, moving into Home Space or Full Space. To avoid issues, your app needs to check for LocalSpatialCapabilities.current to determine which APIs are supported in the current environment. isSpatialUiEnabled : Spatial UI elements (eg SpatialPanel) isContent3dEnabled : 3D objects isAppEnvironmentEnabled : The environment isPassthroughControlEnabled : Whether or not the application can control the passthrough state isSpatialAudioEnabled : Spatial audio

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

  • Currently a minSDK of 30 is required to use Jetpack Compose for XR. As a workaround you may add the following manifest entry <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> to be able to build and run with a minSDK of 23.
  • Jetpack XR apps currently require requesting android.permission.SCENE_UNDERSTANDING permission in the AndroidManifest.
  • When an app launches directly into Full Space using the PROPERTY_XR_ACTIVITY_START_MODE property in their manifest, Activities/Applications are initially opened in Home Space before transitioning into Full Space.
  • glTFs in Volume Composables may initially flicker at the wrong location.
  • Using a SpatialDialog in a panel that has been moved significantly will push the content in the wrong direction.