Jetpack SceneCore
| Последнее обновление | Стабильный релиз | Предварительная версия релиза | Бета-версия | Альфа-версия |
|---|---|---|---|---|
| 28 января 2026 г. | - | - | - | 1.0.0-alpha11 |
Объявление зависимостей
Чтобы добавить зависимость от XR SceneCore, необходимо добавить репозиторий Google Maven в ваш проект. Для получения дополнительной информации ознакомьтесь с информацией в репозитории Google Maven .
Добавьте зависимости для необходимых артефактов в файл build.gradle вашего приложения или модуля:
классный
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha11" // Optional dependencies for asynchronous conversions implementation "androidx.xr.scenecore:scenecore-guava:1.0.0-alpha11" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha11" }
Котлин
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha11") // Optional dependencies for asynchronous conversions implementation("androidx.xr.scenecore:scenecore-guava:1.0.0-alpha11") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha11") }
Для получения дополнительной информации о зависимостях см. раздел «Добавление зависимостей сборки» .
Обратная связь
Ваши отзывы помогают улучшить Jetpack. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете проголосовать за существующую проблему, нажав кнопку со звездочкой.
Для получения более подробной информации см. документацию по системе отслеживания ошибок .
Версия 1.0
Версия 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 поддерживает маршрутизацию контента для левого/правого глаза, отображаемого на Android Surface. Это можно использовать для отображения стереоскопического контента в формате «бок о бок» или «сверху вниз», например, стереофотографий, 3D-видео или других динамически отображаемых пользовательских интерфейсов. Для декодирования видео приложениям следует использовать MediaPlayer или ExoPlayer.
- Система компонентов: SceneCore предлагает надежную и гибкую систему компонентов для расширения возможностей вашего XR-контента, включая средства для перемещения, изменения размера и взаимодействия пользователей с моделями и панелями.
- Функция Anchor : При включенной функции сквозной передачи вы можете прикреплять панели и модели к реальным поверхностям, обеспечивая пользователям бесшовную интеграцию виртуального контента в их реальную среду.
- Положение пользователя: Получите доступ к местоположению пользователя в виртуальной сцене, чтобы сориентировать контент относительно его позиции.
- SpatialCapabilities : Создавайте полностью адаптивные приложения, использующие пространственные возможности, когда они доступны, например, 3D-позиционирование контента пользовательского интерфейса. Более того, ваше приложение может отслеживать изменения этих возможностей во время выполнения, чтобы изменять пользовательский опыт в зависимости от того, как пользователь использует свое устройство Android XR.
Известные проблемы
- В настоящее время для использования Jetpack SceneCore требуется minSDK 30. В качестве обходного пути добавьте следующую запись в манифест
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>, чтобы иметь возможность собирать и запускать приложение с minSDK 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.