Реактивный ранец SceneCore
| Последнее обновление | Стабильный релиз | Кандидат на релиз | Бета-версия | Альфа-релиз |
|---|---|---|---|---|
| 22 октября 2025 г. | - | - | - | 1.0.0-альфа08 |
Объявление зависимостей
Чтобы добавить зависимость от XR SceneCore, необходимо добавить репозиторий Google Maven в свой проект. Подробнее см. в репозитории Google Maven .
Добавьте зависимости для необходимых артефактов в файл build.gradle вашего приложения или модуля:
классный
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha08" // Optional dependencies for asynchronous conversions implementation "androidx.xr.scenecore:scenecore-guava:1.0.0-alpha08" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha08" }
Котлин
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha08") // Optional dependencies for asynchronous conversions implementation("androidx.xr.scenecore:scenecore-guava:1.0.0-alpha08") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha08") }
Дополнительные сведения о зависимостях см. в разделе Добавление зависимостей сборки .
Обратная связь
Ваши отзывы помогают улучшить Jetpack. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с уже существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете проголосовать за существующую проблему, нажав на кнопку со звёздочкой.
Более подробную информацию см. в документации по системе отслеживания проблем .
Версия 1.0
Версия 1.0.0-альфа08
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-альфа07
24 сентября 2025 г.
Выпущены androidx.xr.scenecore:scenecore:1.0.0-alpha07 , androidx.xr.scenecore:scenecore-guava:1.0.0-alpha07 и androidx.xr.scenecore:scenecore-testing:1.0.0-alpha07 . Версия 1.0.0-alpha07 содержит эти коммиты .
Изменения API
- Переименовал
fixedAspectRatioвisFixedAspectRatioEnabledи сделал его логическим свойством ( I5c4e8 , b/440588971 ). - Подделки
Scenecoreтеперь находятся в модулеxr:scenecore:scenecore-testing. ( Idd951 ) -
shouldAutoHideContentпереименован вisAutoHideContentWhileResizingEnabled, аshouldAlwaysShowOverlay— вisAlwaysShowOverlayEnabled( I97c36 , b/432335421 ). - Обновлены константы
SceneCoreTextureSamplerдля удобства чтения, например,TextureSampler.MinFilter.LINEARтеперь называетсяTextureSampler.MIN_FILTER_LINEAR( Ib159c ). - Сеттер
setKeyEntityсцены был объединён с переменнойkeyEntity. УстановкаkeyEntityна неперемещаемую сущность, например,AnchorEntity, приведёт к возникновению исключенияIllegalArgumentExceptionвместо возврата логического значения false. ( I62080 , b/428721695 , b/422215745 ) - Переменная
SpatialModeChangeListenerсцены была заменена наsetSpatialModeChangedListener. Она принимаетConsumer<SpatialModeChangeEvent>вместоSpatialModeChangedListener.setSpatialModeChangedListenerтеперь может опционально принимать Executor. ( I62080 , b/428721695 , b/422215745 ) - Удален параметр
bundleизActivityPanelEntity.startActivity( I64344 , b/430332856 , b/430333040 ) -
SpatializerConstants.SOURCE_TYPE_BYPASSпереименован вSpatializerConstants.SOURCE_TYPE_DEFAULT. ( Ifc7fe , b/422215565 ) - Добавлена константа
SpatialSoundPool.PLAY_FAILED. ( Ifc7fe , b/422215565 ) - Добавлены аргументы по умолчанию для методов
SpatialSoundPool.play. ( Ifc7fe , b/422215565 ) - Удалено возвращаемое значение сеттеров в
SpatialAudioTrackBuilder. ( Ifc7fe , b/422215565 ) - Изменения SurfaceEntity
-
SurfaceEntity.CanvasShapeпереименован вShape -
SurfaceEntity.CanvasShape.Vr180Hemisphereпереименован вHemisphere -
SurfaceEntity.CanvasShape.Vr360Sphereпереименован вSphere -
SurfaceEntity.EdgeFeatheringParams.SmoothFeatherпереименован вRectangleFeather -
SurfaceEntity.EdgeFeathingParams.SolidEdgeпереименован вNoFeathering -
SurfaceEntity.ContentSecurityLevelпереименован вSurfaceProtection -
SurfaceEntity.ContentSecurityLevel.{values}добавлен префиксSURFACE_PROTECTION_. -
SurfaceEntity.SuperSampling.{$values}добавлен префиксSUPER_SAMPLING_ -
SurfaceEntity.StereoMode.{values}добавлен префиксSTEREO_MODE_ -
SurfaceEntity.ContentColorMetadata.maxCLLпереименован вmaxContentLightLevel( I7eb5f , b/422216050 , b/427529950 )
-
-
launchActivityпереименован вstartActivity( I7db90 , b/430332856 ) - Удален
Scene.activitySpaceRoot. Вместо него используетсяScene.activitySpace. ( I05ee8 , b/378706624 , b/422215745 ). -
configureBundleForFullSpaceModeLaunchиconfigureBundleForFullSpaceModeLaunchWithEnvironmentInheritedпереименованы вcreateBundleForFullSpaceModeLaunchиcreateBundleForFullSpaceModeLaunchWithEnvironmentInheritedсоответственно и перемещены в файл LaunchUtils.kt как методы верхнего уровня и принимают Session в качестве первого параметра ( I64a2c , b/437186050 ). - Фабрика
GroupEntityтеперь возвращает типGroupEntityвместо Entity. ( I66042 )
Исправления ошибок
- Выдать исключение
IllegalStateException, когда экземпляр сущности используется после утилизации. ( I90990 , b/427314036 , b/432063442 )
Версия 1.0.0-альфа06
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-альфа05
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 воспринимаемого разрешения добавлен в Panel Entities и
SurfaceEntities. ( I118f6 ) - В Scene.kt добавлены методы обратного вызова
PerceivedResolutionдля мониторинга воспринимаемого разрешения основной панели активности в HSM. ( I58084 ) -
SurfaceEntity— добавлена поддержка запроса суперсэмплинга в приложении при создании. Это позволяет приложениям использовать фильтр суперсэмплинга для сглаживания. ( I06913 ) - Добавлено свойство
recommendedContentBoxInFullSpaceдляActivitySpace. Оно возвращает рекомендуемое поле для размещения контента в режиме полного пространства. ( 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 ) - В Entity: изменены следующие свойства:
get/setParent(),setContentDescription;Entity.is/setHidden()устарел, вместо него используйтеEntity.is/setEnabled. ( Ibc4c6 ) - Удалён класс
androidx.xr.scenecore.BasePanelEntity, вместо него используетсяPanelEntityнапрямую. Геттеры и сеттерыPanelEntityзаменены свойствами. СвойствоPanelEntity.sizeизменено сFloat3dSizeнаFloat2dSize. Удалён устаревший методandroidx.xr.scenecore.PanelEntity.getPixelDimensions, вместо него используетсяgetSizeInPixels. ( Icc174 ). - Заменен
androidx.xr.scenecore.OnSpaceUpdatedListenerнаRunnable. ( I19308 ) -
SpatialUser.getCameraViews()заменен свойством. ( Ib0cc5 ) ДляExrImageиGltfModel:методыcreateизменены на функции приостановки; параметры создания изменены так, чтобы приниматьUriилиPathвместоString. ( Id8883 ) ( I0d247 ), ( I25706 ) -
SpatialEnvironment.requestFullSpaceModeиSpatialEnvironment.requestHomeSpaceModeперемещены в Scene, например, используйтеsession.scene.requestFullSpaceMode()вместоsession.scene.spatialEnvironment.requestFullSpaceMode().addOnPassthroughOpacityChangedListenerиaddOnSpatialEnvironmentChangedListenerтеперь есть переопределения, которые принимают необязательные исполнители. ( I12fe0 ) ( I6b21e ) - Удалены следующие устаревшие методы
SpatialEnvironment:togglePassthrough,setPassthrough,setPassthroughOpacity,getPassthroughMode,getPassthroughOpacity,setSkyboxиsetGeometry. Также удалён устаревший классSpatialEnvironment.PassthroughMode( I927bd ) ( I927bd ) ( I927bd ). - Заменены следующие методы получения и установки
SpatialEnvironmentсвойствами Kotlin:getCurrentPassthroughOpacity(),get/setPassthroughOpacityPreference(),get/setSpatialEnvironmentPreference(),isSpatialEnvironmentPreferenceActive()( I33a7b ) ( Ie06e2 ) ( Ie06e2 ) - Тип
SpatialEnvironmentPreference.preferredPassthroughOpacityизменён сFloat?наFloat. Он больше не принимает значения NULL. Вместо этого для сигнала об отсутствии предпочтений по непрозрачности используетсяSpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCE. ( I40107 ). - Параметр
windowBoundsPxобновлен доpixelDimensions, а его тип изменен с Rect наIntSize2dв методе create. ( 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переименован вconfigureBundleForFullSpaceModeLaunchи методsetFullSpaceModeWithEnvironmentInheritedвconfigureBundleForFullSpaceModeLaunchWithEnvironmentInherited. ( I0cbe0 ) ( I0cbe0 ) - Значения
SpatialVisibilityUNKNOWN, 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заменен на открытый объект с константными значениями Int.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.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, определяющие значение 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в HitInfoInputEventмог вызывать сбой, еслиhitPositionвозвращенный системой, был равен null ( I7a695 ). - Конфигурация *Параметры режима были переименованы, чтобы отразить их поведение. ( I6d247 )
- Исправлены проблемы с FOV и
HitTestвSceneCoreTestApp. ( I2c51e ) - Исправлена ошибка в
SpatialCapabilities.hasCapability(), из-за которой возвращалось значение true, если хотя бы одно из свойств, переданных с помощью побитового ИЛИ, было true, вместо того, чтобы возвращать значение true только в том случае, если все они были true. ( I2cd40 ) -
SurfaceEntity.StereoMode.TOP_BOTTOMобновлен таким образом, чтобы верхняя карта соответствовала левому глазу, а нижняя — правому глазу. ( I4ae68 )
Версия 1.0.0-альфа04
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добавлены методы расширения обратного вызова пространственной видимости для отслеживания того, когда содержимое сцены перемещается внутрь или за пределы поля зрения пользователя. - В
SpatialAudioTrackдобавленsetPointSourceParams, позволяющий обновлять параметры после создания трека. - Добавлен новый класс Scene со ссылками на API
Scenecore. Scene будет доступен как свойство расширения Session. Функции внутриSessionExtперенесены в Scene, поэтому импорт потребуется скорректировать; например,SessionExt.getScene(session).addSpatialCapababilitiesChangedListenerвместоSessionExt.addSpatialCapabilitiesChangedListener. - Добавлен
ActivityPose.hitTestAsync, позволяющий проводитьhitTestпо виртуальному содержимому. - Добавлен новый тип компонента
SpatialPointerComponent, позволяющий клиентам указывать значок, отображаемый для указателя, или отключать его. В настоящее время этот компонент можно прикрепить только к экземплярамPanelEntity. - Представляем новую фабрику
PanelEntity, которая принимает размеры панели в метрах или пикселях. Старая фабрикаPanelEntity, принимавшая два параметра типа «Размер» для панели, удалена.
Изменения 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-альфа03
26 февраля 2025 г.
Выпущены androidx.xr.scenecore:scenecore:1.0.0-alpha03 и androidx.xr.scenecore:scenecore-testing:1.0.0-alpha03 . Версия 1.0.0-alpha03 содержит эти коммиты .
Новые функции
- Минификация Proguard теперь поддерживается для кода Jetpack XR.
Исправления ошибок
- Дополнительные исправления для поддержки минимизации Proguard для Jetpack XR SceneCore ( I4f47e )
- Обновлено правило Jetpack XR Scenecore
ProGuardдля предотвращенияAbstractMethodErrorдля минифицированных клиентов. ( I91a01 )
Версия 1.0.0-альфа02
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
Нарушения и поведенческие изменения
-
PanelEntityиActivityPanelEntityбудут иметь радиус угла по умолчанию 32dp или меньше, если ширина или высота панели меньше 32dp.
Новые API и возможности
- Представлен
StereoSurface.CanvasShape, который позволяет создаватьSphericalиHemisphericalхолсты для рендеринга иммерсивных медиа. -
StereoSurfaceEntity.create()теперь принимает параметрCanvasShape. (Этот параметр в настоящее время игнорируется, но будет использоваться в будущей версии.) -
StereoSurfaceEntity.create()больше не принимает параметрDimensions. Приложения должны управлять размером холста, устанавливаяCanvasShape -
StereoSurfaceEntityимеет элементCanvasShape, который можно задавать динамически. -
StereoSurfaceEntity.dimensionsтеперь является свойством только для чтения; для изменения размеров приложениям следует задатьCanvasShape. -
StereoSurfaceEntityтеперь позволяет сбрасыватьStereoModeпосле построения.
Другие изменения
- MinSDK для времени компиляции уменьшен до 24. Все API Jetpack XR по-прежнему требуют API 34 во время выполнения.
- Фабрика сеансов
SceneCore(Session.create) больше не запускает намерение получить разрешениеSCENE_UNDERSTANDING. Вместо этого клиентское приложение должно явно запросить разрешения у пользователя, прежде чем пытаться создать якоря. Создание якоря завершится ошибкой, если пользователь не предоставит разрешение.
Исправления ошибок
-
getActivitySpacePose()был исправлен для учета масштабаActivitySpaceпутем возврата значений перевода в масштабированных метрах, а не всегда в немасштабированных метрах.transformPoseToтеперь также использует правильные единицы для вычисления изменений координат, когдаActivitySpaceучаствует в исходном или целевом объекте. - Теперь при передаче нулевого значения параметра скайбокса с помощью
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom))скайбокс будет полностью чёрным. Чтобы вернуться к системному скайбоксу и геометрии по умолчанию, используйтеsetSpatialEnvironmentPreference(null).
Версия 1.0.0-альфа01
12 декабря 2024 г.
Выпущен androidx.xr.scenecore:scenecore-* 1.0.0-alpha01 .
Возможности первого выпуска: первый релиз Jetpack SceneCore для разработчиков, библиотеки 3D-графов сцен для создания и управления иммерсивными сценами и окружениями. Эта библиотека позволяет размещать и упорядочивать 3D-модели и панели контента относительно друг друга, а также виртуальной или реальной среды.
- SpatialEnvironment : Создавайте полностью захватывающие впечатления, используя изображение скайбокса и/или геометрию 3D-модели в качестве фона для вашей XR-сцены вашего окружения. Или включите сквозное изображение, чтобы ваша виртуальная сцена интегрировалась с реальным окружением пользователя.
- PanelEntity : добавляйте 2D-контент в 3D-сцены, встраивая стандартные макеты Android и действия в пространственные панели, которые могут перемещаться или прикрепляться к реальным поверхностям.
- GltfModelEntity : размещайте, анимируйте и взаимодействуйте с 3D-моделями в вашей сцене. SceneCore поддерживает формат файлов glTF для простой интеграции с существующими моделями.
- SpatialAudio : добавьте окружающие и точечные источники звука в вашу 3D-сцену для получения полностью иммерсивного, пространственного звука.
- StereoSurfaceEntity : SceneCore поддерживает маршрутизацию контента, отображаемого на Android Surface, для левого и правого глаза. Это может использоваться для рендеринга стереоскопического контента в формате «бок о бок» или «сверху вниз», например, стереофотографий, 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. - Сеанс может стать недействительным в различных ситуациях, которые автоматически пересоздают Activity, включая изменение размера главной панели, подключение периферийных устройств и переключение между светлым и тёмным режимами. В случае возникновения проблем с недействительностью сеанса можно сделать главную панель неизменяемой, использовать динамическую панель, отключить воссоздание Activity для определённых изменений конфигурации или отключить смену тем оформления в светлом/тёмном режиме.
- Перемещаемые и изменяемые по размеру компоненты не поддерживаются в GltfEntity.
- Entity.getSize() не поддерживается в GltfEntity.
- Приложения Jetpack XR должны запрашивать разрешение
android.permission.SCENE_UNDERSTANDINGв AndroidManifest. - Создание сеанса поддерживается только на устройствах Android XR. В настоящее время при создании сеанса и попытке использовать его на устройстве, отличном от Android XR, возникнет исключение RuntimeException.
- Установка скайбокса в значение null с помощью `SpatialEnvironment.setSpatialEnvironmentPreference() не приводит к созданию сплошного чёрного скайбокса, как описано в документации. Это может привести к использованию системного скайбокса по умолчанию или отсутствию изменений в текущем скайбоксе.
- Клиентам SceneCore следует добавить
implementation(“com.google.guava:listenablefuture-1.0”)в конфигурацию Gradle для зависимостей своего приложения. В будущем выпуске SceneCore включит эту библиотеку как зависимостьapiпоэтому клиентам не придётся явно её объявлять. - SceneCore ошибочно включает
com.google.guava:guava-31.1-androidиcom.google.protobuf:protobuf-javaliteкак транзитивные зависимости. Если это приводит к ошибкам дублирования классов в вашей сборке, эти две зависимости можно безопасно исключить. - Если ваше приложение использует SceneCore и включает ProGuard, оно аварийно завершится при создании сеанса. В качестве временного решения отключите ProGuard. Подробнее о включении ProGuard см. в этом руководстве .