Jetpack SceneCore
| Последнее обновление | Стабильный релиз | Предварительная версия релиза | Бета-версия | Альфа-версия |
|---|---|---|---|---|
| 25 февраля 2026 г. | - | - | - | 1.0.0-alpha12 |
Объявление зависимостей
Чтобы добавить зависимость от XR SceneCore, необходимо добавить репозиторий Google Maven в ваш проект. Для получения дополнительной информации ознакомьтесь с информацией в репозитории Google Maven .
Добавьте зависимости для необходимых артефактов в файл build.gradle вашего приложения или модуля:
классный
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha12" // Optional dependencies for asynchronous conversions implementation "androidx.xr.scenecore:scenecore-guava:1.0.0-alpha12" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha12" }
Котлин
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha12") // Optional dependencies for asynchronous conversions implementation("androidx.xr.scenecore:scenecore-guava:1.0.0-alpha12") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha12") }
Для получения дополнительной информации о зависимостях см. раздел «Добавление зависимостей сборки» .
Обратная связь
Ваши отзывы помогают улучшить Jetpack. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете проголосовать за существующую проблему, нажав кнопку со звездочкой.
Для получения более подробной информации см. документацию по системе отслеживания ошибок .
Версия 1.0
Версия 1.0.0-alpha12
25 февраля 2026 г.
Выпущена версия androidx.xr.scenecore:scenecore-*:1.0.0-alpha12 . Версия 1.0.0-alpha12 содержит следующие коммиты .
Известные проблемы
- Закрепленные объекты могут через несколько секунд вернуться из своей закреплённой позиции в начало координат пространства активности.
Изменения в 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теперь используют APIRenderViewpointиз ARCore вместо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 ). - В
SceneCoreRuntime добавлен вспомогательный класс Utils, основанный на логике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были изменены с целых чисел на подтипы State. ( Ib0c49 ) - Добавлен метод
getChildren()в интерфейс Entity. Обновлен жизненный циклMainPanelEntity. ( Ia69d6 )
Изменения в API
- Типы констант
PointerCaptureComponent.PointerCaptureStateбыли изменены с Int на подтипыPointerCaptureState. ( Ic888a ) - Теперь
Scene.spatialCapabilitiesимеет типSet<SpatialCapability>вместо поля типа Int. КонстантыSpatialCapabilityбыли переименованы. ( I9c109 ) - Константные типы
SurfaceEntityбыли переименованы и заменены с Int на подтипыSurfaceEntity. ( I419ed ) - Константные типы
SpatializerConstantбыли переименованы и изменены с Ints на подтипыSpatializerConstant. ( Ia0e18 ) - Константные типы
TextureSamplerбыли переименованы и изменены с Int на подтипыTextureSampler. ( I44078 ) - Типы констант
SpatialVisibilityбыли изменены с целых чисел на подтипыSpatialVisibility. ( I70739 ) - Константные типы
ResizeEvent.ResizeStateбыли переименованы и изменены с Int на подтипыResizeState. ( I384d5 ) - Константные типы
InputEventбыли переименованы и изменены с типа Int на тип, наследующий от соответствующего объемлющего типа. ( I82817 ) - Типы констант
GltfModelEntity.AnimationStateбыли изменены с Int на подтипыAnimationState. ( I24f4e ) - Константные типы
AlphaModeбыли переименованы и изменены с Ints на подтипыAlphaMode. ( I27b56 ) - Типы констант
Spaceбыли изменены с целых чисел на подтипы пространства. ( I9255b ) - Методы
ScenePose.hitTestи связанные с ним теперь возвращаютnullесли пересечение не найдено, вместоHitTestResultс nullhitPosition.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объекта Scene был объединен с переменнойkeyEntity. УстановкаkeyEntityв неперемещаемую сущность, такую какAnchorEntityприведет к возникновению исключенияIllegalArgumentExceptionвместо возврата логического значения false. ( I62080 , b/428721695 , b/422215745 ) - Переменная
SpatialModeChangeListenerобъекта Scene была заменена на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иBaseScenePoseSceneCore( 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 ) - В файл Scene.kt добавлены методы обратного вызова
PerceivedResolutionдля мониторинга воспринимаемого разрешения главной панели активности в HSM. ( I58084 ) -
SurfaceEntity— Добавлена поддержка запроса суперсэмплирования при создании объекта приложением. Это позволяет приложениям использовать фильтр суперсэмплирования для сглаживания. ( I06913 ) - Добавлено свойство
recommendedContentBoxInFullSpaceкActivitySpace. Оно возвращает рекомендуемый блок для размещения контента в режиме Full Space. ( I4cd6f ) - Предоставлен перегруженный конструктор для модификатора movable, позволяющий устанавливать привязку. ( Ic0c70 )
Изменения в API
В этом релизе в SceneCore были внесены существенные изменения в API. Несколько классов были переименованы и/или перемещены в другие модули, а большинство методов getter/setter были заменены свойствами 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в раздел Scene, например, используйтеsession.scene.requestFullSpaceMode()вместоsession.scene.spatialEnvironment.requestFullSpaceMode().addOnPassthroughOpacityChangedListenerиaddOnSpatialEnvironmentChangedListenerтеперь имеют переопределения, принимающие необязательные Executor. ( 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. Он больше не принимает значения null. Вместо этого используется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для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 для
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изменен со 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.shouldAutoHideContent.ResizableComponent.forceShowResizeOverlayбыл переименован вResizableComponent.shouldAlwaysShowOverlay( I97a2d ). -
minSDKдляandroidx.xr.scenecoreиandroidx.xr.composeуменьшен до 24. Пакеты 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 для проверки на null , которые относятся к использованию типов. Разработчикам 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в HitInfo объектаInputEventмог привести к сбою, еслиhitPositionвозвращаемый системой, был равен null ( I7a695 ). - Значения параметров Config *Mode были переименованы в соответствии с их поведением. ( I6d247 )
- Исправлены проблемы с FOV и
HitTestв тестовом приложенииSceneCore. ( I2c51e ) - Исправлена ошибка в
SpatialCapabilities.hasCapability(), из-за которой она возвращала true, если хотя бы одна из возможностей, переданных с помощью побитового ИЛИ, была истинной, вместо того, чтобы возвращать 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. Класс Scene будет доступен как свойство расширения класса Session. Функции внутри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. - Класс Fov теперь является обычным классом Kotlin.
- Разделите
Entity.kt, чтобы поместить каждый конкретный тип сущности в отдельный файл. - При создании нового
PanelEntityбольшинство элементов View будут переподчинены объекту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.setFullSpaceMode -
import 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.getEntitiesOfType -
import androidx.xr.scenecore.getEntityForRtEntity
-
-
Session.unpersistAnchor(Anchor)был удален -
Session.createPersistedAnchorEntity(UUID)был удален.
Известные проблемы
-
PanelEntity.setCornerRadius()иActivityPanelEntity.setCornerRadius()могут не вступить в силу до следующего перемещения панели. Этого можно избежать, переместив панель в ее текущее положение. - При вызове
BoundsChangedдляActivitySpaceнекоторыеActivityPoseмогут быть обновлены некорректно. Обновление будет произведено при следующем вызовеOnSpaceUpdatedдляActivitySpace
Нарушения и изменения в поведении
- Если ширина или высота панели меньше 32dp, то
PanelEntityиActivityPanelEntityрадиус скругления углов по умолчанию будет равен 32dp или меньше.
Новые 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) больше не запускает Intent для получения разрешенияSCENE_UNDERSTANDING. Вместо этого клиентское приложение должно явно запросить эти разрешения у пользователя, прежде чем пытаться создать якоря. Создание якоря завершится неудачей, если пользователь не предоставит разрешение.
Исправлены ошибки
-
getActivitySpacePose()была исправлена для учета масштабаActivitySpace: теперь она возвращает значения смещения в масштабированных метрах, а не всегда в немасштабированных метрах.transformPoseToтеперь также использует правильные единицы измерения для вычисления изменений координат, когдаActivitySpaceучаствует в исходном или целевом объекте. - Теперь скайбокс будет полностью чёрным, если при использовании
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom))будет передано значение null для параметра skybox. Чтобы вернуться к скайбоксу и геометрии по умолчанию, используйтеsetSpatialEnvironmentPreference(null).
Версия 1.0.0-alpha01
12 декабря 2024 г.
Выпущена версия androidx.xr.scenecore:scenecore-* 1.0.0-alpha01 .
Особенности первого релиза. Первый релиз для разработчиков Jetpack SceneCore, библиотеки 3D-графов сцен для создания и управления иммерсивными сценами и окружениями. Эта библиотека позволяет размещать и упорядочивать 3D-модели и панели контента относительно друг друга и вашего виртуального или реального мира.
- SpatialEnvironment : Создавайте полностью иммерсивные впечатления, используя изображение скайбокса и/или геометрию 3D-модели в качестве фона для вашей XR-сцены. Или включите сквозную передачу, чтобы ваша виртуальная сцена могла интегрироваться с реальным окружением пользователя.
- PanelEntity : Добавьте 2D-контент в ваши 3D-сцены, встраивая стандартные макеты Android и Activity в пространственные панели, которые могут плавать или быть привязаны к реальным поверхностям.
- GltfModelEntity : Размещайте, анимируйте и взаимодействуйте с 3D-моделями в вашей сцене. SceneCore поддерживает формат файлов glTF для упрощения интеграции с существующими моделями.
- SpatialAudio : Добавьте в свою 3D-сцену источники окружающего и точечного звука для полного погружения в пространственное звучание.
- StereoSurfaceEntity : SceneCore supports left/right eye routing of content rendered onto an Android Surface. This can be used to render stereoscopic content in a side-by-side or top-bottom format, such as stereo photos, 3D video, or other dynamically rendered UIs. Applications should use MediaPlayer or ExoPlayer for video decoding.
- Component System: SceneCore offers a robust and flexible component system for adding capabilities to your XR content, including affordances for users to move, resize, and interact with models and panels.
- Anchor : With passthrough enabled, you can attach panels and models to actual surfaces, giving users seamless integration of virtual content in their real-world environment.
- User Pose: Access the user's location in the virtual scene, to orient your content around the user's position.
- SpatialCapabilities : Build fully adaptive apps that take advantage of spatialized capabilities when available, such as 3D positioning of UI content. Not only that, but your app can monitor for changes to capabilities while the app is executing, to modify the experience based on how the user is using their Android XR device.
Известные проблемы
- Currently a minSDK of 30 is required to use Jetpack SceneCore. As a workaround add the following manifest entry
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>to be able to build and run with a minSDK of 23. - Session can become invalid in various situations that automatically recreate the Activity, including resizing a main panel, connecting peripherals, and changing between light and dark mode. If you encounter session invalidation issues, workarounds include making you main panel non-resizable, using a dynamic panel entity, disabling activity recreation for specific config changes or disabling light/dark mode theme changes.
- Movable and Resizable components are not supported on GltfEntity.
- Entity.getSize() is not supported on GltfEntity.
- Jetpack XR apps required to request
android.permission.SCENE_UNDERSTANDINGpermission in AndroidManifest. - Creating a session is only supported on an Android XR device. At this time, if you create a Session and try to use it on a non Android XR device, you'll get a RuntimeException.
- Setting the skybox to null via `SpatialEnvironment.setSpatialEnvironmentPreference() does not result in a solid black skybox as documented. It may result in the system default skybox or no change to the current skybox.
- SceneCore clients should add
implementation(“com.google.guava:listenablefuture-1.0”)to their Gradle configuration for their app's dependencies. In a future release, scenecore will include this library as anapidependency so clients will not need to explicitly declare it. - SceneCore erroneously includes
com.google.guava:guava-31.1-androidandcom.google.protobuf:protobuf-javaliteas transitive dependencies. If this results in duplicate class errors in your build, these two dependencies can be safely excluded. - If your app uses SceneCore and enables ProGuard, it will crash when you create a Session. As a workaround, disable ProGuard. See this guide for more information on how to enable ProGuard.