Jetpack SceneCore
| Actualización más reciente | Versión estable | Versión potencial | Versión beta | Versión alfa |
|---|---|---|---|---|
| 7 de octubre de 2026 | - | 1.0.0-rc02 | - | - |
Cómo declarar dependencias
Para agregar una dependencia en XR SceneCore, debes agregar el repositorio de Maven de Google a tu proyecto. Consulta el repositorio de Maven de Google para obtener más información.
Agrega las dependencias de los artefactos que necesites en el archivo build.gradle de tu app o módulo:
Groovy
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-rc02" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-rc02" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-rc02") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-rc02") }
Para obtener más información sobre las dependencias, consulta Cómo agregar dependencias de compilación.
Comentarios
Tus comentarios ayudan a mejorar Jetpack. Avísanos si descubres nuevos errores o tienes ideas para mejorar esta biblioteca. Consulta los errores existentes de esta biblioteca antes de crear uno nuevo. Puedes agregar tu voto a un error existente haciendo clic en el botón de la estrella.
Consulta la documentación sobre la herramienta Issue Tracker para obtener más información.
Versión 1.0
Versión 1.0.0-rc02
7 de octubre de 2026
Lanzamiento de androidx.xr.scenecore:scenecore-*:1.0.0-rc02. La versión 1.0.0-rc02 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió una posible fuga de memoria quitando
perceptionRuntimeCacheenSessionExty se refactorizó para recuperarPerceptionRuntimedirectamente de la instancia deSession. (Ie35b1) - Se corrigió una posible fuga de contexto usando
applicationContextpara los identificadores nativos deOpenXRpara garantizar que el tiempo de ejecución nativo no mantenga referencias a un contexto deActivity. (Ie35b1) - Se corrigieron las condiciones de carrera en
XrInstanceManagercon la introducción de un bloqueo de inicialización y sincronización adecuados. (Ie35b1) - Se corrigió
ReferenceCleanerpara admitir la anulación del registro de las acciones de limpieza y se garantizó que las acciones de limpieza deEntityse ejecuten de forma explícita durantedispose(), lo que evita la ejecución duplicada durante la recolección de elementos no utilizados. (Ie35b1) - Se corrigió una fuga de memoria en
ScenequitandosceneCacheenSessionExty refactorizandoScenepara recuperar la instancia directamente desessionConnectors. (Ie35b1)
Versión 1.0.0-rc01
9 de septiembre de 2026
Lanzamiento de androidx.xr.scenecore:scenecore-*:1.0.0-rc01. La versión 1.0.0-rc01 contiene estas confirmaciones.
Cambios en la API
- Se agregó la biblioteca
xr:scenecore:scenecore-openxr. (Ic49f2) - Se quitaron varias APIs obsoletas antes del lanzamiento de la versión estable 1.0.0.
Correcciones de errores
- Se resolvió un error de fuga de memoria en el que el sistema podía retener la referencia de Activity cuando se destruía la Activity. (I6dcd7)
Cambios en el comportamiento
- Se quitó el resultado de logcat de SceneCore. (I10c3c)
Versión 1.0.0-beta02
12 de agosto de 2026
Lanzamiento de androidx.xr.scenecore:scenecore-*:1.0.0-beta02. La versión 1.0.0-beta02 contiene estas confirmaciones.
Correcciones de errores
toMoveEvent()devolveránullsi la entidad principal se recopiló como basura. (Ia7a1b)
Versión 1.0.0-beta01
15 de julio de 2026
Lanzamiento de androidx.xr.scenecore:scenecore-*:1.0.0-beta01. La versión 1.0.0-beta01 contiene estas confirmaciones.
Cambios en la API
- Las APIs de
GltfAnimationySpatialGltfModelAnimationse marcaron como experimentales. Algunas propiedades se convirtieron en métodos getter. (I8d689, b/524771027) - Se quitó el método de fábrica público
MovableComponent.createTrackingMovable. (I00912, b/477169015) - Se convirtió Session.create en una función de suspensión. (I5d27f)
ActivitySpaceyAnchorSpaceahora extienden una claseSpaceEntitycomún que contiene el comportamiento común para las entidades cuyas posiciones controla el sistema (I506ec, b/513619219).- Se actualizó
AnchorEntitypara que se llameAnchorSpace(Ifa95e, b/513619219). - Proporciona la API de prueba pública
SoundEffectPoolComponentTester. (I87df7, b/498104417) - Se agregó un parámetro
cornerRadiusopcional al constructorSurfaceEntity.Shape.Quady se hizo pública la propiedadcornerRadius. Ahora los desarrolladores pueden especificar un radio de esquina cuando crean una forma de cuadrilátero para renderizar lienzosSurfaceEntitycon esquinas redondeadas y consultar el radio de los cuadriláteros existentes. (Ia7809, b/474681085) - Proporciona sobrecargas públicas de las APIs de prueba
SpatialAudioTrackBuilderTester,SpatialAudioTrackTesterySceneCoreTestRule.getTester. (I378c6, b/496333938) - Se agregaron anulaciones especializadas de
toString()para varios tipos de ARCore. Estos tipos tienen como objetivo proporcionar información adicional a los desarrolladores para fines de depuración y no deben usarse en aplicaciones de producción o enviadas.
Versión 1.0.0-alpha16
17 de junio de 2026
Lanzamiento de androidx.xr.scenecore:scenecore-*:1.0.0-alpha16. La versión 1.0.0-alpha16 contiene estas confirmaciones.
Cambios en la API
- Se agregaron sobrecargas para
addVertexData,setIndexDatayaddSubsetaCustomMesh.BuilderFromMeshDatayCustomMesh.BuilderFromMeshBuffer. Estas sobrecargas permiten que los desarrolladores pasen datos y parámetros sin procesar directamente (p.ej.,ByteBuffer,offset,size,topology,indexOffset,indexCount) sin necesidad de unirlos en objetos intermedios comoByteBufferRegionoMeshSubset. (I84d5c) - Se cambió el nombre de
Scene.requestFullSpaceMode()yScene.requestHomeSpaceMode()porrequestFullSpace()yrequestHomeSpace(), respectivamente. Otros métodos y documentación que hacen referencia a "Modo de espacio principal" y "Modo de espacio completo" se actualizaron de manera similar. (I45751) - Se proporcionan las APIs de prueba públicas
PanelEntityTesteryMainPanelEntityTester(I961e4). - Se agregó la propiedad
pointSourceParamsaSoundEffectPoolComponent(I4a750). - Proporciona la API de prueba pública
MovableComponentTester(I0c972). - Proporciona la API de prueba pública
PointerCaptureComponentTester(Ic0d4f). - Proporciona la API pública de prueba
ActivityPanelEntityTester(I837c4). - Proporciona la API pública de prueba
ResizableComponentTester(I0a3a4). - Se proporciona la API de prueba pública
BoundsComponentTester.(Iefd53). - Proporciona la API de prueba pública
SpatialMediaPlayerTester(Ia3e09). - Proporciona la API de prueba pública
SpatialEnvironmentTester(Icf60f). - Proporciona las APIs de prueba públicas
GltfModelTesterySceneCoreTestRule.getGltfModelTester. (I33fcb) - Proporciona la API de prueba pública
InteractableComponentTester. (Ia7096) - Proporciona la API de prueba pública
SurfaceEntityTester. (Ic0740) - Proporciona APIs de prueba públicas
GltfModelEntityTester,TestGltfModelNodeyTestGltfAnimation. (I72c4d) - Proporciona las APIs de prueba públicas
SceneTesterySceneCoreTestRule.sceneTester. (Ib4ec5) - Proporciona las APIs de prueba públicas
PerceptionSpaceTesterySceneCoreTestRule.perceptionSpaceTester. (Icf739) - Proporciona la API de prueba pública
MeshEntityTester. (I63801) - Proporciona sobrecargas públicas de las APIs de prueba
ImageBasedLightingAssetTesterySceneCoreTestRule.getTester. (I57ec4) - Se proporciona la API pública de prueba
TextureTester(Ia865b). - Proporciona la API de prueba pública
PositionalAudioComponentTester(Icd96e). - Proporciona la API de prueba pública
SpatialSoundPoolTester(Ia3531). - Proporciona la API pública de prueba
SoundEffectPoolTester(If349a). - Proporciona las APIs de prueba públicas
ActivitySpaceTesterySceneCoreTestRule.activitySpaceTester. (I2d5c2) - Proporciona la API de prueba pública
SpatialWindowTester(I41837). - Se proporciona la API de prueba pública
AnchorEntityTester(I68404). - Proporciona la interfaz de la API de prueba pública
SceneCoreTestRule. (Ic72d3) - Se agregó la clase
PixelDensityy se expuso a través deScene#virtualPixelDensitypara proporcionar una relación de píxeles por metro basada en hardware para una asignación precisa de dimensiones físicas enActivitySpace. (I0e3ac) - Se agregaron APIs públicas para crear y renderizar mallas personalizadas. (I7ad2f)
- Se actualizó la API de
VertexLayoutpara que use una lista deVertexBufferLayouts, en la que cadaVertexBufferLayoutdescribe los atributos dentro de un solo búfer de vértices. Esto permite una disposición más flexible de los datos de vértices, incluidos los atributos intercalados con pasos y desplazamientos personalizados. (Ic426b) - Proporciona
MovableComponent.createTrackingMovablepara transformar un objeto Trackable de ARCore en una postura relativa al espacio de actividad. (I12249) - Se actualizó el valor predeterminado del elemento principal en
Entity.createa nulo. (Ic3145) Entityse actualizó para que sea una clase en lugar de una interfaz y ahora es la clase base para todos los tipos de Entity. Como parte de este cambio, se quitóBaseEntity. (I7fbc9)GltfModel,ExrImageyImageBasedLightingAssetahora implementanAutoCloseablepara permitir el manejo idiomático de recursos con el bloqueusede Kotlin. (I1ac79)- Se introdujo la clase
ImageBasedLightingAssetpara reemplazarExrImageen la definición de la iluminación del entorno espacial.ExrImagedejó de estar disponible y se quitó de la API pública.SpatialEnvironmentPreferencese actualizó para usarImageBasedLightingAsset. (I6c92a) - Se cambió el nombre del parámetro
skyboxenSpatialEnvironmentaimageBasedLightingAssetpara reflejar mejor su propósito y se aclaró que las texturas visuales de la caja celeste se deben incluir en el parámetro de geometría. (I24d4a) - Las entidades espaciales ahora usan una densidad de dispositivo estable para los cálculos de píxeles a metros en los niveles 1 y 2 de la API de Spatial, lo que garantiza un tamaño coherente independientemente de los cambios en la densidad de la pantalla del sistema. (I37051)
Versión 1.0.0-alpha15
19 de mayo de 2026
Lanzamiento de androidx.xr.scenecore:scenecore-*:1.0.0-alpha15. La versión 1.0.0-alpha15 contiene estas confirmaciones.
Cambios en la API
Entity.dispose()ahora se quitó como API pública. En lugar de llamar adispose()en instancias de Entity, las apps pueden hacer que las instancias sean limpiables configurandoparentennully borrando cualquier referencia sólida a esas instancias. (I396c9)- Se borraron los métodos
set/clearOnLoadCompleteListenerdeSoundEffectPool. Utilizaadd/removeLoadCompleteListeneren lugar de esta función. (Iae78d) - Se reemplazó
set/clearSpatialVisibilityChangedListenerde Scene poradd/removeSpatialVisibilityChangedListener. (I67dff) - Se cambió el nombre de todos los métodos
add/removeOnFooListenerde SceneCore aadd/removeFooListener, y se quitóOndel nombre. (Ibe50b) - Los métodos
AnchorEntity.setOnOriginChangedListeneryAnchorEntity.setOnStateChangedListenerse reemplazaron por métodosadd/removeFooListenerpara admitir varios objetos Listener simultáneos. (I13749) - Se cambió el nombre de
AnchorEntity.State.TIMEDOUTaState.TIMED_OUT. (Id2b8d) - Se refactorizó la API de Componentes para mejorar la seguridad y la extensibilidad.
Componentahora es una clase abstracta. Los métodosonAttach()yonDetach()ahora sonprotectedpara evitar llamadas directas. UsaEntity.addComponent()yEntity.removeComponent()para administrar los ciclos de vida de los componentes. (Id04e8) - Las constantes
PlaneSemanticTypePlaneOrientationde SceneCore se migraron de Ints a tipos personalizados. Se quitarán sus constantesANY, por lo que los clientes deberán enumerar de forma explícita todas las constantes deseadas o usar las nuevas constantes de conjunto inmutable.ALL. El método de fábricaAnchorEntityahora acepta un conjunto de estos tipos, en lugar de un solo valor. (Ib1033) - Se agregó compatibilidad con la animación esquelética (skinning) a la API experimental de Custom Mesh. Ahora los desarrolladores pueden animar mallas personalizadas especificando un
boneCountcuando crean unMeshEntityy actualizan la animación en tiempo real conMeshEntity.setBoneTransforms(). (Id8ba2, b/496692490) - Se introdujo la API experimental de
CustomMesh. Ahora los desarrolladores pueden crear y renderizar de forma programática geometría 3D en sus escenas conCustomMesh,MeshBufferyMeshEntity. (I94617) - Se quitó
androidx.xr.scenecore.SpatializerConstants.SourceType.SOURCE_TYPE_SOUND_FIELD. UsaSourceType.SOUND_FIELDen su lugar. (Ia68b9) - Se agregaron componentes de audio espacial:
PositionalAudioComponent,SoundEffectPoolComponentySoundFieldAudioComponent(Ieda89). - Se reemplazó
AnchorEntity.getAnchorconAnchorEntity.anchory ahora devolverá unAnchorcuando elAnchorEntityse haya creado a partir de unAnchorde ARCore (I5c7c8). - El valor predeterminado del parámetro
parenten los métodos de fábricaActivityPanelEntity,GltfModelEntity,GroupEntity,PanelEntityySurfaceEntitycambió deActivitySpaceanull. Para adjuntar una entidad al grafo de la escena y renderizarla visible, los desarrolladores ahora deben establecer de forma explícita su elemento superior durante la creación de instancias o a través deEntity.parent = ...(Ie7cc1).
Correcciones de errores
SceneCoreahora reclama automáticamente las instancias deEntitycuando se vuelven alcanzables de forma fantasma, lo que elimina la necesidad de que los desarrolladores invoquen explícitamentedispose()para liberar recursos. Para garantizar que una instancia de [Entity] se recupere correctamente, los desarrolladores deben hacer lo siguiente:- Desconéctalo del grafo de la escena configurando su
parentennull. - Renunciar a todas las referencias sólidas a la instancia en su código
- Nota sobre los tipos de entidades especiales: Para las entidades que no pueden tener una entidad principal (como
AnchorEntity), los desarrolladores deben mantener una referencia sólida mientras la instancia esté en uso. Si se liberan todas las referencias, estas instancias se volverán alcanzables de forma fantasma y se recuperarán automáticamente. (I83fe4)
- Desconéctalo del grafo de la escena configurando su
- Se redujeron las reglas de Proguard keep para todas las bibliotecas de
SceneCore. (I98447)
Errores conocidos
- Si adjuntas un
PositionalAudioComponenta unEntitycon una instancia deExoPlayerinactiva, se producirá una falla. No llames asetPointSourceParamsni adjuntes o separes los componentes de audio espacial mientras ExoPlayer esté detenido. Se solucionará este problema en la próxima versión.
Versión 1.0.0-alpha14
6 de mayo de 2026
Lanzamiento de androidx.xr.scenecore:scenecore-*:1.0.0-alpha14. La versión 1.0.0-alpha14 contiene estas confirmaciones.
Cambios en la API
TrackingStateyVpsAvailabilityResultse movieron aandroidx.xr.arcore package, y los tipos enandroidx.xr.runtimeahora están obsoletos. (Ic7930, b/480462213)- Se cambió el nombre de
Plane.TypeaPlaneType. (I8c90c, b/482675376) - Se cambió el nombre de
Plane.LabelaPlaneLabel. (Ic6b67, b/482675376) androidx.xr.runtime.FieldOfViewquedó obsoleto. Usaandroidx.xr.runtime.math.FieldOfViewen su lugar. (Ia01a0, b/480233045)- El nombre de
Matrix4.posecambió porMatrix4.toPose(). La propiedad de posición ahora está obsoleta. (I329b4, b/493383490) - Se cambiaron los nombres de los valores de enumeración
HandJointType. (Ifbc83, b/482670596) - Se expusieron
Component.onAttachyonDetachcomo API públicas para permitir implementaciones personalizadas deComponent. (I0ca1f) - Se agregaron componentes de audio espacial (I39ddd, b/489421980, b/436642086, b/436642499).
- Quita la entidad de
PointSourceParams. En su lugar, la entidad se usará directamente conSpatialAudioTrack,SpatialSoundPoolySpatialMediaPlayer(Ib3685, b/489421980, b/436634048). - Se cambió el nombre de
DeviceTrackingMode.LAST_KNOWNaSPATIAL_LAST_KNOWN(con un resguardo obsoleto), se agregóINERTIAL_LAST_KNOWNpara el seguimiento de 3DoF y se agregóTRACKING_DEGRADEDaTrackingState. (Ie661c, b/445466590) GroupEntityquedó obsoleto. Para tener una entidad solo con la funcionalidad básica de Entity, llama aEntity.create, que devolverá una interfaz de Entity. (I4c450, b/473867483)- Se agregó la API de
XrLog. EstableceXrLog.isEnabledentruepara habilitar el registro en JetpackXR y usaXrLog.Levelpara establecer el nivel de registro. (I76a1f, b/463460895, b/487378441)
Correcciones de errores
- El valor predeterminado de
Scene.keyEntityahora esmainPanelEntity. (I6a3ef)
Versión 1.0.0-alpha13
25 de marzo de 2026
Lanzamiento de androidx.xr.scenecore:scenecore-*:1.0.0-alpha13. La versión 1.0.0-alpha13 contiene estas confirmaciones.
Cambios en la API
- Se quitó la marca
unscaledGravityAlignedActivitySpacedeSession.create.ActivitySpaceahora siempre está sin escalar y alineado con la gravedad. (If6f11, b/458173423) - Se quitaron las funciones
setMaterialOverrideyclearMaterialOverrideobsoletas deGltfModelEntity, que ahora se llaman en elGltfModelNodeindividual. (I2e5d2) - Se agregaron
transformPixelCoordinatesToLocalPositionytransformNormalizedCoordinatesToLocalPositionaPanelEntity, y se quitaron los métodos experimentales equivalentes que devolvían poses en lugar de posiciones deVector3. (Ib6960, b/460123106, b/458333591) - Se agregaron APIs de
GltfAnimationpara controlar las animaciones de glTF enSceneCore. (I2c172, b/466065486, b/465819070, b/465818617) - Se cambió el nombre de
ScenePose.activitySpacePoseaScenePose.poseInActivitySpace(I8f175, b/427822261). - Se agregó la implementación del tiempo de ejecución proyectado de Scenecore (I9c4ab, b/476440158).
- Cuando cambias el tamaño de la entidad del panel principal, es posible que se vuelva a colocar en el origen
ActivitySpace. No hay ninguna solución alternativa, excepto volver a colocar el panel manualmente o de forma programática en su ubicación original. Este error se corregirá en una versión futura. (b/489427007). - En algunos casos, es posible que la indicación visual de
MovableComponentno aparezca paraSurfaceEntityni para otros tipos de entidades que no sean del panel. Si configurasMovableComponent.sizede forma explícita, aparecerá la ayuda visual. Este error se corregirá en una versión futura (b/490983469).
Versión 1.0.0-alpha12
25 de febrero de 2026
Lanzamiento de androidx.xr.scenecore:scenecore-*:1.0.0-alpha12. La versión 1.0.0-alpha12 contiene estas confirmaciones.
Errores conocidos
- Las entidades ancladas pueden pasar de su posición anclada al origen del espacio de actividad después de unos segundos.
- Es posible que las apps fallen cuando se creen instancias de
SurfaceEntity. Este problema se resolvió enandroidx.xr.scenecore:scenecore-*:1.0.0-alpha13y versiones posteriores. Las apps afectadas deben actualizarse a las versiones más recientes.
Cambios en la API
- Se cambió el nombre de
ActivitySpace.addOnSpaceUpdatedListeneryActivitySpace.removeOnSpaceUpdatedListenerporaddOnOriginChangedListeneryremoveOnOriginChangedListener. Se cambió el nombre deAnchorEntity.setOnSpaceUpdatedListenerporsetOnOriginChangedListener. (I5d8fb) - Se agregó la propiedad de nombre público a
FakeEntityy se hizo pública la vista enFakePanelEntity. (Ifa1f9)
Correcciones de errores
- Se corrigieron los cálculos de densidad de píxeles en imágenes del sistema más recientes (I57d04).
Versión 1.0.0-alpha11
28 de enero de 2026
Lanzamiento de androidx.xr.scenecore:scenecore-*:1.0.0-alpha11. La versión 1.0.0-alpha11 contiene estas confirmaciones.
Cambios en la API
- Se cambió el nombre de
PerceivedResolutionResult.InvalidCameraViewaPerceivedResolutionResult.InvalidRenderViewpoint, ya que las APIs degetPerceivedResolutionahora dependen de la API deRenderViewpointde ARCore en lugar deCameraViewScenePose. Este nombre refleja mejor la nueva implementación. (I8c967, b/446989745, b/419311998) - Los métodos
PanelEntity/SurfaceEntity.getPerceivedResolutionahora toman unRenderViewpointproporcionado por el desarrollador como argumento. Antes, el tiempo de ejecución elegía de forma arbitraria elRenderViewpointque se usaba en el cálculo de la resolución percibida. (I8c967, b/446989745, b/419311998) - Se quitaron
SpatialUser,ScenePose.HeadyScenePose.CameraView. La funcionalidad de estas APIs se incluye en las APIs deArDeviceyRenderViewpointdentro de ARCore para Jetpack XR. Para obtener unScenePosecorrespondiente a la cabeza del usuario o a su ojo izquierdo o derecho, los desarrolladores pueden usarPerceptionSpace.getScenePoseFromPerceptionPosecon la postura adecuada obtenida a través de las APIs de ARCore. (I2f69c, b/446989745)
Versión 1.0.0-alpha10
3 de diciembre de 2025
Lanzamiento de androidx.xr.scenecore:scenecore-*:1.0.0-alpha10. La versión 1.0.0-alpha10 contiene estas confirmaciones.
Cambios en la API
- Se agregaron
transformPixelCoordinatesToPoseytransformNormalizedCoordinatesToPoseaPanelEntity(I462b3). - Se agregó una clase auxiliar, Utils, al tiempo de ejecución de
SceneCorebasada en la lógica deSceneCore(I570b9).
Correcciones de errores
- Se corrigió una posible falla que podía ocurrir cuando se destruía la sesión y se recibía un
SpatialModeChangeEvent(If44e8). - Se corrigió un error que podía provocar que se arroje un
IllegalStateExceptional salir de una actividad o volver a ingresar en ella. (Ibff1c)
Versión 1.0.0-alpha09
19 de noviembre de 2025
Lanzamiento de androidx.xr.scenecore:scenecore-*:1.0.0-alpha09. La versión 1.0.0-alpha09 contiene estas confirmaciones.
Nuevas funciones
- Agrega una API para recuperar un
ScenePoseque representa la composición de la postura de origen del espacio de percepción y una postura con respecto al origen del espacio de percepción. (I5b50a) - Se agregó la función
getGravityAlignedPose. La pose alineada por gravedad ignora la inclinación y el balanceo de la rotación. (I5ae21) - Los tipos de constantes de
AnchorEntity.Statese cambiaron de Ints a subtipos de State. (Ib0c49) - Se agregó
getChildren()a la interfaz de Entity. Se actualizó el ciclo de vida deMainPanelEntity. (Ia69d6)
Cambios en la API
- Los tipos de constantes
PointerCaptureComponent.PointerCaptureStatese cambiaron de Ints a subtiposPointerCaptureState. (Ic888a) Scene.spatialCapabilitiesahora es de tipoSet<SpatialCapability>en lugar de un campo Int. Se cambió el nombre de las constantesSpatialCapability. (I9c109)- Se cambiaron los nombres de los tipos de constantes
SurfaceEntityy se modificaron de Ints a subtiposSurfaceEntity. (I419ed) - Se cambiaron los nombres de los tipos de constantes
SpatializerConstanty se modificaron de Ints a subtiposSpatializerConstant. (Ia0e18) - Se cambiaron los nombres de los tipos de constantes
TextureSamplery se modificaron de Ints a subtiposTextureSampler. (I44078) - Los tipos de constantes
SpatialVisibilityse cambiaron de Ints a subtiposSpatialVisibility. (I70739) - Se cambiaron los nombres de los tipos de constantes
ResizeEvent.ResizeStatey se modificaron de Ints a subtiposResizeState. (I384d5) - Se cambió el nombre de los tipos de constantes
InputEventy se modificaron de Ints para que hereden de su respectivo tipo de inclusión. (I82817) - Los tipos de constantes
GltfModelEntity.AnimationStatese cambiaron de Ints a subtiposAnimationState. (I24f4e) - Se cambiaron los nombres de los tipos de constantes
AlphaModey se modificaron de Ints a subtiposAlphaMode. (I27b56) - Los tipos de constantes
Spacese cambiaron de Ints a subtipos de Space. (I9255b) ScenePose.hitTesty los métodos relacionados ahora devuelvennullsi no se encontró ninguna intersección, en lugar de unHitTestResultcon unhitPositionnulo.HitTestResult.hitPositionya no admite valores nulos. (I1400a)- Se cambiaron las referencias de
ActivityPoseaScenePose. (I7fe43)
Versión 1.0.0-alpha08
22 de octubre de 2025
Lanzamiento de androidx.xr.scenecore:scenecore-*:1.0.0-alpha08. La versión 1.0.0-alpha08 contiene estas confirmaciones.
Cambios en la API
- Se cambió el nombre de
ActivityPanelEntity.moveActivityatransferActivity. (I273c5, b/430332856)
Correcciones de errores
- Se agregaron
:xr:scenecore:scenecore-spatial-renderingy:xr:scenecore:scenecore-spatial-corecomo dependencia de implementación de:xr:scenecore:scenecore(I6ab65, b/447000520). - Se arroja una excepción si se accede a
session.scenedespués de la destrucción de la sesión. (I77e6f)
Versión 1.0.0-alpha07
24 de septiembre de 2025
Lanzamiento de androidx.xr.scenecore:scenecore:1.0.0-alpha07, androidx.xr.scenecore:scenecore-guava:1.0.0-alpha07 y androidx.xr.scenecore:scenecore-testing:1.0.0-alpha07. La versión 1.0.0-alpha07 contiene estas confirmaciones.
Cambios en la API
- Se cambió el nombre de
fixedAspectRatioaisFixedAspectRatioEnabledy se convirtió en una propiedad booleana (I5c4e8, b/440588971). - Los objetos
Scenecoresimulados ahora se encuentran en el móduloxr:scenecore:scenecore-testing. (Idd951) - Se cambió el nombre de
shouldAutoHideContentaisAutoHideContentWhileResizingEnabledy el deshouldAlwaysShowOverlayaisAlwaysShowOverlayEnabled(I97c36, b/432335421). - Se actualizaron las constantes
SceneCoreTextureSamplerpara mejorar la legibilidad. Por ejemplo,TextureSampler.MinFilter.LINEARahora esTextureSampler.MIN_FILTER_LINEAR(Ib159c). - El setter
setKeyEntityde la escena se combinó en la variablekeyEntity. Si se configurakeyEntityen una entidad inamovible, comoAnchorEntity, se arrojará unIllegalArgumentExceptionen lugar de devolver un valor booleano falso. (I62080, b/428721695, b/422215745) - Se reemplazó la variable
SpatialModeChangeListenerde Scene porsetSpatialModeChangedListener. Toma unConsumer<SpatialModeChangeEvent>en lugar de unSpatialModeChangedListener. Ahora,setSpatialModeChangedListenerpuede tomar un Executor de forma opcional. (I62080, b/428721695, b/422215745) - Se quitó el parámetro
bundledeActivityPanelEntity.startActivity(I64344, b/430332856, b/430333040). - Se cambió el nombre de
SpatializerConstants.SOURCE_TYPE_BYPASSaSpatializerConstants.SOURCE_TYPE_DEFAULT. (Ifc7fe, b/422215565) - Se agregó la constante
SpatialSoundPool.PLAY_FAILED. (Ifc7fe, b/422215565) - Se agregaron argumentos predeterminados a los métodos
SpatialSoundPool.play. (Ifc7fe, b/422215565) - Se quitó el valor de devolución de los métodos de configuración en
SpatialAudioTrackBuilder. (Ifc7fe, b/422215565) - Cambios en SurfaceEntity
- Se cambió el nombre de
SurfaceEntity.CanvasShapeaShape. - Se cambió el nombre de
SurfaceEntity.CanvasShape.Vr180HemisphereaHemisphere. - Se cambió el nombre de
SurfaceEntity.CanvasShape.Vr360SphereaSphere. - Se cambió el nombre de
SurfaceEntity.EdgeFeatheringParams.SmoothFeatheraRectangleFeather. - Se cambió el nombre de
SurfaceEntity.EdgeFeathingParams.SolidEdgeaNoFeathering. - Se cambió el nombre de
SurfaceEntity.ContentSecurityLevelaSurfaceProtection. SurfaceEntity.ContentSecurityLevel.{values}agregó un prefijoSURFACE_PROTECTION_.SurfaceEntity.SuperSampling.{$values}agregó un prefijoSUPER_SAMPLING_SurfaceEntity.StereoMode.{values}agregó un prefijoSTEREO_MODE_- Se cambió el nombre de
SurfaceEntity.ContentColorMetadata.maxCLLamaxContentLightLevel(I7eb5f, b/422216050, b/427529950).
- Se cambió el nombre de
- Se cambió el nombre de
launchActivityastartActivity(I7db90, b/430332856). - Se quitó
Scene.activitySpaceRoot. UsaScene.activitySpaceen su lugar. (I05ee8, b/378706624, b/422215745) - Se cambiaron los nombres de
configureBundleForFullSpaceModeLaunchyconfigureBundleForFullSpaceModeLaunchWithEnvironmentInheritedacreateBundleForFullSpaceModeLaunchycreateBundleForFullSpaceModeLaunchWithEnvironmentInherited, respectivamente, y se movieron al archivo LaunchUtils.kt como métodos de nivel superior y toman Session como primer parámetro (I64a2c, b/437186050). - La fábrica
GroupEntityahora devuelve el tipoGroupEntityen lugar de Entity. (I66042)
Correcciones de errores
- Arroja un
IllegalStateExceptioncuando se usa una instancia de entidad después de la eliminación. (I90990, b/427314036, b/432063442)
Versión 1.0.0-alpha06
13 de agosto de 2025
Lanzamiento de androidx.xr.scenecore:scenecore:1.0.0-alpha06, androidx.xr.scenecore:scenecore-guava:1.0.0-alpha06 y androidx.xr.scenecore:scenecore-testing:1.0.0-alpha06. La versión 1.0.0-alpha06 contiene estas confirmaciones.
Cambios en la API
- Se quitaron las restricciones de las APIs de
BaseEntityyBaseScenePosedeSceneCore(88c0ff6).
Versión 1.0.0-alpha05
30 de julio de 2025
Lanzamiento de androidx.xr.scenecore:scenecore-guava:1.0.0-alpha05, androidx.xr.scenecore:scenecore-testing:1.0.0-alpha05 y androidx.xr.scenecore:scenecore:1.0.0-alpha05. La versión 1.0.0-alpha05 contiene estas confirmaciones.
Nuevas funciones
- Se agregó la API de Perceived Resolution a Panel Entities y
SurfaceEntities. (I118f6) - Se agregaron métodos de devolución de llamada
PerceivedResolutiona Scene.kt para supervisar la resolución percibida del panel principal de la actividad en el HSM. (I58084) SurfaceEntity: Se agregó compatibilidad para que la aplicación solicite el supermuestreo en el momento de la creación. Esto permite que las aplicaciones usen el filtro de supermuestreo para el suavizado. (I06913)- Se agregó la propiedad
recommendedContentBoxInFullSpaceaActivitySpace. Devuelve una caja recomendada para colocar contenido cuando se está en el modo de espacio completo. (I4cd6f) - Se proporcionó un constructor sobrecargado para el modificador movible que permite el anclaje. (Ic0c70)
Cambios en la API
En esta versión, se realizaron cambios significativos en la API de SceneCore. Se cambiaron los nombres de varias clases o se movieron a diferentes módulos, y la mayoría de los métodos getter/setter se reemplazaron por propiedades de Kotlin. Si bien prevemos que habrá cambios rotundos en la API hasta el lanzamiento de nuestra primera versión beta, no serán tan disruptivos ni numerosos.
- Se cambiaron los nombres o se movieron las siguientes clases e interfaces:
androidx.xr.scenecore.PixelDimensionsaandroidx.xr.runtime.math.IntSize2d;androidx.xr.scenecore.Dimensionsaandroidx.xr.runtime.math.FloatSize3d;androidx.xr.scenecore.ActivityPoseaScenePose,androidx.xr.scenecore.ContentlessEntityaGroupEntity,androidx.xr.scenecore.PlaneTypeaPlaneOrientation;androidx.xr.scenecore.PlaneSemanticaPlaneSemanticType. (Ifd405)(I3b622) (If534d) - Se hicieron privados varios métodos de configuración para las propiedades de
Scene; no se pretendía que los clientes deSceneCorelos mutaran:activitySpace,activitySpaceRoot,mainPanelEntity,perceptionSpace,spatialCapabilities,spatialEnvironmentyspatialUser. (I2f506) - En Entity, se cambiaron los siguientes elementos a propiedades:
get/setParent(),setContentDescription; se dejó de usarEntity.is/setHidden(), usaEntity.is/setEnableden su lugar. (Ibc4c6) - Se quitó la clase
androidx.xr.scenecore.BasePanelEntity. En su lugar, usaPanelEntitydirectamente. Se reemplazaron los métodos get y set paraPanelEntitypor propiedades. Se cambió la propiedadPanelEntity.sizedeFloat3dSizeaFloat2dSize. Se quitó el métodoandroidx.xr.scenecore.PanelEntity.getPixelDimensionsobsoleto. UsagetSizeInPixelsen su lugar. (Icc174) - Se reemplazó
androidx.xr.scenecore.OnSpaceUpdatedListenerconRunnable. (I19308) - Se reemplazó
SpatialUser.getCameraViews()por una propiedad. (Ib0cc5) ParaExrImageyGltfModel:, se cambiaron los métodoscreatepara que sean funciones de suspensión; se modificaron los parámetros de creación para que acepten unUrio unPathen lugar de unString. (Id8883) (I0d247), (I25706) - Se trasladaron
SpatialEnvironment.requestFullSpaceModeySpatialEnvironment.requestHomeSpaceModea Scene. Por ejemplo, usasession.scene.requestFullSpaceMode()en lugar desession.scene.spatialEnvironment.requestFullSpaceMode().addOnPassthroughOpacityChangedListeneryaddOnSpatialEnvironmentChangedListenerahora tienen anulaciones que aceptan ejecutores opcionales. (I12fe0) (I6b21e) - Se quitaron los siguientes métodos
SpatialEnvironmentobsoletos:togglePassthrough,setPassthrough,setPassthroughOpacity,getPassthroughMode,getPassthroughOpacity,setSkyboxysetGeometry. También se quitó la claseSpatialEnvironment.PassthroughModeobsoleta (I927bd) (I927bd) (I927bd). - Se reemplazaron los siguientes métodos de obtención y configuración de
SpatialEnvironmentpor propiedades de Kotlin:getCurrentPassthroughOpacity(),get/setPassthroughOpacityPreference(),get/setSpatialEnvironmentPreference(),isSpatialEnvironmentPreferenceActive()(I33a7b) (Ie06e2) (Ie06e2). - El tipo de
SpatialEnvironmentPreference.preferredPassthroughOpacitycambió deFloat?aFloat. Ya no acepta valores nulos. En cambio, se usaSpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCEpara indicar que no hay preferencia de opacidad. (I40107) - Se actualizó el parámetro
windowBoundsPxapixelDimensionsy su tipo de Rect aIntSize2den el método create. (I1926e) - El constructor
SpatialEnvironmentahora es interno (I75a51). - Se reemplazaron las clases
SpatialPointerIconNoneySpatialPointerIconCirclepor los objetos complementariosSpatialPointerIcon.NONEySpatialPointerIcon.CIRCLE(I416d2). SpatialPointerIconenSpatialPointerComponentya no es anulable. UsaSpatialPointerIcon.DEFAULTen lugar de null para indicar que se debe usar el ícono de puntero predeterminado del sistema. (I416d2)- Se reemplazó
androidx.xr.scenecore.AnchorEntity.getState()por una propiedad de solo lectura. Se cambiaron los nombres de los parámetros en el métodoAnchorEntity.create()para mayor claridad. En los métodos deAnchorEntitypara configurar y agregar objetos de escucha, el objeto de escucha se movió al argumento final para habilitar las lambdas finales. Se reemplazóandroidx.xr.scenecore.OnStateChangedListenerporAnchorEntityconConsumer<AnchorEntity.State>. (I472e0) GltfModelEntity.getAnimationState()ahora es una propiedad. (I10b29)- Se reemplazó
ActivitySpace.getBounds()por una propiedad. Se cambió el nombre deActivitySpace.addBoundsChangedListeneraActivitySpace.addOnBoundsChangedListener. Se reemplazóActivitySpace.setOnSpaceUpdatedListenerpor métodos de agregar o quitar. (I4c956) - Se cambió el nombre de
AnchorPlacement: planeTypeFilteraanchorablePlaneOrientationsy el deplaneSemanticFilteraanchorablePlaneSemanticTypes. Agregar unMovableComponenta unAnchorEntityoActivitySpacedevolverá falso, se cambió el nombre deMoveListeneraEntityMoveListener shouldDisposeParentAnchor, se cambió el nombre deEntityMoveListener shouldDisposeParentAnchoradisposeParentOnReAnchor systemMovable, se quitó de la funcióncreatey se reemplazó porcreeateCustomMovable,createSystemMovableycreateAnchorable(If11c4). - Se quitó
SurfaceEntity.featherRadiusX/Yy se agregó un concepto de claseEdgeFeatheringParams. (Ic78fc) - El método
PanelEntity.enablePanelDepthTest()se reemplazó por la propiedadpanelClippingConfig. EstableceScene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true)para habilitar la prueba de profundidad o establécelo enPanelClippingConfig(isDepthTestEnabled = false)para inhabilitarla. (I0cbe0) Scene.mainPanelEntityahora es de tipoMainPanelEntityen lugar dePanelEntity(I7125a).- Se cambió el nombre del método
setFullSpaceModede Scene porconfigureBundleForFullSpaceModeLaunchy el del métodosetFullSpaceModeWithEnvironmentInheritedporconfigureBundleForFullSpaceModeLaunchWithEnvironmentInherited. (I0cbe0) (I0cbe0) - Se cambiaron los nombres de los valores UNKNOWN, OUTSIDE_FOV, PARTIALLY_WITHIN_FOV y WITHIN_FOV de
SpatialVisibilitya SPATIAL_VISIBILITY_UNKNOWN, SPATIAL_VISIBILITY_OUTSIDE_FIELD_OF_VIEW, SPATIAL_VISIBILITY_PARTIALLY_WITHIN_FIELD_OF_VIEW y SPATIAL_VISIBILITY_WITHIN_FIELD_OF_VIEW, respectivamente (Ie7e8c). - Se reemplazó la clase
SpatialVisibilitypor un objeto público con valores Int const.setSpatialVisibilityChangedListenerahora acepta unConsumer<Int>en lugar deConsumer<SpatialVisibility>(Ie7e8c) - Se cambió el nombre de las constantes de
PointerCaptureComponenty se movieron al objetoPointerCaptureComponent.PointerCaptureState(I9c7ac). - Se reemplazó
PointerCaptureComponents' StateListenerconConsumer<Int>. (I9c7ac) - Se reemplazó
InputEventListenerporConsumer<InputEvent>(I9c7ac). setPreferredAspectRatiose movió de la clase Scene al objetoSpatialWindowy toma Session como primer parámetro. (I7b717)Entity.setHidden()se reemplazó porEntity.setEnabled()yEntity.isHidden()se reemplazó porEntity.isEnabled().setHidden(false)es igual asetEnabled(true)yisHidden() == !isEnabled(). (Icf0de)- El tipo de
Entity.contentDescriptioncambió de String aCharSequence. (Ie59be) Session.createySession.configureahora arrojanSecurityExceptioncuando no se otorgaron los permisos suficientes en lugar de devolverSessionCreatePermissionsNotGrantedoSessionConfigurePermissionsNotGranted. (I7c488)ResizableComponent.createahora requiere unConsumer<ResizeEvent> ResizeEventListener. Se reemplazóConsumer<ResizeEvent> ResizableComponent.sizeporResizableComponent.affordanceSize ResizableComponent.minimumSize, se cambió el nombre deResizableComponent.minimumEntitySize ResizableComponent.maximumSizeaResizableComponent.maximumEntitySize, se cambió el nombre deResizableComponent.autoHideContentaResizableComponent.shouldAutoHideContenty se cambió el nombre deResizableComponent.forceShowResizeOverlayaResizableComponent.shouldAlwaysShowOverlay. (I97a2d)- Se redujo
minSDKa 24 paraandroidx.xr.scenecoreyandroidx.xr.compose. Los paquetes de XR aún requieren el nivel de API 34 en el tiempo de ejecución. (I17224) - Se quitó la restricción de
RequiresApi(34)en todos los paquetes de Jetpack XR. Esta restricción era redundante, ya que Jetpack XR actualmente solo está disponible en dispositivos con el nivel de API 34 y versiones posteriores. (Iae0f8) - El artefacto
SceneCoreprincipal (xr:scenecore:scenecore) solo contendrá APIs asíncronas de estilo Kotlin. Los desarrolladores de Java pueden depender de la bibliotecaxr:scenecore:scenecore-guavapara acceder a las APIs compatibles. (If221b) - Los proyectos lanzados con Kotlin 2.0 requieren que se consuma KGP 2.0.0 o una versión posterior (Idb6b5).
- Esta biblioteca ahora usa anotaciones de nulabilidad de JSpecify, que son de uso de tipo. Los desarrolladores de Kotlin deben usar el siguiente argumento del compilador para aplicar el uso correcto:
-Xjspecify-annotations=strict(este es el valor predeterminado a partir de la versión 2.1.0 del compilador de Kotlin) (Ia8420). - Todos los métodos asíncronos que devuelven
ListenableFuturese reemplazaron por funciones de suspensión de Kotlin. Los desarrolladores de Java que deseen usar métodos asíncronos basados enListenableFutureen lugar de funciones de suspensión de Kotlin ahora deben usar funciones de extensión en:xr:scenecore-scenecore-guava. Por ejemplo,GuavaExrImagecontiene las funciones asíncronas de ExrImage equivalentes a Guava,GuavaScenePosecontiene las funciones asíncronas deScenePoseequivalentes a Guava,GuavaGltfModelcontiene las funciones asíncronas deGuava-equivalent GltfModel, etcétera. (If7283) (I0af60) (If7283) (Ia8515) (I4efdf) (I54bbf) (I3467a) (I82a33)
Correcciones de errores
- Se actualizó la regla
ProGuardde Jetpack XR Scenecore para evitarAbstractMethodErroren clientes minimizados. (I91a01) - Se agregaron correcciones adicionales para admitir la reducción de Proguard para
SceneCorede Jetpack XR (I4f47e). - Se corrigió un error por el que un
InteractableComponentpodía provocar una falla si elhitPositionen el HitInfo delInputEventpodía fallar si elhitPositionque devolvía el sistema era nulo (I7a695). - Se cambiaron los nombres de los valores de Config *Mode para reflejar su comportamiento. (I6d247)
- Se corrigieron problemas con el FOV y
HitTestenSceneCoreTestApp. (I2c51e) - Se corrigió un error en
SpatialCapabilities.hasCapability()que devolvía verdadero si alguna de las capacidades pasadas con un OR bit a bit era verdadera en lugar de devolver verdadero solo si todas eran verdaderas. (I2cd40) SurfaceEntity.StereoMode.TOP_BOTTOMse actualizó para que el mapa superior se muestre en el ojo izquierdo y el mapa inferior, en el ojo derecho. (I4ae68)
Versión 1.0.0-alpha04
7 de mayo de 2025
Lanzamiento de androidx.xr.scenecore:scenecore:1.0.0-alpha04 y androidx.xr.scenecore:scenecore-testing:1.0.0-alpha04. La versión 1.0.0-alpha04 contiene estas confirmaciones.
Nuevas funciones
- El control de la acción de volver ahora funcionará en las entidades de panel sin actividades incorporadas. Para que el control de la acción de volver funcione, debes especificar
android:enableOnBackInvokedCallback= "true"en el manifiesto de Android. StereoSurfaceEntityahora admite la reproducción de MV-HEVC a través de dos nuevos valores deStereoMode: MULTIVIEW_LEFT_PRIMARY y MULTIVIEW_RIGHT_PRIMARY.PanelEntity.setSizeyPanelEntity.getSizeahora devuelven tamaños en el espacio principal.Entity.setPose,Entity.getPose,Entity.setScale,Entity.getScale,Entity.setAlphayEntity.getAlphaahora toman un nuevo parámetrorelativeTo, que permite obtener o establecer valores relativos a diferentes espacios. Los valores admitidos son los espacios de Parent, Activity y Real World, y el valor predeterminado para este parámetro es Parent.- Se agregaron métodos de extensión de devolución de llamada de visibilidad espacial a
SessionExt.ktpara supervisar cuándo el contenido de la escena se mueve dentro o fuera del campo visual del usuario. - Se agregó
setPointSourceParamsaSpatialAudioTrack, lo que permite actualizar los parámetros después de que se haya creado el segmento. - Se agregó una nueva clase, Scene, con referencias a las APIs de
Scenecore. Se podrá acceder a Scene como una propiedad de extensión de Session. Las funciones dentro deSessionExtse movieron a Scene, por lo que se deberán ajustar las importaciones; por ejemplo,SessionExt.getScene(session).addSpatialCapababilitiesChangedListenercontraSessionExt.addSpatialCapabilitiesChangedListener - Se agregó
ActivityPose.hitTestAsync, lo que permite unhitTestcontra el contenido virtual. - Se agregó un nuevo tipo de componente
SpatialPointerComponent, que permite a los clientes especificar el ícono que se renderiza para el puntero o inhabilitar el ícono. Actualmente, este componente solo se puede adjuntar a instancias dePanelEntity. - Se presentó la nueva fábrica
PanelEntity, que toma las dimensiones del panel en metros o píxeles. Se quitó la fábricaPanelEntityanterior que tomaba dos parámetros de tipo Dimension para el panel.
Cambios en la API
- Se quitó la restricción de
RequiresApi(34)en todos los paquetes de Jetpack XR. Esta restricción era redundante, ya que Jetpack XR actualmente solo está disponible en dispositivos con el nivel de API 34 y versiones posteriores. (Iae0f8) - Los proyectos lanzados con Kotlin 2.0 requieren que se consuma KGP 2.0.0 o una versión posterior (Idb6b5).
- Se quitó la clase
PermissionHelper. PanelEntity.getPixelDensityya no está disponible.- Se quitaron
PanelEntity.setPixelDimensionsyPanelEntity.getPixelDimension, y se reemplazaron porsetSizeInPixelsygetSizeInPixels. - Se quitó
Entity.getActivitySpaceAlpha. Se puede reemplazar porEntity.getAlpha(Space.Activity). - Se quitó
Entity.getWorldSpaceScale. Se puede reemplazar porEntity.getScale(Space.REAL\_WORLD). - Se borró la clase Session en
SceneCorey se reemplazó por la clase Session en el tiempo de ejecución de XR. - El nombre de
StereoSurfaceEntitycambió porSurfaceEntity. - Se quitaron
Entity.setSizeyEntity.getSize, y se agregaron los mismos métodos aPanelEntity. - El nombre de
PointSourceAttributescambió porPointSourceParams. - El nombre de
SpatializerConstants.SOURCE\_TYPE\_BYPASScambió porSpatializerConstants.SOURCE\_TYPE\_DEFAULT. - Se modificó la entidad
PointSourceParamsde acceso público a interno. - Ahora,
AnchorEntity.createrequiere que se configurePlaneTrackingModeenSession.configure(). - Las APIs de
SpatialUserahora requieren que se configureHeadTrackingModeenSession.configure(). - Cuando
ResizableComponentno está adjunto, se proporcionará un registro de nivel INFO en lugar de un registro de nivel ERROR. - La clase Fov ahora es una clase de Kotlin normal.
- Divide
Entity.ktpara colocar cada tipo de entidad concreta en su propio archivo. - Cuando se crea un
PanelEntitynuevo, la mayoría de las Views se reasignan como secundarias de unFrameLayout. Esto facilita el uso deLayoutInspectorcon los paneles espaciales. - La instancia de
XrExtensionsque se usa actualmente ahora está registrada en la plataforma, de la mejor manera posible, para ayudar con la depuración de la app.
Correcciones de errores
- Se agregó una corrección para evitar una falla que podía ocurrir cuando se movía un
PanelEntityconMovableComponentyAnchorPlacement. - Se solucionó un problema por el que
ResizableComponentproporcionaba tamaños obsoletos en la devolución de llamadaonResizeStart. - Se corrigió la falla que se producía cuando se llamaba varias veces al
dispose()deJxrPlatformAdapterAxr.
Versión 1.0.0-alpha03
26 de febrero de 2025
Lanzamiento de androidx.xr.scenecore:scenecore:1.0.0-alpha03 y androidx.xr.scenecore:scenecore-testing:1.0.0-alpha03. La versión 1.0.0-alpha03 contiene estas confirmaciones.
Nuevas funciones
- Ahora se admite la minimización de Proguard para el código de Jetpack XR
Correcciones de errores
- Se agregaron correcciones adicionales para admitir la minimización de Proguard para Jetpack XR SceneCore (I4f47e).
- Se actualizó la regla
ProGuardde Jetpack XR Scenecore para evitarAbstractMethodErroren clientes minimizados. (I91a01)
Versión 1.0.0-alpha02
12 de febrero de 2025
Lanzamiento de androidx.xr.scenecore:scenecore:1.0.0-alpha02 y androidx.xr.scenecore:scenecore-testing:1.0.0-alpha02. La versión 1.0.0-alpha02 contiene estas confirmaciones.
Próximo cambio rotundo que afectará a las apps compiladas antes de la versión 1.0.0-alpha02
- Los métodos de fábrica se movieron de la clase
Sessiona un método complementario en cada tipo respectivo:- Se borró
Session.createActivityPanelEntity(Dimensions, String, Activity, Pose)y se reemplazó porActivityPanelEntity.create(Session, Dimensions, String, Pose) - Se borró
Session.createAnchorEntity(Anchor)y se reemplazó porAnchorEntity.create(Session, Anchor) - Se borró
Session.createAnchorEntity(Dimensions, Int, Int, Duration)y se reemplazó porAnchorEntity.create(Session, Dimensions, Int, Int, Duration) - Se borró
Session.createEntity(String, Pose)y se reemplazó porContentlessEntity.create(Session, String, Pose) - Se borró
Session.createExrImageResource(String)y se reemplazó porExrImage.create(Session, String) - Se borró
Session.createGltfEntity(GltfModel, Pose)y se reemplazó porGltfModelEntity.create(Session, GltfModel, Pose) - Se borró
Session.createGltfModelResource(String)y se reemplazó porGltfModel.create(Session, String) - Se borró
Session.createInteractableComponent(Executor, InputEventListener)y se reemplazó porInteractableComponent.create(Session, Executor, InputEventListener) - Se borró
Session.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean)y se reemplazó porMovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean) - Se borró
Session.createPanelEntity(View, Dimensions, Dimensions, String, Pose)y se reemplazó porPanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose) - Se borró
Session.createResizableComponent(Dimensions, Dimensions)y se reemplazó porResizableComponent.create(Session, Dimensions, Dimensions) - Se borró
Session.createStereoSurfaceEntity(Int, Dimensions, Pose)y se reemplazó porStereoSurface.create(Session, Int, Dimensions, Pose)
- Se borró
- Se quitaron los siguientes métodos que habían dejado de estar disponibles:
- Se borró
Session.canEmbedActivityPanel(Activity). UsagetSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY)en su lugar. - Se borró
Session.hasSpatialCapability(Int). Se reemplazó por el uso degetSpatialCapabilities().hasCapability()como una forma más compartimentada de verificar la presencia de capacidades espaciales, ya quegetSpatialCapabilities()devuelve un objetoSpatialCapabilities. - Se borró
Session.requestFullSpaceMode()y se reemplazó porSpatialEnvironment.requestFullSpaceMode() - Se borró
Session.requestHomeSpaceMode()y se reemplazó porSpatialEnvironment.requestHomeSpaceMode()
- Se borró
Session.setFullSpaceMode(Bundle)ySession.setFullSpaceModeWithEnvironmentInherited(Bundle)se movieron a funciones de extensión. Los archivos del desarrollador deberán agregar las nuevas importaciones para el acceso:import androidx.xr.scenecore.setFullSpaceModeimport androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
Session.setPreferredAspectRatio(Activity, Float)se trasladó a una función de extensión. Los archivos del desarrollador deberán agregar la nueva importación para el acceso:import androidx.xr.scenecore.setPreferredAspectRatio
Session.getEntitiesOfType(Class<out T>)ySession.getEntityForRtEntity(RtEntity)se movieron a funciones de extensión. Los archivos del desarrollador deberán agregar las nuevas importaciones para el acceso:import androidx.xr.scenecore.getEntitiesOfTypeimport androidx.xr.scenecore.getEntityForRtEntity
- Se borró
Session.unpersistAnchor(Anchor) - Se borró
Session.createPersistedAnchorEntity(UUID)
Errores conocidos
PanelEntity.setCornerRadius()yActivityPanelEntity.setCornerRadius()pueden no surtir efecto hasta que se vuelva a mover el panel. Esto se puede mitigar moviendo el panel a su posición actual.- Cuando se llama a
BoundsChangeden elActivitySpace, es posible que algunosActivityPoseno se hayan actualizado correctamente. Se actualizará en la siguiente llamada deOnSpaceUpdatedelActivitySpace.
Cambios rotundos y de comportamiento
PanelEntityyActivityPanelEntitytendrán un radio de esquina predeterminado de 32 dp o menos si el panel tiene un ancho o una altura inferior a 32 dp.
Nuevas APIs y capacidades
- Se presenta
StereoSurface.CanvasShape, que permite crear lienzosSphericalyHemisphericalpara renderizar contenido multimedia envolvente. StereoSurfaceEntity.create()ahora acepta un parámetroCanvasShape. (Actualmente, este parámetro se ignora, pero se usará en una versión futura).StereoSurfaceEntity.create()ya no toma un parámetroDimensions. Las aplicaciones deben controlar el tamaño del lienzo configurandoCanvasShape.StereoSurfaceEntitytiene un miembroCanvasShapeque se puede configurar de forma dinámica.StereoSurfaceEntity.dimensionsahora es una propiedad de solo lectura. Las aplicaciones deben establecerCanvasShapepara cambiar las dimensiones.StereoSurfaceEntityahora permite que se vuelva a establecerStereoModedespués de la construcción.
Otros cambios
- Se redujo el valor de minSDK en tiempo de compilación a 24. Todas las APIs de Jetpack XR siguen requiriendo la API 34 en el tiempo de ejecución.
- La fábrica de sesiones de
SceneCore(Session.create) ya no inicia un intent para adquirir el permisoSCENE_UNDERSTANDING. En cambio, la aplicación cliente debe solicitar explícitamente los permisos al usuario antes de intentar crear los anclajes. La creación de anclajes fallará si el usuario no otorga el permiso.
Correcciones de errores
- Se corrigió
getActivitySpacePose()para tener en cuenta la escala deActivitySpace, ya que ahora devuelve valores de traducción en metros escalados en lugar de devolver siempre metros no escalados. Ahora,transformPoseTotambién usa las unidades correctas para calcular los cambios de coordenadas cuandoActivitySpaceestá involucrado en la fuente o el destino. - Ahora, el skybox se establecerá en un skybox completamente negro cada vez que se pase una preferencia de skybox nula con
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom)). Para volver al skybox y la geometría predeterminados del sistema, usasetSpatialEnvironmentPreference(null)..
Versión 1.0.0-alpha01
12 de diciembre de 2024
Lanzamiento de androidx.xr.scenecore:scenecore-* 1.0.0-alpha01.
Funciones de la versión inicial Versión inicial para desarrolladores de Jetpack SceneCore, una biblioteca de gráficos de escena en 3D para crear y manipular escenas y entornos inmersivos. Esta biblioteca te permite colocar y organizar modelos 3D y paneles de contenido en relación con otros elementos y tus entornos virtuales o del mundo real.
- SpatialEnvironment: Crea experiencias completamente envolventes con una imagen de skybox o una geometría de modelo 3D como fondo para la escena de XR de tu entorno. También puedes habilitar el modo de transferencia para que la escena virtual se integre con el entorno del mundo real del usuario.
- PanelEntity: Agrega contenido 2D a tus escenas 3D incorporando diseños y actividades estándar de Android en paneles espacializados que pueden flotar o anclarse a superficies del mundo real.
- GltfModelEntity: Coloca, anima e interactúa con modelos 3D en tu escena. SceneCore admite el formato de archivo glTF para facilitar la integración con modelos existentes.
- SpatialAudio: Agrega fuentes de audio ambientales y puntuales a tu escena en 3D para obtener un sonido espacial envolvente.
- StereoSurfaceEntity: SceneCore admite el enrutamiento del contenido renderizado en una Surface de Android para el ojo izquierdo y el derecho. Se puede usar para renderizar contenido estereoscópico en formato lado a lado o de arriba a abajo, como fotos estéreo, videos en 3D o cualquier otra IU renderizada de forma dinámica. Las aplicaciones deben usar MediaPlayer o ExoPlayer para la decodificación de video.
- Sistema de componentes: SceneCore ofrece un sistema de componentes sólido y flexible para agregar capacidades a tu contenido de XR, incluidas las affordances para que los usuarios muevan, cambien de tamaño y manipulen modelos y paneles.
- Anclaje: Con el modo transparente habilitado, puedes conectar paneles y modelos a superficies reales, lo que les brinda a los usuarios una integración perfecta del contenido virtual en su entorno del mundo real.
- Pose del usuario: Accede a la ubicación del usuario en la escena virtual para orientar el contenido en función de la posición del usuario.
- SpatialCapabilities: Compila apps completamente adaptables que aprovechen las capacidades espacializadas cuando estén disponibles, como el posicionamiento en 3D del contenido de la IU. Además, tu app puede supervisar los cambios en las capacidades mientras se ejecuta para modificar la experiencia según cómo el usuario usa su dispositivo Android XR.
Errores conocidos
- Actualmente, se requiere un minSDK de 30 para usar Jetpack SceneCore. Como solución alternativa, agrega la siguiente entrada de manifiesto
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>para poder compilar y ejecutar con un minSDK de 23. - La sesión puede dejar de ser válida en varias situaciones que recrean automáticamente la actividad, como cambiar el tamaño de un panel principal, conectar periféricos y cambiar entre el modo claro y el modo oscuro. Si tienes problemas de invalidación de sesión, las soluciones alternativas incluyen hacer que tu panel principal no se pueda cambiar de tamaño, usar una entidad de panel dinámico, inhabilitar la recreación de actividades para cambios de configuración específicos o inhabilitar los cambios de tema del modo claro o oscuro.
- Los componentes Movable y Resizable no son compatibles con GltfEntity.
- Entity.getSize() no se admite en GltfEntity.
- Las apps de Jetpack XR deben solicitar el permiso
android.permission.SCENE_UNDERSTANDINGen AndroidManifest. - La creación de una sesión solo se admite en dispositivos Android XR. En este momento, si creas una Sesión y tratas de usarla en un dispositivo Android XR que no sea Android, recibirás una RuntimeException.
- Establecer la skybox como nula a través de `SpatialEnvironment.setSpatialEnvironmentPreference()` no genera una skybox negra sólida como se documenta. Esto puede generar la skybox predeterminada del sistema o no cambiar la skybox actual.
- Los clientes de SceneCore deben agregar
implementation(“com.google.guava:listenablefuture-1.0”)a la configuración de Gradle para las dependencias de su app. En una versión futura, Scenecore incluirá esta biblioteca como una dependencia deapi, por lo que los clientes no tendrán que declararla de forma explícita. - SceneCore incluye erróneamente
com.google.guava:guava-31.1-androidycom.google.protobuf:protobuf-javalitecomo dependencias transitivas. Si esto genera errores de clase duplicada en tu compilación, estas dos dependencias se pueden excluir de forma segura. - Si tu app usa SceneCore y habilita ProGuard, fallará cuando crees una sesión. Como solución alternativa, inhabilita ProGuard. Consulta esta guía para obtener más información sobre cómo habilitar ProGuard.