{ } { }
Реактивный ранец SceneCore
Последнее обновление | Стабильный выпуск | Кандидат на выпуск | Бета-версия | Альфа-релиз |
---|---|---|---|---|
7 мая 2025 г. | - | - | - | 1.0.0-альфа04 |
Объявление зависимостей
Чтобы добавить зависимость от XR SceneCore, вам необходимо добавить в свой проект репозиторий Google Maven. Для получения дополнительной информации прочтите репозиторий Google Maven .
Добавьте зависимости для нужных вам артефактов в файл build.gradle
для вашего приложения или модуля:
классный
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha04" // Required for Java implementation "com.google.guava:listenablefuture:1.0" // Required for Kotlin implementation "org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.9.0" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha04" }
Котлин
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha04") // Required for Java implementation("com.google.guava:listenablefuture:1.0") // Required for Kotlin implementation("org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.9.0") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha04") }
Дополнительные сведения о зависимостях см. в разделе Добавление зависимостей сборки .
Обратная связь
Ваши отзывы помогают сделать Jetpack лучше. Дайте нам знать, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете добавить свой голос к существующей проблеме, нажав кнопку со звездочкой.
Дополнительную информацию см. в документации по системе отслеживания проблем .
Версия 1.0
Версия 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
, который позволяет получать/устанавливать значения относительно разных пространств. Поддерживаемые значения — пространства «Родитель», «Активность» и «Реальный мир», а значение по умолчанию для этого параметра — «Родитель». - В
SessionExt.kt
добавлены методы расширения обратного вызова пространственной видимости, позволяющие отслеживать, когда содержимое сцены перемещается внутри или за пределами поля зрения пользователя. -
setPointSourceParams
был добавлен вSpatialAudioTrack
, что позволяет обновлять параметры после построения дорожки. - Добавлен новый класс Scene со ссылками на API
Scenecore
. Сцена будет доступна как свойство расширения сеанса. Функции внутриSessionExt
были перенесены в сцену, поэтому импорт необходимо будет настроить; например,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. -
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. Это можно использовать для рендеринга стереоскопического контента в формате «бок о бок» или «сверху вниз», например стереофотографии, 3D-видео или другие динамически отображаемые пользовательские интерфейсы. Приложения должны использовать MediaPlayer или ExoPlayer для декодирования видео.
- Система компонентов: SceneCore предлагает надежную и гибкую систему компонентов для добавления возможностей к вашему контенту XR, включая возможности для пользователей перемещать, изменять размер и взаимодействовать с моделями и панелями.
- Привязка : при включенной сквозной передаче вы можете прикреплять панели и модели к реальным поверхностям, предоставляя пользователям беспрепятственную интеграцию виртуального контента в их реальную среду.
- Поза пользователя: доступ к местоположению пользователя в виртуальной сцене, чтобы ориентировать контент вокруг положения пользователя.
- SpatialCapabilities : создавайте полностью адаптивные приложения, которые используют пространственные возможности, когда они доступны, такие как трехмерное позиционирование содержимого пользовательского интерфейса. Мало того, ваше приложение может отслеживать изменения возможностей во время работы приложения, чтобы изменять работу в зависимости от того, как пользователь использует свое устройство Android XR.
Известные проблемы
- В настоящее время для использования Jetpack SceneCore требуется minSDK 30. В качестве обходного пути добавьте следующую запись манифеста
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>
чтобы иметь возможность сборки и запуска с minSDK 23. - Сеанс может стать недействительным в различных ситуациях, которые автоматически воссоздают действие, включая изменение размера главной панели, подключение периферийных устройств и переключение между светлым и темным режимом. Если вы столкнулись с проблемами аннулирования сеанса, обходные пути включают в себя запретить изменение размера основной панели, использование объекта динамической панели, отключение воспроизведения активности для определенных изменений конфигурации или отключение изменений тем в светлом/темном режиме.
- Компоненты Movable и Resizable не поддерживаются в GltfEntity.
- Entity.getSize() не поддерживается в GltfEntity.
- Приложения Jetpack XR должны запрашивать разрешение
android.permission.SCENE_UNDERSTANDING
в AndroidManifest. - Создание сеанса поддерживается только на устройстве Android XR. В настоящее время, если вы создадите сеанс и попытаетесь использовать его на устройстве, отличном от Android XR, вы получите исключение RuntimeException.
- Установка для скайбокса значения 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.