Jetpack SceneCore
| Последнее обновление | Основная версия | Release Candidate | Бета-версия | Альфа-версия |
|---|---|---|---|---|
| 7 октября 2026 г. | - | 1.0.0-rc02 | - | - |
Как объявлять зависимости
Чтобы добавить зависимость от XR SceneCore, необходимо добавить в проект репозиторий Google Maven. Подробная информация приведена в репозитории Google Maven.
Добавьте в файл build.gradle приложения или модуля зависимости для нужных артефактов:
Groovy
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-rc02" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-rc02" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-rc02") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-rc02") }
Подробнее о зависимостях приведено в статье Добавление зависимостей сборки.
Отзыв
Ваши отзывы помогают нам улучшать Jetpack. Если вы обнаружите проблемы или решите что-то предложить, отправьте отзыв. Прежде чем создавать новую проблему, ознакомьтесь с существующими. Вы можете добавить свой голос к существующей проблеме, нажав на значок звездочки.
Дополнительную информацию можно найти в документации по системе отслеживания ошибок.
Версия 1.0
Версия 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.
Исправление ошибок
- Исправлена ошибка утечки памяти, из-за которой система могла сохранять ссылку на объект Activity после его удаления. (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 преобразована в функцию suspend. (I5d27f)
ActivitySpaceиAnchorSpaceтеперь используют общий классSpaceEntity, который содержит общее поведение для объектов, положение которых контролируется системой (I506ec, b/513619219).- Обновлено
AnchorEntityдоAnchorSpace(Ifa95e, b/513619219) - Предоставляет общедоступный тестовый API
SoundEffectPoolComponentTester. (I87df7, b/498104417) - Добавлен необязательный параметр
cornerRadiusв конструкторSurfaceEntity.Shape.Quad, а свойство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теперь не интерфейс, а класс, который является базовым классом для всех типов объектов. В результате этого измененияBaseEntityбыл удален. (I7fbc9)GltfModel,ExrImageиImageBasedLightingAssetтеперь реализуютAutoCloseable, чтобы обеспечить идиоматическое управление ресурсами с помощью блокаuseв Kotlin. (I1ac79)- Добавлен класс
ImageBasedLightingAsset, который заменяет классExrImageдля определения освещения пространственной среды.ExrImageбольше не поддерживается и удален из общедоступного API. ВместоSpatialEnvironmentPreferenceтеперь используетсяImageBasedLightingAsset. (I6c92a) - Параметр
skyboxвSpatialEnvironmentпереименован вimageBasedLightingAsset, чтобы лучше отражать его назначение. Также добавлено уточнение о том, что текстуры скайбокса должны быть включены в параметр geometry. (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 были перенесены из типа Int в специальные типы. Их константыANYбудут удалены, поэтому клиентам следует явно перечислять все нужные константы или использовать новые неизменяемые константы.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. Вместо этого объект будет использоваться напрямую с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, который вернет интерфейс Entity. (I4c450, b/473867483) - Добавлен API
XrLog. Установите дляXrLog.isEnabledзначениеtrue, чтобы включить ведение журнала в JetpackXR, и используйте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
- Флажок "
unscaledGravityAlignedActivitySpace" удален изSession.create.ActivitySpaceтеперь всегда не масштабируется и выравнивается по гравитации. (If6f11, b/458173423) - Удалены устаревшие функции
setMaterialOverrideиclearMaterialOverrideизGltfModelEntity, которые теперь вызываются в отдельныхGltfModelNode. (I2e5d2) - В
PanelEntityдобавлены методыtransformPixelCoordinatesToLocalPositionиtransformNormalizedCoordinatesToLocalPosition. Удалены экспериментальные методы, которые возвращали позы вместо позицийVector3. (Ib6960, b/460123106, b/458333591) - В
SceneCoreдобавлены APIGltfAnimationдля управления анимацией в формате glTF. (I2c172, b/466065486, b/465819070, b/465818617) - Переименован источник "
ScenePose.activitySpacePose" в "ScenePose.poseInActivitySpace" (I8f175, b/427822261) - Добавлена реализация прогнозируемого времени выполнения Scenecore (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 в
SceneCoreRuntime на основе логики вSceneCore(I570b9)
Исправление ошибок
- Исправлена потенциальная причина сбоя, который мог возникать при уничтожении сеанса и получении
SpatialModeChangeEvent(If44e8). - Исправлена ошибка, из-за которой при выходе из действия или возвращении к нему мог возникать сбой
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иshouldAlwaysShowOverlayвisAutoHideContentWhileResizingEnabledи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. ВместоSpatialModeChangedListenerиспользуетсяConsumer<SpatialModeChangeEvent>. Теперь в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переименовалShapeSurfaceEntity.CanvasShape.Vr180HemisphereпереименовалHemisphereSurfaceEntity.CanvasShape.Vr360SphereпереименовалSphereSurfaceEntity.EdgeFeatheringParams.SmoothFeatherпереименовалRectangleFeatherSurfaceEntity.EdgeFeathingParams.SolidEdgeпереименовалNoFeatheringSurfaceEntity.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
SceneCore'sBaseEntityиBaseScenePose(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 содержит эти коммиты.
Новые функции
- API воспринимаемого разрешения добавлен в объекты панели и
SurfaceEntities. (I118f6) PerceivedResolutionВ Scene.kt добавлены методы обратного вызова для отслеживания воспринимаемого разрешения основной панели объекта Activity в HSM. (I58084)SurfaceEntity– добавлена поддержка приложения для запроса суперсэмплинга во время создания. Это позволяет приложениям использовать фильтр суперсэмплинга для сглаживания. (I06913)- В
ActivitySpaceдобавлено свойствоrecommendedContentBoxInFullSpace. Возвращает рекомендуемый контейнер для контента в режиме полного пространства. (I4cd6f) - Добавлен перегруженный конструктор для перемещаемого модификатора, который позволяет привязывать его к объектам. (Ic0c70)
Изменения в API
В этом выпуске мы внесли значительные изменения в API SceneCore. Некоторые классы были переименованы и/или перенесены в другие модули, а большинство методов получения и установки были заменены свойствами 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) - В объекте "Изменено на следующие свойства":
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в раздел "Сцена". Например, используйте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) - В методе создания параметр
windowBoundsPxбыл изменен наpixelDimensions, а его тип – с Rect наIntSize2d. (I1926e) - Конструктор
SpatialEnvironmentтеперь внутренний (I75a51) - Классы
SpatialPointerIconNoneиSpatialPointerIconCircleзаменены на сопутствующие объектыSpatialPointerIcon.NONEиSpatialPointerIcon.CIRCLE(I416d2). - Поле
SpatialPointerIconвSpatialPointerComponentбольше не может быть пустым. Чтобы указать, что нужно использовать значок указателя по умолчанию, вместо значения null используйтеSpatialPointerIcon.DEFAULT. (I416d2) - Значение в ячейке
androidx.xr.scenecore.AnchorEntity.getState()заменено на свойство, доступное только для чтения. Переименованы параметры методаAnchorEntity.create()для ясности. В методахAnchorEntityдля настройки и добавления прослушивателей прослушиватель был перемещен в последний аргумент, чтобы включить конечные лямбда-выражения. Значение "androidx.xr.scenecore.OnStateChangedListener" для "AnchorEntity" заменено на "Consumer<AnchorEntity.State>". (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 в SPATIAL_VISIBILITY_UNKNOWN, SPATIAL_VISIBILITY_OUTSIDE_FIELD_OF_VIEW, SPATIAL_VISIBILITY_PARTIALLY_WITHIN_FIELD_OF_VIEW и SPATIAL_VISIBILITY_WITHIN_FIELD_OF_VIEW соответственно (Ie7e8c).
SpatialVisibility - Класс
SpatialVisibilityзаменен на общедоступный объект с постоянными целочисленными значениями.setSpatialVisibilityChangedListenerтеперь принимаетConsumer<Int>вместоConsumer<SpatialVisibility>(Ie7e8c) PointerCaptureComponentконстант переименованы и перемещены в объектPointerCaptureComponent.PointerCaptureState(I9c7ac)- Значение в ячейке
PointerCaptureComponents' StateListenerзаменено на "Consumer<Int>". (I9c7ac) - Значение в ячейке
InputEventListenerзаменено на "Consumer<InputEvent>" (I9c7ac). setPreferredAspectRatioперенесен из класса Scene в объектSpatialWindowи принимает сеанс в качестве первого параметра. (I7b717)Entity.setHidden()заменено наEntity.setEnabled(), аEntity.isHidden()– наEntity.isEnabled().setHidden(false)равноsetEnabled(true)иisHidden() == !isEnabled(). (Icf0de)- Тип параметра
Entity.contentDescriptionизменен со String на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.shouldAutoHideContentResizableComponent.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 для проверки на наличие нулевых значений, которые применяются к типам. Разработчикам на Kotlin следует использовать следующий аргумент компилятора, чтобы обеспечить правильное использование:
-Xjspecify-annotations=strict(это значение по умолчанию, начиная с версии 2.1.0 компилятора Kotlin) (Ia8420). - Все асинхронные методы, возвращающие
ListenableFuture, заменены на функции Kotlin suspend. Разработчики на Java, которые хотят использовать асинхронные методы на основеListenableFutureвместо функций Kotlin suspend, теперь должны использовать функции расширения в: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). - Значения режима конфигурации были переименованы, чтобы лучше отражать их поведение. (I6d247)
- Исправлены проблемы с полем зрения и
HitTestв приложенииSceneCoreTestApp. (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 необходимо указать
android:enableOnBackInvokedCallback= "true". 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 spaces. Значение по умолчанию – Parent. - Методы расширения обратного вызова пространственной видимости добавлены в
SessionExt.kt, чтобы отслеживать, когда контент сцены перемещается в поле зрения пользователя или за его пределы. - В
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 содержит эти коммиты.
Новые функции
- Теперь для кода Jetpack XR поддерживается минификация Proguard
Исправление ошибок
- Дополнительные исправления для поддержки минимизации 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могут быть обновлены неправильно. Он будет обновлен во время следующего звонкаOnSpaceUpdated, который состоитсяActivitySpace.
Критические и поведенческие изменения
PanelEntityиActivityPanelEntityбудут иметь радиус скругления по умолчанию 32 dp или меньше, если ширина или высота панели меньше 32 dp.
Новые API и возможности
- Добавлена функция
StereoSurface.CanvasShape, которая позволяет создавать макетыSphericalиHemisphericalдля воспроизведения мультимедийного контента с эффектом погружения. - Теперь команда
StereoSurfaceEntity.create()принимает параметрCanvasShape. (Сейчас этот параметр игнорируется, но будет использоваться в будущих версиях.) - Параметр
Dimensionsбольше не используется в функцииStereoSurfaceEntity.create(). Приложения должны управлять размером холста, задавая значениеCanvasShape. StereoSurfaceEntityимеет участникаCanvasShape, которого можно задать динамически.StereoSurfaceEntity.dimensionsтеперь доступно только для чтения. Чтобы изменить размеры, приложения должны задавать значениеCanvasShape.StereoSurfaceEntityтеперь позволяет повторно задаватьStereoModeпосле создания.
Другие изменения
- Минимальная версия SDK для компиляции снижена до 24. Для всех Jetpack XR API по-прежнему требуется API 34 во время выполнения.
- Фабрика сеансов
SceneCore(Session.create) больше не запускает намерение получить разрешениеSCENE_UNDERSTANDING. Вместо этого клиентское приложение должно явно запросить у пользователя разрешения, прежде чем пытаться создать якоря. Если пользователь не предоставит разрешение, создать якорь не получится.
Исправление ошибок
- В методе
getActivitySpacePose()исправлена ошибка, из-за которой возвращались значения в метрах, а не в масштабированных метрах, как должно быть при использовании масштабаActivitySpace. Теперь параметрtransformPoseToтакже использует правильные единицы измерения для вычисления изменений координат, когда параметрActivitySpaceиспользуется в источнике или пункте назначения. - Теперь, если с помощью
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom))передается нулевое значение для параметра skybox, будет использоваться черный фон. Чтобы вернуться к стандартному небу и геометрии, используйтеsetSpatialEnvironmentPreference(null)..
Версия 1.0.0-alpha01
12 декабря 2024 г.
Выход androidx.xr.scenecore:scenecore-* 1.0.0-alpha01.
Функции первого выпуска Первый выпуск библиотеки графов 3D-сцен Jetpack SceneCore для создания и изменения иммерсивных сцен и сред. Эта библиотека позволяет размещать и упорядочивать 3D-модели и панели контента относительно друг друга и виртуальной или реальной среды.
- SpatialEnvironment. Создавайте полностью иммерсивные среды с помощью изображений скайбокса и/или геометрии 3D-моделей в качестве фона для сцены XR. Или включите сквозную передачу, чтобы виртуальная сцена могла интегрироваться с реальным окружением пользователя.
- PanelEntity: добавляйте 2D-контент в 3D-сцены, встраивая стандартные макеты и действия Android в пространственные панели, которые могут быть плавающими или прикрепленными к реальным поверхностям.
- GltfModelEntity – размещайте 3D-модели на сцене, добавляйте анимацию и взаимодействуйте с ними. SceneCore поддерживает формат файлов glTF, чтобы упростить интеграцию с существующими моделями.
- SpatialAudio – добавьте в 3D-сцену источники окружающего и точечного звука, чтобы создать эффект полного погружения.
- StereoSurfaceEntity: SceneCore поддерживает маршрутизацию контента, отрисованного на поверхности Android, для левого и правого глаза. Его можно использовать для отрисовки стереоскопического контента в формате "бок о бок" или "сверху вниз", например стереофотографий, 3D-видео или других динамически отрисованных интерфейсов. Для декодирования видео в приложениях следует использовать MediaPlayer или ExoPlayer.
- Система компонентов. SceneCore предлагает надежную и гибкую систему компонентов для добавления возможностей в контент XR, в том числе для перемещения, изменения размера и взаимодействия с моделями и панелями.
- Якорь. Если включена функция сквозного видео, вы можете прикреплять панели и модели к реальным поверхностям, обеспечивая пользователям тесную интеграцию виртуального контента в окружающую среду.
- Поза пользователя. Позволяет определить местоположение пользователя в виртуальной сцене, чтобы ориентировать контент относительно его позиции.
- SpatialCapabilities. Создавайте полностью адаптивные приложения, которые используют пространственные возможности, например 3D-позиционирование контента интерфейса, когда они доступны. Кроме того, ваше приложение может отслеживать изменения возможностей во время выполнения, чтобы адаптировать работу в зависимости от того, как пользователь использует устройство Android XR.
Известные проблемы
- Для использования Jetpack SceneCore требуется minSDK версии 30. Чтобы обойти эту проблему, добавьте в манифест запись
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>, чтобы можно было создавать и запускать приложение с minSDK 23. - Сеанс может стать недействительным в различных ситуациях, которые автоматически воссоздают действие, включая изменение размера основной панели, подключение периферийных устройств и переключение между светлой и темной темами. Если вы столкнулись с проблемами аннулирования сеанса, попробуйте сделать основную панель не изменяемой по размеру, использовать динамическую панель, отключить воссоздание действий для определенных изменений конфигурации или отключить смену темы (светлой или темной).
- Компоненты Movable и Resizable не поддерживаются в GltfEntity.
- Метод Entity.getSize() не поддерживается для GltfEntity.
- Приложения Jetpack XR должны запрашивать разрешение
android.permission.SCENE_UNDERSTANDINGв файле AndroidManifest. - Создавать сеансы можно только на устройствах Android XR. В настоящее время, если вы создадите сеанс и попытаетесь использовать его на устройстве, отличном от устройства Android XR, то получите исключение RuntimeException.
- Если задать для параметра skybox значение 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, рассказывается в этом руководстве.