Jetpack SceneCore
| Последнее обновление | Основная версия | Релиз-кандидат | Бета-версия | Альфа-версия |
|---|---|---|---|---|
| 21 октября 2026 г. | 1.0.0 | - | - | 1.1.0-alpha01 |
Объявление зависимостей
Чтобы добавить зависимость от XR SceneCore, добавьте в проект репозиторий Google Maven. Подробную информацию можно найти в статье Репозиторий Google Maven.
Добавьте зависимости для нужных артефактов в файл build.gradle приложения или модуля:
классный
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-rc01" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-rc01" }
Котлин
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-rc01") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-rc01") }
Подробнее о добавлении зависимостей сборки…
Отзыв
Ваши отзывы помогают нам улучшать Jetpack. Если вы обнаружите новые проблемы или у вас появятся идеи по улучшению этой библиотеки, сообщите нам. Прежде чем сообщать о новых ошибках, изучите уже добавленные. Вы можете проголосовать за существующую проблему, нажав кнопку со звездочкой.
Дополнительную информацию можно найти в документации по системе отслеживания ошибок.
Версия 1.1
Версия 1.1.0-alpha01
21 октября 2026 г.
Выпущены данные "androidx.xr.scenecore:scenecore-*:1.1.0-alpha01". Версия 1.1.0-alpha01 содержит эти коммиты.
Изменения в API
- Добавлены API для динамического обновления сеток (
MeshBuffer.createDynamic,MeshBuffer.updateVertexData,MeshBuffer.updateIndexDataи динамический конструкторCustomMesh.BuilderFromMeshData), которые позволяют обновлять данные вершин и индексов во время выполнения. (Ia1ecb) - Добавлены вспомогательные методы
VertexLayout.getBufferIndex, позволяющие легко получить индекс буфера для заданногоVertexAttributeилиVertexBufferLayout. (I1a9e3) - Сделали
CustomMesh.boundsпеременной, чтобы граничная рамка могла динамически обновляться во время выполнения. (Ib0397) glTFAPI анимации (GltfAnimation,GltfModelEntity.getAnimationsиGltfModelEntity.stopAllAnimations) стали общедоступными и стабильными. СеттерGltfAnimation.loop остался экспериментальным, аGltfAnimationStartOptionsи start(options) – экспериментальными и устаревшими. (Iacdae)- Добавлен параметр
stopAllAnimations()вGltfModelEntity, удалены параметры изGltfAnimation.start(), добавлены свойстваloopиspeedвGltfAnimation, а также объявлены устаревшимиGltfAnimationStartOptions,start(options)иseekTo(Duration). (I53105) - Обновлены API
GltfModelEntity, чтобы задокументироватьIllegalStateException(в частности,Entity.DisposedException) при вызове удаленных объектов. I65a76f
Исправление ошибок
- Зависимость
androidx.lifecycle:lifecycle-runtimeобновлена до версии 2.10.0. Эта версия необходима для запуска встроенных проверок времени выполнения жизненного цикла с AGP версии 9.5.0-alpha04 или более поздней. (I99bfd, b/556807521) - Улучшены kdocs, связанные с
AudioOutputProvider, чтобы подчеркнуть, что его не следует повторно использовать с несколькими экземплярамиExoPlayer(I6b18e). - Удалены ненужные зависимости от
impressв различных модулях XR. I84636c
Версия 1.0
Версия 1.0.0
21 октября 2026 г.
Выпущены данные "androidx.xr.scenecore:scenecore-*:1.0.0". Версия 1.0.0 содержит эти коммиты.
Основные функции версии 1.0.0:
- Вышла стабильная версия Jetpack XR SceneCore SceneCore позволяет размещать и упорядочивать 3D-контент, определяемый объектами, относительно друг друга и вашего окружения. С помощью SceneCore вы можете создавать, размещать и изменять 2D-панели и 3D-модели в сценах виртуальной и смешанной реальности, указывать пространственные среды и источники пространственного звука, а также привязывать виртуальный контент к реальному миру.
- Дополнительную информацию можно найти на обзорной странице и в документации по API.
Версия 1.0.0-rc02
7 октября 2026 г.
Выпущены данные "androidx.xr.scenecore:scenecore-*:1.0.0-rc02". Версия 1.0.0-rc02 содержит эти коммиты.
Исправление ошибок
- Устранена потенциальная утечка памяти: удален метод
perceptionRuntimeCacheвSessionExtи выполнен рефакторинг для полученияPerceptionRuntimeнепосредственно из экземпляраSession. (Ie35b1) - Устранена потенциальная утечка контекста. Для этого в нативных дескрипторах
OpenXRиспользуетсяapplicationContext, чтобы нативная среда выполнения не содержала ссылок на контекстActivity. (Ie35b1) - Устранено состояние гонки в
XrInstanceManagerза счет внедрения надлежащей синхронизации и блокировки инициализации. (Ie35b1) - Исправлена ошибка в
ReferenceCleaner, чтобы поддерживать отмену регистрации действий по очистке, и обеспечено явное выполнение действий по очисткеEntityво времяdispose(), что предотвращает повторное выполнение при сборке мусора. (Ie35b1) - Устранена утечка памяти в
Scene. Для этого мы удалилиsceneCacheвSessionExtи провели рефакторингScene, чтобы получать экземпляр непосредственно изsessionConnectors. (Ie35b1)
Версия 1.0.0-rc01
9 сентября 2026 г.
Выпущены данные "androidx.xr.scenecore:scenecore-*:1.0.0-rc01". Версия 1.0.0-rc01 содержит эти коммиты.
Изменения в API
- Добавлено в библиотеку (
xr:scenecore:scenecore-openxr). (Ic49f2) - Удалены несколько устаревших API перед стабильным выпуском 1.0.0.
Исправление ошибок
- Устранена утечка памяти, из-за которой система могла сохранять ссылку на действие после его удаления. (I6dcd7)
Изменения в поведении
- Удален вывод logcat из SceneCore. (I10c3c)
Версия 1.0.0-beta02
12 августа 2026 г.
Выпущены данные "androidx.xr.scenecore:scenecore-*:1.0.0-beta02". Версия 1.0.0-beta02 содержит эти коммиты.
Исправление ошибок
toMoveEvent()возвращаетnull, если родительский объект был удален сборщиком мусора. (Ia7a1b)
Версия 1.0.0-beta01
15 июля 2026 г.
Выпущены данные "androidx.xr.scenecore:scenecore-*:1.0.0-beta01". Версия 1.0.0-beta01 содержит эти коммиты.
Изменения в API
- API
GltfAnimationиSpatialGltfModelAnimationпомечены как экспериментальные. Некоторые свойства были преобразованы в геттеры. (I8d689, b/524771027) - Удален общедоступный фабричный метод
MovableComponent.createTrackingMovable. (I00912, b/477169015) - Функция Session.create преобразована в функцию приостановки. (I5d27f)
ActivitySpaceиAnchorSpaceтеперь расширяют общий классSpaceEntity, который содержит общее поведение для объектов, чьи позиции контролируются системой (I506ec, b/513619219).AnchorEntityпереименован вAnchorSpace(Ifa95e, b/513619219).- Предоставляет общедоступный тестовый API
SoundEffectPoolComponentTester. (I87df7, b/498104417) - В конструктор
SurfaceEntity.Shape.Quadдобавлен необязательный параметрcornerRadius, а свойствоcornerRadiusсделано общедоступным. Теперь разработчики могут указывать радиус угла при создании четырехугольника, чтобы отображать холстыSurfaceEntityсо скругленными углами, а также запрашивать радиус существующих четырехугольников. (Ia7809, b/474681085) - Предоставляет общедоступные тестовые перегрузки API
SpatialAudioTrackBuilderTester,SpatialAudioTrackTesterиSceneCoreTestRule.getTester. (I378c6, b/496333938) - Добавьте специализированные переопределения
toString()для ряда типов ARCore. Эти типы предназначены для предоставления разработчикам дополнительной информации в целях отладки и не должны использоваться в рабочей среде или поставляемых приложениях.
Версия 1.0.0-alpha16
17 июня 2026 г.
Выпущены данные "androidx.xr.scenecore:scenecore-*:1.0.0-alpha16". Версия 1.0.0-alpha16 содержит эти коммиты.
Изменения в API
- Добавлены перегрузки для
addVertexData,setIndexDataиaddSubsetвCustomMesh.BuilderFromMeshDataиCustomMesh.BuilderFromMeshBuffer. Эти перегрузки позволяют разработчикам передавать необработанные данные и параметры напрямую (например,ByteBuffer,offset,size,topology,indexOffset,indexCount), не упаковывая их в промежуточные объекты, такие какByteBufferRegionилиMeshSubset. (I84d5c) Scene.requestFullSpaceMode()иScene.requestHomeSpaceMode()переименованы вrequestFullSpace()иrequestHomeSpace()соответственно. Другие методы и документация, в которых упоминаются стандартный режим и режим полного пространства, были обновлены аналогичным образом. (I45751)- Добавлены общедоступные тестовые API
PanelEntityTesterиMainPanelEntityTester(I961e4). - Добавление свойства
pointSourceParamsвSoundEffectPoolComponent(I4a750) - Добавлен общедоступный тестовый API
MovableComponentTester(I0c972). - Добавлен общедоступный тестовый API
PointerCaptureComponentTester(Ic0d4f). - Добавлен общедоступный тестовый API
ActivityPanelEntityTester(I837c4). - Добавлен общедоступный тестовый API
ResizableComponentTester(I0a3a4). - Добавлен общедоступный тестовый API
BoundsComponentTester.(Iefd53). - Добавлен общедоступный тестовый API
SpatialMediaPlayerTester(Ia3e09). - Добавлен общедоступный тестовый API
SpatialEnvironmentTester(Icf60f). - Предоставляет общедоступные тестовые API
GltfModelTesterиSceneCoreTestRule.getGltfModelTester. (I33fcb) - Предоставляет общедоступный тестовый API
InteractableComponentTester. (Ia7096) - Предоставляет общедоступный тестовый API
SurfaceEntityTester. (Ic0740) - Предоставляет общедоступные тестовые API
GltfModelEntityTester,TestGltfModelNodeиTestGltfAnimation. (I72c4d) - Предоставляет общедоступные тестовые API
SceneTesterиSceneCoreTestRule.sceneTester. (Ib4ec5) - Предоставляет общедоступные тестовые API
PerceptionSpaceTesterиSceneCoreTestRule.perceptionSpaceTester. (Icf739) - Предоставляет общедоступный тестовый API
MeshEntityTester. (I63801) - Предоставляет общедоступные перегрузки тестовых API
ImageBasedLightingAssetTesterиSceneCoreTestRule.getTester. (I57ec4) - Добавлен общедоступный тестовый API
TextureTester(Ia865b). - Добавлен общедоступный тестовый API
PositionalAudioComponentTester(Icd96e). - Добавлен общедоступный тестовый API
SpatialSoundPoolTester(Ia3531). - Добавлен общедоступный тестовый API
SoundEffectPoolTester(If349a). - Предоставляет общедоступные тестовые API
ActivitySpaceTesterиSceneCoreTestRule.activitySpaceTester. (I2d5c2) - Добавлен общедоступный тестовый API
SpatialWindowTester(I41837). - Добавлен общедоступный тестовый API
AnchorEntityTester(I68404). - Предоставляет общедоступный интерфейс тестового API
SceneCoreTestRule. (Ic72d3) - Добавлен класс
PixelDensity, который доступен черезScene#virtualPixelDensity. Он позволяет получить аппаратное соотношение пикселей на метр для точного сопоставления физических размеров вActivitySpace. (I0e3ac) - Добавлены общедоступные API для создания и рендеринга пользовательских сеток. (I7ad2f)
- API
VertexLayoutбыл обновлен и теперь использует списокVertexBufferLayout, каждыйVertexBufferLayoutиз которых описывает атрибуты в одном буфере вершин. Это позволяет более гибко упорядочивать данные вершин, включая чередующиеся атрибуты с настраиваемыми шагами и смещениями. (Ic426b) - Предоставляет
MovableComponent.createTrackingMovableдля преобразования отслеживаемого объекта ARCore в позу относительно пространства активности. (I12249) - Значение по умолчанию для родительского элемента в
Entity.createизменено на null. (Ic3145) Entityтеперь является классом, а не интерфейсом, и базовым классом для всех типов Entity. В результате этого измененияBaseEntityбыл удален. (I7fbc9)GltfModel,ExrImageиImageBasedLightingAssetтеперь реализуютAutoCloseable, чтобы обеспечить идиоматическое управление ресурсами с помощью блокаuseKotlin. (I1ac79)- Добавлен класс
ImageBasedLightingAsset, который заменяетExrImageдля определения пространственного освещения.ExrImageбольше не поддерживается и удален из общедоступного API. ВместоSpatialEnvironmentPreferenceтеперь используетсяImageBasedLightingAsset. (I6c92a) - Параметр
skyboxвSpatialEnvironmentпереименован вimageBasedLightingAsset, чтобы лучше отражать его назначение. Уточнено, что текстуры скайбокса должны быть включены в параметр геометрии. (I24d4a) - Пространственные объекты теперь используют стабильную плотность устройства для вычислений пикселей на метр на уровнях Spatial API 1 и 2, обеспечивая согласованный размер независимо от изменений плотности системного дисплея. (I37051)
Версия 1.0.0-alpha15
19 мая 2026 г.
Выпущены данные "androidx.xr.scenecore:scenecore-*:1.0.0-alpha15". Версия 1.0.0-alpha15 содержит эти коммиты.
Изменения в API
Entity.dispose()больше не является общедоступным API. Вместо вызоваdispose()для экземпляров Entity приложения могут сделать экземпляры очищаемыми, установив дляparentзначениеnullи очистив все строгие ссылки на эти экземпляры. (I396c9)- Удалены методы
set/clearOnLoadCompleteListenerклассаSoundEffectPool. Используйте вместо негоadd/removeLoadCompleteListener. (Iae78d) - Значение в столбце "
set/clearSpatialVisibilityChangedListener" заменено на "add/removeSpatialVisibilityChangedListener". (I67dff) - Все методы SceneCore
add/removeOnFooListenerпереименованы вadd/removeFooListener(из названия удаленоOn). (Ibe50b) - Методы
AnchorEntity.setOnOriginChangedListenerиAnchorEntity.setOnStateChangedListenerзаменены методамиadd/removeFooListener, чтобы поддерживать несколько слушателей одновременно. (I13749) - Название "
AnchorEntity.State.TIMEDOUT" изменено на "State.TIMED_OUT". (Id2b8d) - Мы провели рефакторинг Component API, чтобы повысить безопасность и расширяемость.
Componentтеперь является абстрактным классом. МетодыonAttach()иonDetach()теперь являютсяprotected, чтобы предотвратить прямые вызовы. Для управления жизненными циклами компонентов используйтеEntity.addComponent()иEntity.removeComponent(). (Id04e8) - Константы
PlaneSemanticTypePlaneOrientationв SceneCore перенесены из Ints в пользовательские типы. КонстантыANYбудут удалены. Клиентам следует явно перечислить все нужные константы или использовать новые неизменяемые константы Set.ALL. Теперь фабричный методAnchorEntityпринимает набор этих типов, а не одно значение. (Ib1033) - В экспериментальный Custom Mesh API добавлена поддержка скелетной анимации (скиннинга). Теперь разработчики могут анимировать пользовательские сетки, указывая
boneCountпри созданииMeshEntityи обновляя анимацию в реальном времени с помощьюMeshEntity.setBoneTransforms(). (Id8ba2, b/496692490) - Добавлен экспериментальный API
CustomMesh. Теперь разработчики могут программно создавать и отрисовывать 3D-геометрию в своих сценах с помощьюCustomMesh,MeshBufferиMeshEntity. (I94617) - Контакт (
androidx.xr.scenecore.SpatializerConstants.SourceType.SOURCE_TYPE_SOUND_FIELD) удален. Используйте вместо негоSourceType.SOUND_FIELD. (Ia68b9) - Добавление компонентов пространственного звучания:
PositionalAudioComponent,SoundEffectPoolComponentиSoundFieldAudioComponent(Ieda89) - Функция
AnchorEntity.getAnchorзаменена наAnchorEntity.anchorи теперь возвращаетAnchor, еслиAnchorEntityсоздан изAnchorARCore (I5c7c8). - Значение по умолчанию для параметра
parentв фабричных методахActivityPanelEntity,GltfModelEntity,GroupEntity,PanelEntityиSurfaceEntityизменено сActivitySpaceнаnull. Чтобы прикрепить объект к графу сцены и сделать его видимым, разработчики теперь должны явно задать его родительский объект во время создания экземпляра или с помощьюEntity.parent = ...(Ie7cc1).
Исправление ошибок
SceneCoreтеперь автоматически возвращает экземплярыEntity, когда они становятся фантомно достижимыми. Разработчикам больше не нужно явно вызыватьdispose(), чтобы освободить ресурсы. Чтобы обеспечить правильное освобождение экземпляра [Entity], разработчикам следует:- Отсоедините его от графа сцены, установив для
parentзначениеnull. - Удалить из кода все строгие ссылки на экземпляр.
- Примечание об особых типах объектов. Для объектов, которые не могут быть родительскими (например,
AnchorEntity), разработчики должны поддерживать строгую ссылку, пока экземпляр используется. Если все ссылки будут удалены, эти экземпляры станут фантомно достижимыми и будут автоматически удалены. (I83fe4)
- Отсоедините его от графа сцены, установив для
- Сужены правила сохранения Proguard для всех библиотек
SceneCore. (I98447)
Известные проблемы
- Если прикрепить
PositionalAudioComponentкEntityс неактивным экземпляромExoPlayer, произойдет сбой. Не вызывайтеsetPointSourceParamsи не подключайте/отключайте компоненты пространственного звучания, когда ExoPlayer остановлен. В следующей версии проблема будет устранена.
Версия 1.0.0-alpha14
6 мая 2026 г.
Выпущены данные "androidx.xr.scenecore:scenecore-*:1.0.0-alpha14". Версия 1.0.0-alpha14 содержит эти коммиты.
Изменения в API
- Типы
TrackingStateиVpsAvailabilityResultперенесены вandroidx.xr.arcore package, а типы вandroidx.xr.runtimeтеперь не поддерживаются. (Ic7930, b/480462213) - Название "
Plane.Type" изменено на "PlaneType". (I8c90c, b/482675376) - Название "
Plane.Label" изменено на "PlaneLabel". (Ic6b67, b/482675376) - Поддержка
androidx.xr.runtime.FieldOfViewпрекращена. Используйте вместо негоandroidx.xr.runtime.math.FieldOfView. (Ia01a0, b/480233045) - Сервисный аккаунт
Matrix4.poseпереименован. Новое название:Matrix4.toPose(). Свойство pose больше не поддерживается. (I329b4, b/493383490) - Переименованы значения перечисления
HandJointType. (Ifbc83, b/482670596) - Сделайте
Component.onAttachиonDetachобщедоступными API, чтобы разрешить пользовательские реализацииComponent. (I0ca1f) - Добавлены компоненты пространственного звучания (I39ddd, b/489421980, b/436642086, b/436642499).
- Удалить объект из
PointSourceParams. Вместо этого Entity будет использоваться напрямую сSpatialAudioTrack,SpatialSoundPoolиSpatialMediaPlayer(Ib3685, b/489421980, b/436634048). DeviceTrackingMode.LAST_KNOWNпереименован вSPATIAL_LAST_KNOWN(с устаревшим резервным вариантом), добавленINERTIAL_LAST_KNOWNдля отслеживания 3DoF, а также добавленTRACKING_DEGRADEDвTrackingState. (Ie661c, b/445466590)- Прекращена поддержка функции
GroupEntity. Чтобы получить объект только с базовыми функциями, вызовитеEntity.create, который вернет интерфейс объекта. (I4c450, b/473867483) - Добавлен
XrLogAPI. Чтобы включить ведение журнала в JetpackXR, задайте дляXrLog.isEnabledзначениеtrue, а для настройки уровня ведения журнала используйтеXrLog.Level. (I76a1f, b/463460895, b/487378441)
Исправление ошибок
Scene.keyEntityтеперь по умолчаниюmainPanelEntity. (I6a3ef)
Версия 1.0.0-alpha13
25 марта 2026 г.
Выпущены данные "androidx.xr.scenecore:scenecore-*:1.0.0-alpha13". Версия 1.0.0-alpha13 содержит эти коммиты.
Изменения в API
- Из
Session.createудален флагunscaledGravityAlignedActivitySpace.ActivitySpaceтеперь всегда не масштабируется и выравнивается по гравитации. (If6f11, b/458173423) - Из
GltfModelEntityудалены устаревшие функцииsetMaterialOverrideиclearMaterialOverride, которые теперь вызываются для отдельныхGltfModelNode. (I2e5d2) - В
PanelEntityдобавлены методыtransformPixelCoordinatesToLocalPositionиtransformNormalizedCoordinatesToLocalPosition. Удалены эквивалентные экспериментальные методы, которые возвращали позы вместо позицийVector3. (Ib6960, b/460123106, b/458333591) - Добавлены API
GltfAnimationдля управления анимацией glTF вSceneCore. (I2c172, b/466065486, b/465819070, b/465818617) ScenePose.activitySpacePoseпереименован вScenePose.poseInActivitySpace(I8f175, b/427822261).- Добавлена реализация Scenecore Projected Runtime (I9c4ab, b/476440158).
- При изменении размера объекта на главной панели он может переместиться в начало координат
ActivitySpace. Единственный способ решения проблемы – вручную или программно вернуть панель в исходное положение. Эта ошибка будет исправлена в одном из следующих выпусков. (b/489427007). - В некоторых случаях кнопка
MovableComponentможет не показываться дляSurfaceEntityи других типов объектов, не относящихся к панели. Если явно задатьMovableComponent.size, то появится подсказка. Эта ошибка будет исправлена в одном из следующих выпусков (b/490983469).
Версия 1.0.0-alpha12
25 февраля 2026 г.
Выпущены данные "androidx.xr.scenecore:scenecore-*:1.0.0-alpha12". Версия 1.0.0-alpha12 содержит эти коммиты.
Известные проблемы
- Закрепленные объекты могут перемещаться из закрепленного положения в начало пространства активности через несколько секунд.
- При создании экземпляров
SurfaceEntityможет произойти сбой в работе приложений. Проблема устранена в версииandroidx.xr.scenecore:scenecore-*:1.0.0-alpha13и последующих выпусках. Обновите затронутые приложения до последних версий.
Изменения в API
ActivitySpace.addOnSpaceUpdatedListenerиActivitySpace.removeOnSpaceUpdatedListenerпереименованы вaddOnOriginChangedListenerиremoveOnOriginChangedListener. ВместоAnchorEntity.setOnSpaceUpdatedListenerтеперь используетсяsetOnOriginChangedListener. (I5d8fb)- В
FakeEntityдобавлено свойство общедоступного названия, аFakePanelEntityсделано общедоступным. (Ifa1f9)
Исправление ошибок
- Исправлены расчеты плотности пикселей в новых образах системы (I57d04).
Версия 1.0.0-alpha11
28 января 2026 г.
Выпущены данные "androidx.xr.scenecore:scenecore-*:1.0.0-alpha11". Версия 1.0.0-alpha11 содержит эти коммиты.
Изменения в API
PerceivedResolutionResult.InvalidCameraViewпереименован вPerceivedResolutionResult.InvalidRenderViewpoint, так как APIgetPerceivedResolutionтеперь используют APIRenderViewpointARCore вместоCameraViewScenePose. Это название лучше отражает новую реализацию. (I8c967, b/446989745, b/419311998)- Методы
PanelEntity/SurfaceEntity.getPerceivedResolutionтеперь принимают в качестве аргументаRenderViewpoint, предоставленный разработчиком. Раньше среда выполнения произвольно выбиралаRenderViewpoint, используемый при расчете воспринимаемого разрешения. (I8c967, b/446989745, b/419311998) - Удалены:
SpatialUser,ScenePose.HeadиScenePose.CameraView. Функциональность этих API охватывается APIArDeviceиRenderViewpointв ARCore для Jetpack XR. Чтобы получитьScenePose, соответствующий голове или левому или правому глазу пользователя, разработчики могут использоватьPerceptionSpace.getScenePoseFromPerceptionPoseс соответствующей позой, полученной с помощью API ARCore. (I2f69c, b/446989745)
Версия 1.0.0-alpha10
3 декабря 2025 г.
Выпущены данные "androidx.xr.scenecore:scenecore-*:1.0.0-alpha10". Версия 1.0.0-alpha10 содержит эти коммиты.
Изменения в API
- Добавлены
transformPixelCoordinatesToPoseиtransformNormalizedCoordinatesToPoseвPanelEntity(I462b3) - Добавлен вспомогательный класс Utils в среду выполнения
SceneCoreна основе логики вSceneCore(I570b9).
Исправление ошибок
- Исправлена ошибка, из-за которой мог происходить сбой, когда сеанс уничтожался и получался
SpatialModeChangeEvent(If44e8). - Исправлена ошибка, из-за которой при выходе из Activity или повторном входе в нее могло возникать исключение
IllegalStateException. (Ibff1c)
Версия 1.0.0-alpha09
19 ноября 2025 г.
Выпущены данные "androidx.xr.scenecore:scenecore-*:1.0.0-alpha09". Версия 1.0.0-alpha09 содержит эти коммиты.
Новые функции
- Добавляет API для получения
ScenePose, который представляет собой композицию исходного положения пространства восприятия и положения относительно исходного положения пространства восприятия. (I5b50a) - Добавлена функция
getGravityAlignedPose. Поза, выровненная по силе тяжести, игнорирует тангаж и крен вращения. (I5ae21) - Типы констант
AnchorEntity.Stateизменены с Ints на подтипы State. (Ib0c49) - В интерфейс Entity добавлено свойство
getChildren(). Обновлен жизненный циклMainPanelEntity. (Ia69d6)
Изменения в API
- Типы констант
PointerCaptureComponent.PointerCaptureStateизменены с Ints на подтипыPointerCaptureState. (Ic888a) Scene.spatialCapabilitiesтеперь имеет типSet<SpatialCapability>вместо поля Int. КонстантыSpatialCapabilityбыли переименованы. (I9c109)- Типы констант
SurfaceEntityпереименованы и изменены с Ints на подтипыSurfaceEntity. (I419ed) - Типы констант
SpatializerConstantпереименованы и изменены с Ints на подтипыSpatializerConstant. (Ia0e18) - Типы констант
TextureSamplerпереименованы и изменены с Ints на подтипыTextureSampler. (I44078) - Типы констант
SpatialVisibilityизменены с Ints на подтипыSpatialVisibility. (I70739) - Типы констант
ResizeEvent.ResizeStateпереименованы и изменены с Ints на подтипыResizeState. (I384d5) - Типы констант
InputEventпереименованы и изменены с Ints на наследуемые от соответствующего включающего типа. (I82817) - Типы констант
GltfModelEntity.AnimationStateизменены с Ints на подтипыAnimationState. (I24f4e) - Типы констант
AlphaModeпереименованы и изменены с Ints на подтипыAlphaMode. (I27b56) - Типы констант
Spaceизменены с Ints на подтипы Space. (I9255b) ScenePose.hitTestи связанные методы теперь возвращаютnull, если пересечение не найдено, вместоHitTestResultс нулевымhitPosition.HitTestResult.hitPositionбольше не может иметь значение NULL. (I1400a)- Упоминания
ActivityPoseзаменены наScenePose. (I7fe43)
Версия 1.0.0-alpha08
22 октября 2025 г.
Выпущены данные "androidx.xr.scenecore:scenecore-*:1.0.0-alpha08". Версия 1.0.0-alpha08 содержит эти коммиты.
Изменения в API
ActivityPanelEntity.moveActivityпереименован вtransferActivity(I273c5, b/430332856).
Исправление ошибок
:xr:scenecore:scenecore-spatial-renderingи:xr:scenecore:scenecore-spatial-coreдобавлены как зависимости реализации:xr:scenecore:scenecore(I6ab65, b/447000520).- Если обратиться к
session.sceneпосле завершения сеанса, возникнет исключение. (I77e6f)
Версия 1.0.0-alpha07
24 сентября 2025 г.
Выпущены androidx.xr.scenecore:scenecore:1.0.0-alpha07, androidx.xr.scenecore:scenecore-guava:1.0.0-alpha07 и androidx.xr.scenecore:scenecore-testing:1.0.0-alpha07. Версия 1.0.0-alpha07 содержит эти коммиты.
Изменения в API
- Свойство
fixedAspectRatioпереименовано вisFixedAspectRatioEnabledи стало логическим (I5c4e8, b/440588971). ScenecoreИмитации теперь находятся в модулеxr:scenecore:scenecore-testing. (Idd951)- Переименованы
shouldAutoHideContentвisAutoHideContentWhileResizingEnabledиshouldAlwaysShowOverlayвisAlwaysShowOverlayEnabled(I97c36, b/432335421). - Обновлены константы
SceneCoreTextureSamplerдля удобства чтения, напримерTextureSampler.MinFilter.LINEARтеперьTextureSampler.MIN_FILTER_LINEAR(Ib159c). - Сеттер
setKeyEntityсцены объединен с переменнойkeyEntity. Если задать дляkeyEntityобъект, который нельзя переместить, напримерAnchorEntity, будет возвращена ошибкаIllegalArgumentException, а не логическое значение false. (I62080, b/428721695, b/422215745) - Переменная
SpatialModeChangeListenerсцены заменена наsetSpatialModeChangedListener. Она принимаетConsumer<SpatialModeChangeEvent>вместоSpatialModeChangedListener. ТеперьsetSpatialModeChangedListenerможет принимать Executor. (I62080, b/428721695, b/422215745) - Удален параметр
bundleизActivityPanelEntity.startActivity(I64344, b/430332856, b/430333040). - Название "
SpatializerConstants.SOURCE_TYPE_BYPASS" изменено на "SpatializerConstants.SOURCE_TYPE_DEFAULT". (Ifc7fe, b/422215565) - Добавлена константа
SpatialSoundPool.PLAY_FAILED. (Ifc7fe, b/422215565) - В методы
SpatialSoundPool.playдобавлены аргументы по умолчанию. (Ifc7fe, b/422215565) - Удалено возвращаемое значение сеттеров в
SpatialAudioTrackBuilder. (Ifc7fe, b/422215565) - Изменения в SurfaceEntity
- Пользователь
SurfaceEntity.CanvasShapeпереименовал файл "Shape" - Пользователь
SurfaceEntity.CanvasShape.Vr180Hemisphereпереименовал файл "Hemisphere" - Пользователь
SurfaceEntity.CanvasShape.Vr360Sphereпереименовал файл "Sphere" - Пользователь
SurfaceEntity.EdgeFeatheringParams.SmoothFeatherпереименовал файл "RectangleFeather" - Пользователь
SurfaceEntity.EdgeFeathingParams.SolidEdgeпереименовал файл "NoFeathering" - Пользователь
SurfaceEntity.ContentSecurityLevelпереименовал файл "SurfaceProtection" - Пользователь
SurfaceEntity.ContentSecurityLevel.{values}добавил префиксSURFACE_PROTECTION_. - Пользователь
SurfaceEntity.SuperSampling.{$values}добавил префиксSUPER_SAMPLING_. - Пользователь
SurfaceEntity.StereoMode.{values}добавил префиксSTEREO_MODE_. SurfaceEntity.ContentColorMetadata.maxCLLпереименован вmaxContentLightLevel(I7eb5f, b/422216050, b/427529950).
- Пользователь
launchActivityпереименован вstartActivity(I7db90, b/430332856).- Контакт (
Scene.activitySpaceRoot) удален. Используйте вместо негоScene.activitySpace. (I05ee8, b/378706624, b/422215745) configureBundleForFullSpaceModeLaunchиconfigureBundleForFullSpaceModeLaunchWithEnvironmentInheritedпереименованы вcreateBundleForFullSpaceModeLaunchиcreateBundleForFullSpaceModeLaunchWithEnvironmentInheritedсоответственно, перемещены в файл LaunchUtils.kt как методы верхнего уровня и принимают Session в качестве первого параметра (I64a2c, b/437186050).- Фабрика
GroupEntityтеперь возвращает типGroupEntityвместо Entity. (I66042)
Исправление ошибок
- Выдавать ошибку
IllegalStateException, если экземпляр объекта используется после удаления. (I90990, b/427314036, b/432063442)
Версия 1.0.0-alpha06
13 августа 2025 г.
Выпущены androidx.xr.scenecore:scenecore:1.0.0-alpha06, androidx.xr.scenecore:scenecore-guava:1.0.0-alpha06 и androidx.xr.scenecore:scenecore-testing:1.0.0-alpha06. Версия 1.0.0-alpha06 содержит эти коммиты.
Изменения в API
- Снятие ограничений с API
BaseEntityиBaseScenePoseдляSceneCore(88c0ff6)
Версия 1.0.0-alpha05
30 июля 2025 г.
Выпущены androidx.xr.scenecore:scenecore-guava:1.0.0-alpha05, androidx.xr.scenecore:scenecore-testing:1.0.0-alpha05 и androidx.xr.scenecore:scenecore:1.0.0-alpha05. Версия 1.0.0-alpha05 содержит эти коммиты.
Новые функции
- В Panel Entities и
SurfaceEntitiesдобавлен Perceived Resolution API. (I118f6) PerceivedResolutionВ Scene.kt добавлены методы обратного вызова, позволяющие отслеживать воспринимаемое разрешение основной панели действия в HSM. (I58084)SurfaceEntity– добавлена поддержка приложения для запроса суперсемплинга во время создания. Это позволяет приложениям использовать фильтр суперсемплинга для сглаживания. (I06913)- В
ActivitySpaceдобавлено свойствоrecommendedContentBoxInFullSpace. Она возвращает рекомендуемую область для размещения контента в режиме полного пространства. (I4cd6f) - Добавлен перегруженный конструктор для модификатора перемещения, который позволяет выполнять привязку. (Ic0c70)
Изменения в API
В этом выпуске в SceneCore были внесены значительные изменения API. Некоторые классы были переименованы и/или перемещены в другие модули, а большинство методов получения и установки были заменены свойствами Kotlin. До выпуска первой бета-версии мы планируем внести в API ещё несколько изменений, но они не будут такими масштабными.
- Переименованы и/или перемещены следующие классы и интерфейсы:
androidx.xr.scenecore.PixelDimensionsвandroidx.xr.runtime.math.IntSize2d;androidx.xr.scenecore.Dimensionsвandroidx.xr.runtime.math.FloatSize3d;androidx.xr.scenecore.ActivityPoseвScenePose,androidx.xr.scenecore.ContentlessEntityвGroupEntity,androidx.xr.scenecore.PlaneTypeвPlaneOrientation;androidx.xr.scenecore.PlaneSemanticвPlaneSemanticType. (Ifd405)(I3b622) (If534d) - Ряд методов задания свойств
Sceneстали закрытыми, поскольку они не предназначены для изменения клиентамиSceneCore:activitySpace,activitySpaceRoot,mainPanelEntity,perceptionSpace,spatialCapabilities,spatialEnvironmentиspatialUser. (I2f506) - В Entity: изменены свойства
get/setParent()иsetContentDescription; прекращена поддержка свойстваEntity.is/setHidden(), вместо него используйтеEntity.is/setEnabled. (Ibc4c6) - Удален класс
androidx.xr.scenecore.BasePanelEntity. Вместо него используйтеPanelEntity. Методы получения и установки дляPanelEntityзаменены свойствами. СвойствоPanelEntity.sizeизменено сFloat3dSizeнаFloat2dSize. Удален устаревший методandroidx.xr.scenecore.PanelEntity.getPixelDimensions. Вместо него используйтеgetSizeInPixels. (Icc174) - Значение в ячейке
androidx.xr.scenecore.OnSpaceUpdatedListenerзаменено на "Runnable". (I19308) - Значение в ячейке
SpatialUser.getCameraViews()заменено на свойство. (Ib0cc5) ДляExrImageиGltfModel:методыcreateизменены на функции приостановки. Параметры создания изменены так, чтобы приниматьUriилиPathвместоString. (Id8883) (I0d247), (I25706) SpatialEnvironment.requestFullSpaceModeиSpatialEnvironment.requestHomeSpaceModeперенесены в Scene. Например, используйтеsession.scene.requestFullSpaceMode()вместоsession.scene.spatialEnvironment.requestFullSpaceMode(). ВaddOnPassthroughOpacityChangedListenerиaddOnSpatialEnvironmentChangedListenerтеперь есть переопределения, которые принимают необязательные исполнители. (I12fe0) (I6b21e)- Удалены следующие устаревшие методы
SpatialEnvironment:togglePassthrough,setPassthrough,setPassthroughOpacity,getPassthroughMode,getPassthroughOpacity,setSkyboxиsetGeometry. Также удален устаревший классSpatialEnvironment.PassthroughMode(I927bd) (I927bd) (I927bd). - Следующие методы получения и установки
SpatialEnvironmentзаменены свойствами Kotlin:getCurrentPassthroughOpacity(),get/setPassthroughOpacityPreference(),get/setSpatialEnvironmentPreference(),isSpatialEnvironmentPreferenceActive()(I33a7b) (Ie06e2) (Ie06e2). - Тип
SpatialEnvironmentPreference.preferredPassthroughOpacityизменен сFloat?наFloat. Оно больше не принимает нулевые значения. Вместо этогоSpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCEиспользуется, чтобы указать, что предпочтений по прозрачности нет. (I40107) - В методе create параметр
windowBoundsPxизменен наpixelDimensions, а его тип – с Rect наIntSize2d. (I1926e) - Конструктор
SpatialEnvironmentтеперь является внутренним (I75a51). - Классы
SpatialPointerIconNoneиSpatialPointerIconCircleзаменены объектами-компаньонамиSpatialPointerIcon.NONEиSpatialPointerIcon.CIRCLE(I416d2). - Поле
SpatialPointerIconв таблицеSpatialPointerComponentбольше не может иметь значение NULL. ИспользуйтеSpatialPointerIcon.DEFAULTвместо null, чтобы указать, что должен использоваться значок указателя, заданный в системных настройках по умолчанию. (I416d2) - Свойство
androidx.xr.scenecore.AnchorEntity.getState()заменено на свойство, доступное только для чтения. Переименованы параметры методаAnchorEntity.create()во избежание неясности. В методахAnchorEntityдля настройки и добавления прослушивателей прослушиватель был перемещен в последний аргумент, чтобы включить завершающие лямбда-выражения.androidx.xr.scenecore.OnStateChangedListenerзаменено наConsumer<AnchorEntity.State>дляAnchorEntity. (I472e0) GltfModelEntity.getAnimationState()теперь является ресурсом. (I10b29)- Значение
ActivitySpace.getBounds()заменено на свойство. Название "ActivitySpace.addBoundsChangedListener" изменено на "ActivitySpace.addOnBoundsChangedListener". МетодActivitySpace.setOnSpaceUpdatedListenerзаменен методами добавления и удаления. (I4c956) AnchorPlacement: planeTypeFilterпереименован вanchorablePlaneOrientations,planeSemanticFilter– вanchorablePlaneSemanticTypes. ДобавлениеMovableComponentвAnchorEntityилиActivitySpaceвернет значение false,MoveListenerпереименовано вEntityMoveListener shouldDisposeParentAnchor, переименовано вdisposeParentOnReAnchor systemMovable, удалено из функцииcreateв пользуcreeateCustomMovable,createSystemMovableиcreateAnchorable(If11c4)- Удален класс
SurfaceEntity.featherRadiusX/Yи добавлен классEdgeFeatheringParams. (Ic78fc) - Метод
PanelEntity.enablePanelDepthTest()заменен свойствомpanelClippingConfig. Установите значениеScene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true), чтобы включить проверку глубины, илиPanelClippingConfig(isDepthTestEnabled = false), чтобы отключить ее. (I0cbe0) Scene.mainPanelEntityтеперь имеет типMainPanelEntityвместоPanelEntity(I7125a)- Метод
setFullSpaceModeкласса Scene переименован вconfigureBundleForFullSpaceModeLaunch, а методsetFullSpaceModeWithEnvironmentInherited– вconfigureBundleForFullSpaceModeLaunchWithEnvironmentInherited. (I0cbe0) (I0cbe0) - Значения UNKNOWN, OUTSIDE_FOV, PARTIALLY_WITHIN_FOV и WITHIN_FOV в
SpatialVisibilityпереименованы в SPATIAL_VISIBILITY_UNKNOWN, SPATIAL_VISIBILITY_OUTSIDE_FIELD_OF_VIEW, SPATIAL_VISIBILITY_PARTIALLY_WITHIN_FIELD_OF_VIEW и SPATIAL_VISIBILITY_WITHIN_FIELD_OF_VIEW соответственно (Ie7e8c). - Класс
SpatialVisibilityзаменен общедоступным объектом с постоянными целочисленными значениями.setSpatialVisibilityChangedListenerтеперь принимаетConsumer<Int>вместоConsumer<SpatialVisibility>(Ie7e8c). - Константы
PointerCaptureComponentпереименованы и перемещены в объектPointerCaptureComponent.PointerCaptureState(I9c7ac). - Значение в ячейке
PointerCaptureComponents' StateListenerзаменено на "Consumer<Int>". (I9c7ac) InputEventListenerзаменено наConsumer<InputEvent>(I9c7ac)setPreferredAspectRatioперемещен из класса Scene в объектSpatialWindowи принимает Session в качестве первого параметра. (I7b717)Entity.setHidden()заменено наEntity.setEnabled(), аEntity.isHidden()– наEntity.isEnabled().setHidden(false)равноsetEnabled(true)иisHidden() == !isEnabled(). (Icf0de)- Тип
Entity.contentDescriptionизменен со строки наCharSequence. (Ie59be) - Теперь
Session.createиSession.configureвызываютSecurityException, если не предоставлены достаточные разрешения, вместо того чтобы возвращатьSessionCreatePermissionsNotGrantedилиSessionConfigurePermissionsNotGranted. (I7c488) ResizableComponent.createтеперь требуетConsumer<ResizeEvent> ResizeEventListener, заменен наConsumer<ResizeEvent> ResizableComponent.size, переименован вResizableComponent.affordanceSize ResizableComponent.minimumSize, переименован вResizableComponent.minimumEntitySize ResizableComponent.maximumSize, переименован вResizableComponent.maximumEntitySize,ResizableComponent.autoHideContentпереименован вResizableComponent.shouldAutoHideContent,ResizableComponent.forceShowResizeOverlayпереименован вResizableComponent.shouldAlwaysShowOverlay(I97a2d)- Значение параметра "
minSDK" уменьшено до 24 дляandroidx.xr.scenecoreиandroidx.xr.compose. Для пакетов XR по-прежнему требуется API 34 во время выполнения. (I17224) - Удалено ограничение
RequiresApi(34)для всех пакетов Jetpack XR. Это ограничение было избыточным, поскольку Jetpack XR сейчас доступен только на устройствах с уровнем API 34 и выше (Iae0f8). - Основной артефакт
SceneCore(xr:scenecore:scenecore) будет содержать только асинхронные API в стиле Kotlin. Разработчики Java могут использовать библиотекуxr:scenecore:scenecore-guavaдля доступа к совместимым API. (If221b) - Для проектов, выпущенных с Kotlin 2.0, требуется KGP 2.0.0 или более поздней версии (Idb6b5).
- Теперь в этой библиотеке используются аннотации JSpecify nullness, которые относятся к типу type-use. Разработчикам Kotlin следует использовать следующий аргумент компилятора, чтобы обеспечить правильное использование:
-Xjspecify-annotations=strict(это значение по умолчанию, начиная с версии 2.1.0 компилятора Kotlin) (Ia8420). - Все асинхронные методы, возвращающие
ListenableFuture, заменены функциями приостановки Kotlin. Разработчикам, которые пишут на Java и хотят использовать асинхронные методы на основеListenableFutureвместо функций приостановки Kotlin, теперь нужно использовать функции расширения в:xr:scenecore-scenecore-guava. Например,GuavaExrImageсодержит асинхронные функции ExrImage, эквивалентные Guava,GuavaScenePose– асинхронные функцииScenePose, эквивалентные Guava,GuavaGltfModel– асинхронные функцииGuava-equivalent GltfModelи т. д. (If7283) (I0af60) (If7283) (Ia8515) (I4efdf) (I54bbf) (I3467a) (I82a33)
Исправление ошибок
- Обновлено правило Jetpack XR Scenecore
ProGuard, чтобы предотвратитьAbstractMethodErrorдля минифицированных клиентов. (I91a01) - Дополнительные исправления для поддержки минификации Proguard в Jetpack XR
SceneCore(I4f47e). - Исправлена ошибка, из-за которой
InteractableComponentмог вызвать сбой, еслиhitPositionв HitInfoInputEventмог вызвать сбой, еслиhitPosition, возвращенный системой, был нулевым (I7a695). - Значения Config *Mode переименованы, чтобы лучше отражать их поведение. (I6d247)
- Исправлены проблемы с полем зрения и
HitTestв тестовом приложенииSceneCore. (I2c51e) - Исправлена ошибка в
SpatialCapabilities.hasCapability(), из-за которой возвращалось значение true, если любая из возможностей, переданных с побитовым ИЛИ, была истинной, а не только если все они были истинными. (I2cd40) SurfaceEntity.StereoMode.TOP_BOTTOM: верхняя карта теперь показывается левому глазу, а нижняя – правому. (I4ae68)
Версия 1.0.0-alpha04
7 мая 2025 г.
Данные "androidx.xr.scenecore:scenecore:1.0.0-alpha04" и "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha04" опубликованы. Версия 1.0.0-alpha04 содержит эти коммиты.
Новые функции
- Теперь возврат назад будет работать на объектах панели без встроенных действий. Чтобы обработка кнопки "Назад" работала, укажите
android:enableOnBackInvokedCallback= "true"в манифесте Android. StereoSurfaceEntityтеперь поддерживает воспроизведение MV-HEVC с помощью двух новых значенийStereoMode: MULTIVIEW_LEFT_PRIMARY и MULTIVIEW_RIGHT_PRIMARY.PanelEntity.setSizeиPanelEntity.getSizeтеперь возвращают размеры в родительском пространстве.Entity.setPose,Entity.getPose,Entity.setScale,Entity.getScale,Entity.setAlphaиEntity.getAlphaтеперь принимают новый параметрrelativeTo, который позволяет получать и задавать значения относительно разных пространств. Допустимые значения: Parent, Activity и Real World. По умолчанию используется значение Parent.- В
SessionExt.ktдобавлены методы расширения Spatial Visibility Callback, позволяющие отслеживать, когда контент сцены перемещается в зону обзора пользователя или за ее пределы. - В
SpatialAudioTrackдобавлен методsetPointSourceParams, позволяющий обновлять параметры после создания трека. - Добавлен новый класс Scene со ссылками на API
Scenecore. Сцена будет доступна как свойство расширения сеанса. Функции изSessionExtперенесены в Scene, поэтому импорт нужно скорректировать, напримерSessionExt.getScene(session).addSpatialCapababilitiesChangedListenerпротивSessionExt.addSpatialCapabilitiesChangedListener. - Добавлен параметр
ActivityPose.hitTestAsync, позволяющийhitTestдля виртуального контента. - Добавлен новый тип компонента
SpatialPointerComponent, позволяющий клиентам указывать значок, отображаемый для указателя, или отключать значок. Этот компонент сейчас можно прикрепить только к экземплярамPanelEntity. - Представляем новую фабрику
PanelEntity, которая принимает размеры панели в метрах или пикселях. Удалена старая фабрикаPanelEntity, принимающая два параметра типа Dimension для панели.
Изменения в API
- Удалено ограничение
RequiresApi(34)для всех пакетов Jetpack XR. Это ограничение было избыточным, поскольку Jetpack XR сейчас доступен только на устройствах с уровнем API 34 и выше (Iae0f8). - Для проектов, выпущенных с Kotlin 2.0, требуется KGP 2.0.0 или более поздней версии (Idb6b5).
- Удален класс
PermissionHelper. PanelEntity.getPixelDensityбольше не поддерживается.PanelEntity.setPixelDimensionsиPanelEntity.getPixelDimensionудалены и заменены наsetSizeInPixelsиgetSizeInPixels.- Выбор варианта "
Entity.getActivitySpaceAlpha" отменен. Можно заменить наEntity.getAlpha(Space.Activity). - Выбор варианта "
Entity.getWorldSpaceScale" отменен. Можно заменить наEntity.getScale(Space.REAL\_WORLD). - Класс Session в
SceneCoreбыл удален в пользу Session в XR Runtime. - Сервисный аккаунт
StereoSurfaceEntityпереименован. Новое название:SurfaceEntity. - Удалены методы
Entity.setSizeиEntity.getSize, а вPanelEntityдобавлены такие же методы. - Сервисный аккаунт
PointSourceAttributesпереименован. Новое название:PointSourceParams. - Сервисный аккаунт
SpatializerConstants.SOURCE\_TYPE\_BYPASSпереименован. Новое название:SpatializerConstants.SOURCE\_TYPE\_DEFAULT. PointSourceParamsобъект был изменен с общедоступного на внутренний.- Теперь для
AnchorEntity.createтребуется настроитьPlaneTrackingModeвSession.configure(). - Для API
SpatialUserтеперь требуется настроитьHeadTrackingModeвSession.configure(). - Если
ResizableComponentне подключен, в журнале будет указан уровень INFO, а не ERROR. - Теперь класс Fov – это обычный класс Kotlin.
- Разделите
Entity.kt, чтобы поместить каждый тип объекта в отдельный файл. - При создании нового
PanelEntityбольшинство представлений будут перенесены вFrameLayout. Это упрощает использованиеLayoutInspectorс пространственными панелями. - Используемый в настоящее время экземпляр
XrExtensionsтеперь зарегистрирован на платформе, чтобы помочь в отладке приложения.
Исправление ошибок
- Исправлена ошибка, которая могла приводить к сбою при перемещении
PanelEntityсMovableComponentиAnchorPlacement. - Исправлена ошибка, из-за которой
ResizableComponentпредоставлял устаревшие размеры в обратном вызовеonResizeStart. - Исправлена ошибка, возникающая при многократном вызове
dispose()изJxrPlatformAdapterAxr.
Версия 1.0.0-alpha03
26 февраля 2025 г.
Данные "androidx.xr.scenecore:scenecore:1.0.0-alpha03" и "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha03" опубликованы. Версия 1.0.0-alpha03 содержит эти коммиты.
Новые функции
- Минификация Proguard теперь поддерживается для кода Jetpack XR.
Исправление ошибок
- Дополнительные исправления для поддержки минификации Proguard в Jetpack XR SceneCore (I4f47e).
- Обновлено правило Jetpack XR Scenecore
ProGuard, чтобы предотвратитьAbstractMethodErrorдля минифицированных клиентов. (I91a01)
Версия 1.0.0-alpha02
12 февраля 2025 г.
Данные "androidx.xr.scenecore:scenecore:1.0.0-alpha02" и "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha02" опубликованы. Версия 1.0.0-alpha02 содержит эти коммиты.
Предстоящее критическое изменение, затрагивающее приложения, созданные до версии 1.0.0-alpha02
- Фабричные методы были перенесены из класса
Sessionв сопутствующий метод для каждого соответствующего типа:- Сервис "
Session.createActivityPanelEntity(Dimensions, String, Activity, Pose)" удален и заменен на "ActivityPanelEntity.create(Session, Dimensions, String, Pose)". - Сервис "
Session.createAnchorEntity(Anchor)" удален и заменен на "AnchorEntity.create(Session, Anchor)". - Сервис "
Session.createAnchorEntity(Dimensions, Int, Int, Duration)" удален и заменен на "AnchorEntity.create(Session, Dimensions, Int, Int, Duration)". - Сервис "
Session.createEntity(String, Pose)" удален и заменен на "ContentlessEntity.create(Session, String, Pose)". - Сервис "
Session.createExrImageResource(String)" удален и заменен на "ExrImage.create(Session, String)". - Сервис "
Session.createGltfEntity(GltfModel, Pose)" удален и заменен на "GltfModelEntity.create(Session, GltfModel, Pose)". - Сервис "
Session.createGltfModelResource(String)" удален и заменен на "GltfModel.create(Session, String)". - Сервис "
Session.createInteractableComponent(Executor, InputEventListener)" удален и заменен на "InteractableComponent.create(Session, Executor, InputEventListener)". Session.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean)удален и заменен наMovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean).Session.createPanelEntity(View, Dimensions, Dimensions, String, Pose)удален и заменен наPanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose).- Сервис "
Session.createResizableComponent(Dimensions, Dimensions)" удален и заменен на "ResizableComponent.create(Session, Dimensions, Dimensions)". - Сервис "
Session.createStereoSurfaceEntity(Int, Dimensions, Pose)" удален и заменен на "StereoSurface.create(Session, Int, Dimensions, Pose)".
- Сервис "
- Удалены следующие устаревшие методы:
Session.canEmbedActivityPanel(Activity): удалено. Используйте вместо негоgetSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY).Session.hasSpatialCapability(Int): удалено. Вместо него теперь используетсяgetSpatialCapabilities().hasCapability(), посколькуgetSpatialCapabilities()возвращает объектSpatialCapabilities.Session.requestFullSpaceMode()удален и заменен наSpatialEnvironment.requestFullSpaceMode().Session.requestHomeSpaceMode()удален и заменен наSpatialEnvironment.requestHomeSpaceMode().
Session.setFullSpaceMode(Bundle)иSession.setFullSpaceModeWithEnvironmentInherited(Bundle)перенесены в функции расширения. Чтобы получить доступ, разработчикам нужно будет добавить новые импорты:import androidx.xr.scenecore.setFullSpaceModeimport androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
Session.setPreferredAspectRatio(Activity, Float)теперь является функцией расширения. Чтобы получить доступ, разработчикам нужно будет добавить в файлы новый импорт:import androidx.xr.scenecore.setPreferredAspectRatio
Session.getEntitiesOfType(Class<out T>)иSession.getEntityForRtEntity(RtEntity)перенесены в функции расширения. Чтобы получить доступ, разработчикам нужно будет добавить новые импорты:import androidx.xr.scenecore.getEntitiesOfTypeimport androidx.xr.scenecore.getEntityForRtEntity
- Зона
Session.unpersistAnchor(Anchor)удалена. - Зона
Session.createPersistedAnchorEntity(UUID)удалена.
Известные проблемы
PanelEntity.setCornerRadius()иActivityPanelEntity.setCornerRadius()могут не вступить в силу, пока панель не будет перемещена. Чтобы этого избежать, переместите панель в ее текущее положение.- Когда
BoundsChangedвызывается вActivitySpace, некоторыеActivityPoseмогут быть обновлены неправильно. Оно будет обновлено во время следующего звонкаOnSpaceUpdatedActivitySpace.
Критические изменения и изменения в поведении
PanelEntityиActivityPanelEntityбудут иметь радиус закругления углов по умолчанию 32 dp или меньше, если ширина или высота панели меньше 32 dp.
Новые API и возможности
- Представлен API
StereoSurface.CanvasShape, который позволяет создавать холстыSphericalиHemisphericalдля отрисовки иммерсивного медиаконтента. StereoSurfaceEntity.create()теперь принимает параметрCanvasShape. (В настоящее время этот параметр игнорируется, но будет использоваться в будущих выпусках.)StereoSurfaceEntity.create()больше не принимает параметрDimensions. Размер холста должен задаваться в приложении с помощью свойстваCanvasShape.StereoSurfaceEntityимеет элементCanvasShape, который можно задать динамически.StereoSurfaceEntity.dimensionsтеперь является свойством только для чтения. Чтобы изменить размеры, приложения должны задатьCanvasShape.- Теперь
StereoSurfaceEntityпозволяет повторно задаватьStereoModeпосле создания.
Другие изменения
- Минимальная версия SDK во время компиляции снижена до 24. Для всех API Jetpack XR по-прежнему требуется API 34 во время выполнения.
- Фабрика сеансов
SceneCore(Session.create) больше не запускает намерение для получения разрешенияSCENE_UNDERSTANDING. Вместо этого клиентское приложение должно явно запросить разрешения у пользователя, прежде чем пытаться создать привязки. Если пользователь не предоставит разрешение, создать привязку не удастся.
Исправление ошибок
- Метод
getActivitySpacePose()теперь учитывает масштабActivitySpaceи возвращает значения в масштабированных метрах, а не в обычных. ТеперьtransformPoseToтакже использует правильные единицы измерения для вычисления изменений координат, когдаActivitySpaceзадействован в источнике или назначении. - Теперь, если с помощью
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom))передается нулевое значение, будет использоваться полностью черный скайбокс. Чтобы вернуться к системным настройкам по умолчанию для скайбокса и геометрии, используйтеsetSpatialEnvironmentPreference(null)..
Версия 1.0.0-alpha01
12 декабря 2024 г.
Выпущены данные "androidx.xr.scenecore:scenecore-* 1.0.0-alpha01".
Функции в первом выпуске Первый выпуск Jetpack SceneCore для разработчиков. Это библиотека графов 3D-сцен, которая позволяет создавать иммерсивные сцены и среды и управлять ими. Эта библиотека позволяет размещать и упорядочивать 3D-модели и панели контента относительно друг друга и виртуальной или реальной среды.
- SpatialEnvironment. Создавайте полностью иммерсивные среды с помощью скайбокса и/или геометрии 3D-модели в качестве фона для сцены расширенной реальности. Вы также можете включить сквозной режим, чтобы виртуальная сцена интегрировалась с реальным окружением пользователя.
- PanelEntity. Добавляйте 2D-контент в 3D-сцены, встраивая стандартные макеты и действия Android в пространственные панели, которые могут парить или быть привязаны к реальным поверхностям.
- GltfModelEntity. Размещайте 3D-модели в сцене, анимируйте их и взаимодействуйте с ними. SceneCore поддерживает формат файлов glTF для простоты интеграции с существующими моделями.
- SpatialAudio. Добавляйте в 3D-сцену фоновые и точечные источники звука, чтобы создать эффект полного погружения.
- StereoSurfaceEntity: SceneCore поддерживает маршрутизацию контента, отрисованного на Android Surface, для левого и правого глаза. Это позволяет показывать стереоскопический контент в формате "рядом" или "сверху вниз", например стереофотографии, 3D-видео или другие динамически отрисовываемые интерфейсы. Для декодирования видео в приложениях следует использовать MediaPlayer или ExoPlayer.
- Система компонентов. SceneCore предлагает надежную и гибкую систему компонентов для добавления возможностей в контент XR, включая возможности для пользователей перемещать, изменять размер и взаимодействовать с моделями и панелями.
- Закрепление. Если сквозной режим включен, вы можете прикреплять панели и модели к реальным поверхностям, обеспечивая пользователям тесную интеграцию виртуального контента в их реальной среде.
- Поза пользователя. Доступ к местоположению пользователя в виртуальной сцене, чтобы ориентировать контент вокруг его положения.
- SpatialCapabilities. Создавайте полностью адаптивные приложения, которые используют пространственные возможности, когда они доступны, например трехмерное позиционирование контента пользовательского интерфейса. Кроме того, приложение может отслеживать изменения возможностей во время работы и адаптироваться к тому, как пользователь взаимодействует с устройством Android XR.
Известные проблемы
- В настоящее время для использования Jetpack SceneCore требуется minSDK версии 30. Чтобы обойти эту проблему, добавьте в манифест запись
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>. Это позволит вам создавать и запускать приложения с minSDK 23. - Сеанс может стать недействительным в различных ситуациях, которые автоматически воссоздают Activity, включая изменение размера главной панели, подключение периферийных устройств и переключение между светлым и темным режимами. Если вы столкнулись с проблемами недействительности сеанса, вы можете сделать основную панель неизменяемой, использовать динамическую панель, отключить воссоздание действий для определенных изменений конфигурации или отключить изменения темы светлого/темного режима.
- Компоненты Movable и Resizable не поддерживаются в GltfEntity.
- Entity.getSize() не поддерживается в GltfEntity.
- Приложения Jetpack XR должны запрашивать разрешение
android.permission.SCENE_UNDERSTANDINGв AndroidManifest. - Создать сеанс можно только на устройстве Android XR. Если вы создадите сеанс и попытаетесь использовать его на устройстве, не поддерживающем Android XR, то получите ошибку RuntimeException.
- Если задать для скайбокса значение null с помощью метода `SpatialEnvironment.setSpatialEnvironmentPreference()`, скайбокс не станет черным, как указано в документации. В результате может быть показан скайбокс по умолчанию или текущий скайбокс не изменится.
- Клиенты SceneCore должны добавить
implementation(“com.google.guava:listenablefuture-1.0”)в конфигурацию Gradle для зависимостей приложения. В будущем выпуске scenecore будет включать эту библиотеку как зависимостьapi, поэтому клиентам не нужно будет объявлять ее явно. - SceneCore ошибочно включает
com.google.guava:guava-31.1-androidиcom.google.protobuf:protobuf-javaliteкак транзитивные зависимости. Если это приводит к ошибкам дублирования классов в сборке, эти две зависимости можно безопасно исключить. - Если в приложении используется SceneCore и включен ProGuard, то при создании сеанса произойдет сбой. В качестве временного решения отключите ProGuard. Подробную информацию о том, как включить ProGuard, можно найти в этом руководстве.