Jetpack SceneCore

Crea e manipola il grafo della scena di Android XR con contenuti 3D.
Ultimo aggiornamento Release stabile Candidato per la release Release beta Release alpha
21 ottobre 2026 1.0.0 - - 1.1.0-alpha01

Dichiara le dipendenze

Per aggiungere una dipendenza da XR SceneCore, devi aggiungere il repository Maven di Google al tuo progetto. Per saperne di più, consulta il repository Maven di Google.

Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle per la tua app o il tuo modulo:

Alla moda

dependencies {
    implementation "androidx.xr.scenecore:scenecore:1.1.0-alpha01"

    // Use to write unit tests
    testImplementation "androidx.xr.scenecore:scenecore-testing:1.1.0-alpha01"
}

Kotlin

dependencies {
    implementation("androidx.xr.scenecore:scenecore:1.1.0-alpha01")

    // Use to write unit tests
    testImplementation("androidx.xr.scenecore:scenecore-testing:1.1.0-alpha01")
}

Per saperne di più sulle dipendenze, consulta Aggiungere dipendenze di build.

Feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa raccolta. Prima di segnalare un nuovo problema, dai un'occhiata ai problemi esistenti in questa raccolta. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.

Crea un nuovo problema

Per saperne di più, consulta la documentazione di Issue Tracker.

Versione 1.1

Versione 1.1.0-alpha01

21 ottobre 2026

androidx.xr.scenecore:scenecore-*:1.1.0-alpha01 è stato rilasciato. La versione 1.1.0-alpha01 contiene questi commit.

Modifiche alle API

  • Sono state aggiunte API di aggiornamento dinamico della mesh (MeshBuffer.createDynamic, MeshBuffer.updateVertexData, MeshBuffer.updateIndexData e un costruttore CustomMesh.BuilderFromMeshData dinamico) per supportare l'aggiornamento dei dati di vertici e indici in fase di runtime. (Ia1ecb)
  • Sono stati aggiunti i metodi helper VertexLayout.getBufferIndex per recuperare facilmente l'indice del buffer per un determinato VertexAttribute o VertexBufferLayout. (I1a9e3)
  • Ho reso CustomMesh.bounds una variabile in modo che il riquadro di delimitazione possa essere aggiornato dinamicamente in fase di runtime. (Ib0397)
  • Sono state promosse glTF API di animazione (GltfAnimation, GltfModelEntity.getAnimations e GltfModelEntity.stopAllAnimations) a pubbliche/stabili, mantenendo il setter GltfAnimation.loop come sperimentale e GltfAnimationStartOptions e start(options) come sperimentali e deprecati. (Iacdae)
  • Aggiunto stopAllAnimations() a GltfModelEntity, reso GltfAnimation.start() senza parametri, aggiunte le proprietà loop e speed a GltfAnimation e ritirati GltfAnimationStartOptions, start(options) e seekTo(Duration). (I53105)
  • Sono state aggiornate le API GltfModelEntity per documentare IllegalStateException (in particolare Entity.DisposedException) quando vengono chiamate su entità eliminate. I65a76f

Correzioni di bug

  • La dipendenza androidx.lifecycle:lifecycle-runtime è stata aggiornata alla versione 2.10.0. Questa versione è necessaria per eseguire i controlli lint del runtime del ciclo di vita in bundle con AGP versione 9.5.0-alpha04 o successive. (I99bfd, b/556807521)
  • Miglioramento dei kdoc relativi a AudioOutputProvider per evidenziare che non deve essere riutilizzato con più istanze ExoPlayer (I6b18e)
  • Sono state rimosse le dipendenze non necessarie da impress da vari moduli XR. I84636c

Versione 1.0

Versione 1.0.0

21 ottobre 2026

androidx.xr.scenecore:scenecore-*:1.0.0 è stato rilasciato. La versione 1.0.0 contiene questi commit.

Funzionalità principali della versione 1.0.0:

  • Jetpack XR SceneCore è ora stabile. SceneCore ti consente di posizionare e disporre i contenuti 3D, definiti dalle entità, l'uno rispetto all'altro e rispetto all'ambiente. Con SceneCore, puoi creare, posizionare e manipolare pannelli 2D e modelli 3D in scene di realtà virtuale e mista, specificare ambienti spaziali e sorgenti audio spaziali e ancorare i contenuti virtuali al mondo reale.
  • Per saperne di più, consulta la nostra pagina Panoramica e il Riferimento API.

Versione 1.0.0-rc02

7 ottobre 2026

androidx.xr.scenecore:scenecore-*:1.0.0-rc02 è stato rilasciato. La versione 1.0.0-rc02 contiene questi commit.

Correzioni di bug

  • Risolta una potenziale perdita di memoria rimuovendo perceptionRuntimeCache in SessionExt e rifattorizzandolo per recuperare PerceptionRuntime direttamente dall'istanza Session. (Ie35b1)
  • È stato corretto un potenziale leak di contesto utilizzando applicationContext per gli handle nativi OpenXR per garantire che il runtime nativo non contenga riferimenti a un contesto Activity. (Ie35b1)
  • Risolte le race condition in XrInstanceManager introducendo una sincronizzazione adeguata e un blocco dell'inizializzazione. (Ie35b1)
  • Risolto il problema di ReferenceCleaner per supportare l'annullamento della registrazione delle azioni di pulizia e garantire che le azioni di pulizia di Entity vengano eseguite in modo esplicito durante dispose(), impedendo l'esecuzione duplicata durante la garbage collection. (Ie35b1)
  • Risolta una perdita di memoria in Scene rimuovendo sceneCache in SessionExt e rifattorizzando Scene per recuperare l'istanza direttamente da sessionConnectors. (Ie35b1)

Versione 1.0.0-rc01

9 settembre 2026

androidx.xr.scenecore:scenecore-*:1.0.0-rc01 è stato rilasciato. La versione 1.0.0-rc01 contiene questi commit.

Modifiche alle API

  • xr:scenecore:scenecore-openxr aggiunta alla raccolta. (Ic49f2)
  • Sono state rimosse diverse API deprecate prima della release stabile 1.0.0.

Correzioni di bug

  • Risolto un bug di perdita di memoria per cui il riferimento all'attività poteva essere conservato dal sistema quando l'attività veniva eliminata. (I6dcd7)

Modifiche del comportamento

  • È stato rimosso l'output logcat da SceneCore. (I10c3c)

Versione 1.0.0-beta02

12 agosto 2026

androidx.xr.scenecore:scenecore-*:1.0.0-beta02 è stato rilasciato. La versione 1.0.0-beta02 contiene questi commit.

Correzioni di bug

  • toMoveEvent() restituirà null se l'entità principale è stata sottoposta a garbage collection. (Ia7a1b)

Versione 1.0.0-beta01

15 luglio 2026

androidx.xr.scenecore:scenecore-*:1.0.0-beta01 è stato rilasciato. La versione 1.0.0-beta01 contiene questi commit.

Modifiche alle API

  • Le API GltfAnimation e SpatialGltfModelAnimation sono state contrassegnate come sperimentali. Alcune proprietà sono state trasformate in getter. (I8d689, b/524771027)
  • Rimosso il metodo factory pubblico MovableComponent.createTrackingMovable. (I00912, b/477169015)
  • Session.create è stata convertita in una funzione di sospensione. (I5d27f)
  • ActivitySpace e AnchorSpace ora estendono una classe SpaceEntity comune che contiene un comportamento comune per le entità le cui posizioni sono controllate dal sistema (I506ec, b/513619219)
  • Aggiornato AnchorEntity in modo che venga chiamato AnchorSpace (Ifa95e, b/513619219)
  • Fornisce l'API di test pubblica SoundEffectPoolComponentTester. (I87df7, b/498104417)
  • È stato aggiunto un parametro cornerRadius facoltativo al costruttore SurfaceEntity.Shape.Quad e la proprietà cornerRadius è stata resa pubblica. Gli sviluppatori ora possono specificare un raggio dell'angolo durante la creazione di una forma Quad per eseguire il rendering di canvas SurfaceEntity con angoli arrotondati ed eseguire query sul raggio dei Quad esistenti. (Ia7809, b/474681085)
  • Fornisce overload dell'API di test pubblica SpatialAudioTrackBuilderTester, SpatialAudioTrackTester e SceneCoreTestRule.getTester. (I378c6, b/496333938)
  • Aggiungi override specializzati di toString() per una serie di tipi ARCore. Questi tipi hanno lo scopo di fornire informazioni aggiuntive agli sviluppatori per il debug e non sono destinati all'uso in produzione o nelle applicazioni distribuite.

Versione 1.0.0-alpha16

17 giugno 2026

androidx.xr.scenecore:scenecore-*:1.0.0-alpha16 è stato rilasciato. La versione 1.0.0-alpha16 contiene questi commit.

Modifiche alle API

  • Aggiunti overload per addVertexData, setIndexData e addSubset a CustomMesh.BuilderFromMeshData e CustomMesh.BuilderFromMeshBuffer. Questi overload consentono agli sviluppatori di passare direttamente dati non elaborati e parametri (ad es. ByteBuffer, offset, size, topology, indexOffset, indexCount) senza doverli inserire in oggetti intermedi come ByteBufferRegion o MeshSubset. (I84d5c)
  • Scene.requestFullSpaceMode() e Scene.requestHomeSpaceMode() sono stati rinominati rispettivamente in requestFullSpace() e requestHomeSpace(). Anche altri metodi e la documentazione che fanno riferimento a "Modalità Spazio Home" e "Modalità Spazio intero" sono stati aggiornati in modo simile. (I45751)
  • Fornisce l'API di test pubblica PanelEntityTester e MainPanelEntityTester (I961e4)
  • Aggiunta della proprietà pointSourceParams a SoundEffectPoolComponent (I4a750)
  • Fornisce l'API di test pubblica MovableComponentTester (I0c972)
  • Fornisce l'API di test pubblica PointerCaptureComponentTester (Ic0d4f)
  • Fornisce l'API di test pubblica ActivityPanelEntityTester (I837c4)
  • Fornisce l'API di test pubblica ResizableComponentTester (I0a3a4)
  • Fornisce l'API di test pubblica BoundsComponentTester. (Iefd53)
  • Fornisce l'API di test pubblica SpatialMediaPlayerTester (Ia3e09)
  • Fornisce l'API di test pubblica SpatialEnvironmentTester (Icf60f)
  • Fornisce l'API di test pubblica GltfModelTester e SceneCoreTestRule.getGltfModelTester. (I33fcb)
  • Fornisce l'API di test pubblica InteractableComponentTester. (Ia7096)
  • Fornisce l'API di test pubblica SurfaceEntityTester. (Ic0740)
  • Fornisce l'API di test pubblica GltfModelEntityTester, TestGltfModelNode e TestGltfAnimation. (I72c4d)
  • Fornisce l'API di test pubblica SceneTester e SceneCoreTestRule.sceneTester. (Ib4ec5)
  • Fornisce l'API di test pubblica PerceptionSpaceTester e SceneCoreTestRule.perceptionSpaceTester. (Icf739)
  • Fornisce l'API di test pubblica MeshEntityTester. (I63801)
  • Fornisce l'API di test pubblica ImageBasedLightingAssetTester e gli overload SceneCoreTestRule.getTester. (I57ec4)
  • Fornisce l'API di test pubblica TextureTester (Ia865b)
  • Fornisce l'API di test pubblica PositionalAudioComponentTester (Icd96e)
  • Fornisce l'API di test pubblica SpatialSoundPoolTester (Ia3531)
  • Fornisce l'API di test pubblica SoundEffectPoolTester (If349a)
  • Fornisce l'API di test pubblica ActivitySpaceTester e SceneCoreTestRule.activitySpaceTester. (I2d5c2)
  • Fornisce l'API di test pubblica SpatialWindowTester (I41837)
  • Fornisce l'API di test pubblica AnchorEntityTester (I68404)
  • Fornisce l'interfaccia API di test pubblica SceneCoreTestRule. (Ic72d3)
  • È stata aggiunta la classe PixelDensity ed è stata esposta tramite Scene#virtualPixelDensity per fornire un rapporto pixel per metro basato su hardware per una mappatura accurata delle dimensioni fisiche in ActivitySpace. (I0e3ac)
  • Aggiunte API pubbliche per la creazione e il rendering di mesh personalizzate. (I7ad2f)
  • L'API VertexLayout è stata aggiornata per utilizzare un elenco di VertexBufferLayout, in cui ogni VertexBufferLayout descrive gli attributi all'interno di un singolo buffer di vertici. Ciò consente disposizioni più flessibili dei dati dei vertici, inclusi attributi con interleaving con passi e offset personalizzati. (Ic426b)
  • Fornisce MovableComponent.createTrackingMovable per trasformare un elemento tracciabile ARCore in una posa relativa allo spazio di attività. (I12249)
  • Il valore predefinito per l'elemento principale in Entity.create è stato aggiornato a null. (Ic3145)
  • Entity è stato aggiornato per essere una classe anziché un'interfaccia ed è ora la classe base per tutti i tipi di entità. Nell'ambito di questa modifica, BaseEntity è stato rimosso. (I7fbc9)
  • GltfModel, ExrImage e ImageBasedLightingAsset ora implementano AutoCloseable per consentire la gestione idiomatica delle risorse utilizzando il blocco use di Kotlin. (I1ac79)
  • È stata introdotta la classe ImageBasedLightingAsset per sostituire ExrImage per la definizione dell'illuminazione dell'ambiente spaziale. ExrImage è stato ritirato e rimosso dall'API pubblica. SpatialEnvironmentPreference è stato aggiornato per utilizzare ImageBasedLightingAsset. (I6c92a)
  • Il parametro skybox in SpatialEnvironment è stato rinominato in imageBasedLightingAsset per riflettere meglio il suo scopo ed è stato chiarito che le texture visive dello skybox devono essere incluse nel parametro geometry. (I24d4a)
  • Le entità spaziali ora utilizzano una densità del dispositivo stabile per i calcoli da pixel a metri sui livelli API Spatial 1 e 2, garantendo dimensioni coerenti indipendentemente dalle modifiche alla densità del display del sistema. (I37051)

Versione 1.0.0-alpha15

19 maggio 2026

androidx.xr.scenecore:scenecore-*:1.0.0-alpha15 è stato rilasciato. La versione 1.0.0-alpha15 contiene questi commit.

Modifiche alle API

  • Entity.dispose() è stata rimossa come API pubblica. Anziché chiamare dispose() sulle istanze Entity, le app possono rendere le istanze pulibili impostando parent su null e cancellando tutti i riferimenti forti a queste istanze. (I396c9)
  • I metodi set/clearOnLoadCompleteListener di SoundEffectPool sono stati eliminati. Usa invece il descrittore add/removeLoadCompleteListener. (Iae78d)
  • set/clearSpatialVisibilityChangedListener della scena è stato sostituito con add/removeSpatialVisibilityChangedListener. (I67dff)
  • Tutti i metodi SceneCore add/removeOnFooListener sono stati rinominati add/removeFooListener, rimuovendo On dal nome. (Ibe50b)
  • I metodi AnchorEntity.setOnOriginChangedListener e AnchorEntity.setOnStateChangedListener sono stati sostituiti con i metodi add/removeFooListener per supportare più listener contemporaneamente. (I13749)
  • AnchorEntity.State.TIMEDOUT rinominato in State.TIMED_OUT. (Id2b8d)
  • L'API Component è stata rifattorizzata per migliorare la sicurezza e l'estensibilità. Component è ora una classe astratta. I metodi onAttach() e onDetach() sono ora protected per impedire le chiamate dirette. Utilizza Entity.addComponent() e Entity.removeComponent() per gestire i cicli di vita dei componenti. (Id04e8)
  • È stata eseguita la migrazione delle costanti PlaneSemanticType PlaneOrientation di SceneCore da Int a tipi personalizzati. Le costanti ANY verranno rimosse. I client devono enumerare esplicitamente tutte le costanti desiderate o utilizzare le nuove costanti Set immutabili .ALL. Il metodo factory AnchorEntity ora accetta un set di questi tipi, anziché un singolo valore. (Ib1033)
  • Aggiunto il supporto per l'animazione scheletrica (skinning) all'API Custom Mesh sperimentale. Ora gli sviluppatori possono animare mesh personalizzate specificando un boneCount durante la creazione di un MeshEntity e aggiornando l'animazione in tempo reale utilizzando MeshEntity.setBoneTransforms(). (Id8ba2, b/496692490)
  • È stata introdotta l'API CustomMesh sperimentale. Ora gli sviluppatori possono creare ed eseguire il rendering della geometria 3D in modo programmatico nelle loro scene utilizzando CustomMesh, MeshBuffer e MeshEntity. (I94617)
  • Contatto rimosso: androidx.xr.scenecore.SpatializerConstants.SourceType.SOURCE_TYPE_SOUND_FIELD. Usa invece il descrittore SourceType.SOUND_FIELD. (Ia68b9)
  • Aggiunta di componenti audio spaziali: PositionalAudioComponent, SoundEffectPoolComponent e SoundFieldAudioComponent (Ieda89)
  • AnchorEntity.getAnchor è stato sostituito con AnchorEntity.anchor e ora restituirà un Anchor quando AnchorEntity è stato creato da un Anchor ARCore (I5c7c8)
  • Il valore predefinito del parametro parent nei metodi factory ActivityPanelEntity, GltfModelEntity, GroupEntity, PanelEntity e SurfaceEntity è stato modificato da ActivitySpace a null. Per collegare un'entità al grafico della scena e renderla visibile, gli sviluppatori devono ora impostare esplicitamente il relativo elemento principale durante l'istanza o tramite Entity.parent = ... (Ie7cc1)

Correzioni di bug

  • SceneCore ora recupera automaticamente le istanze Entity quando diventano raggiungibili in modalità fantasma, eliminando la necessità per gli sviluppatori di richiamare esplicitamente dispose() per liberare risorse. Per assicurarsi che un'istanza [Entity] venga recuperata correttamente, gli sviluppatori devono:
    • Scollegalo dal grafico della scena impostando parent su null.
    • Rinunciare a tutti i riferimenti forti all'istanza nel codice.
    • Nota sui tipi di entità speciali: per le entità che non possono essere associate a un'entità principale (come AnchorEntity), gli sviluppatori devono mantenere un riferimento forte mentre l'istanza è in uso. Se tutti i riferimenti vengono rilasciati, queste istanze diventeranno raggiungibili in modo fantasma e verranno recuperate automaticamente. (I83fe4)
  • Regole di conservazione di Proguard più restrittive per tutte le librerie SceneCore. (I98447)

Problemi noti

  • Il collegamento di un PositionalAudioComponent a un Entity con un'istanza ExoPlayer inattiva causerà un arresto anomalo. Non chiamare setPointSourceParams né collegare/scollegare i componenti dell'audio spaziale mentre ExoPlayer è interrotto. Questo problema verrà risolto nella prossima release.

Versione 1.0.0-alpha14

6 maggio 2026

androidx.xr.scenecore:scenecore-*:1.0.0-alpha14 è stato rilasciato. La versione 1.0.0-alpha14 contiene questi commit.

Modifiche alle API

  • TrackingState e VpsAvailabilityResult sono stati spostati in androidx.xr.arcore package e i tipi in androidx.xr.runtime sono ora deprecati. (Ic7930, b/480462213)
  • Plane.Type rinominato in PlaneType. (I8c90c, b/482675376)
  • Plane.Label rinominato in PlaneLabel. (Ic6b67, b/482675376)
  • androidx.xr.runtime.FieldOfView è stato ritirato. Usa invece il descrittore androidx.xr.runtime.math.FieldOfView. (Ia01a0, b/480233045)
  • Matrix4.pose è stato rinominato in Matrix4.toPose(). La proprietà pose è ora deprecata. (I329b4, b/493383490)
  • Valori enum HandJointType rinominati. (Ifbc83, b/482670596)
  • Esporre Component.onAttach e onDetach come API pubblica per consentire implementazioni Component personalizzate. (I0ca1f)
  • Aggiunta di componenti audio spaziali (I39ddd, b/489421980, b/436642086, b/436642499)
  • Rimuovi l'entità da PointSourceParams. L'entità verrà invece utilizzata direttamente con SpatialAudioTrack, SpatialSoundPool e SpatialMediaPlayer (Ib3685, b/489421980, b/436634048)
  • DeviceTrackingMode.LAST_KNOWN è stato rinominato in SPATIAL_LAST_KNOWN (con un fallback deprecato), è stato aggiunto INERTIAL_LAST_KNOWN per il monitoraggio 3DoF ed è stato aggiunto TRACKING_DEGRADED a TrackingState. (Ie661c, b/445466590)
  • GroupEntity deprecato. Per avere un'entità con solo la funzionalità di base, chiama Entity.create, che restituirà un'interfaccia Entity. (I4c450, b/473867483)
  • API XrLog aggiunta. Imposta XrLog.isEnabled su true per attivare il logging in JetpackXR e utilizza XrLog.Level per impostare il livello di log. (I76a1f, b/463460895, b/487378441)

Correzioni di bug

  • Scene.keyEntity ora è impostato su mainPanelEntity per impostazione predefinita. (I6a3ef)

Versione 1.0.0-alpha13

25 marzo 2026

androidx.xr.scenecore:scenecore-*:1.0.0-alpha13 è stato rilasciato. La versione 1.0.0-alpha13 contiene questi commit.

Modifiche alle API

  • Flag unscaledGravityAlignedActivitySpace rimosso da Session.create. ActivitySpace ora è sempre non scalato e allineato alla gravità. (If6f11, b/458173423)
  • Sono state rimosse le funzioni deprecate setMaterialOverride e clearMaterialOverride da GltfModelEntity, che ora vengono chiamate sul singolo GltfModelNode. (I2e5d2)
  • Sono stati aggiunti transformPixelCoordinatesToLocalPosition e transformNormalizedCoordinatesToLocalPosition a PanelEntity e sono stati rimossi i metodi sperimentali equivalenti che restituivano pose anziché posizioni Vector3. (Ib6960, b/460123106, b/458333591)
  • Sono state aggiunte le API GltfAnimation per il controllo delle animazioni glTF in SceneCore. (I2c172, b/466065486, b/465819070, b/465818617)
  • ScenePose.activitySpacePose è stato rinominato in ScenePose.poseInActivitySpace (I8f175, b/427822261)
  • Aggiunta l'implementazione del runtime proiettato di Scenecore (I9c4ab, b/476440158)
  • Quando ridimensioni l'entità del riquadro principale, questa potrebbe riposizionarsi sull'origine ActivitySpace. Non esiste una soluzione alternativa se non quella di riposizionare manualmente o in modo programmatico il riquadro nella posizione originale. Questo bug verrà corretto in una release futura. (b/489427007).
  • In alcuni casi, l'affordance per MovableComponent potrebbe non essere visualizzata per SurfaceEntity e altri tipi di entità non del riquadro. L'impostazione esplicita di MovableComponent.size farà apparire l'affordance. Questo bug verrà corretto in una release futura (b/490983469).

Versione 1.0.0-alpha12

25 febbraio 2026

androidx.xr.scenecore:scenecore-*:1.0.0-alpha12 è stato rilasciato. La versione 1.0.0-alpha12 contiene questi commit.

Problemi noti

  • Le entità ancorate potrebbero spostarsi dalla loro posizione ancorata all'origine dello spazio delle attività dopo alcuni secondi.
  • Le app potrebbero arrestarsi in modo anomalo durante la creazione di istanze SurfaceEntity. Questo problema è stato risolto in androidx.xr.scenecore:scenecore-*:1.0.0-alpha13 e nelle release successive. Le app interessate devono essere aggiornate all'ultima versione.

Modifiche alle API

  • ActivitySpace.addOnSpaceUpdatedListener e ActivitySpace.removeOnSpaceUpdatedListener sono stati rinominati in addOnOriginChangedListener e removeOnOriginChangedListener. AnchorEntity.setOnSpaceUpdatedListener è stato rinominato in setOnOriginChangedListener. (I5d8fb)
  • Aggiunta la proprietà del nome pubblico a FakeEntity e resa pubblica la visualizzazione su FakePanelEntity. (Ifa1f9)

Correzioni di bug

  • Risolti i calcoli della densità di pixel sulle immagini di sistema più recenti (I57d04)

Versione 1.0.0-alpha11

28 gennaio 2026

androidx.xr.scenecore:scenecore-*:1.0.0-alpha11 è stato rilasciato. La versione 1.0.0-alpha11 contiene questi commit.

Modifiche alle API

  • PerceivedResolutionResult.InvalidCameraViewPerceivedResolutionResult.InvalidRenderViewpointgetPerceivedResolutionRenderViewpointCameraViewScenePose Questo nome riflette meglio la nuova implementazione. (I8c967, b/446989745, b/419311998)
  • I metodi PanelEntity/SurfaceEntity.getPerceivedResolution ora accettano come argomento un RenderViewpoint fornito dallo sviluppatore. In precedenza, il runtime sceglieva arbitrariamente il RenderViewpoint utilizzato nel calcolo della risoluzione percepita. (I8c967, b/446989745, b/419311998)
  • SpatialUser, ScenePose.Head e ScenePose.CameraView rimosse. La funzionalità di queste API è coperta dalle API ArDevice e RenderViewpoint all'interno di ARCore per Jetpack XR. Per ottenere un ScenePose corrispondente alla testa o all'occhio sinistro o destro dell'utente, gli sviluppatori possono utilizzare PerceptionSpace.getScenePoseFromPerceptionPose con la posa appropriata ottenuta utilizzando le API ARCore. (I2f69c, b/446989745)

Versione 1.0.0-alpha10

3 dicembre 2025

androidx.xr.scenecore:scenecore-*:1.0.0-alpha10 è stato rilasciato. La versione 1.0.0-alpha10 contiene questi commit.

Modifiche alle API

  • transformPixelCoordinatesToPose e transformNormalizedCoordinatesToPose aggiunti a PanelEntity (I462b3)
  • È stata aggiunta una classe helper, Utils, al runtime SceneCore in base alla logica in SceneCore (I570b9)

Correzioni di bug

  • È stato corretto un potenziale arresto anomalo che può verificarsi quando la sessione viene eliminata e viene ricevuto un SpatialModeChangeEvent (If44e8)
  • È stato corretto un bug che poteva causare la generazione di un'eccezione IllegalStateException quando si usciva o si rientrava in un'attività. (Ibff1c)

Versione 1.0.0-alpha09

19 novembre 2025

androidx.xr.scenecore:scenecore-*:1.0.0-alpha09 è stato rilasciato. La versione 1.0.0-alpha09 contiene questi commit.

Nuove funzionalità

  • Aggiunge un'API per recuperare un ScenePose che rappresenta la composizione della postura di origine dello spazio di percezione e di una postura rispetto all'origine dello spazio di percezione. (I5b50a)
  • Funzione getGravityAlignedPose aggiunta. La posa allineata alla gravità ignora il beccheggio e il rollio della rotazione. (I5ae21)
  • I tipi di costanti AnchorEntity.State sono stati modificati da Ints a sottotipi di State. (Ib0c49)
  • getChildren() aggiunto all'interfaccia Entity. Ciclo di vita di MainPanelEntity aggiornato. (Ia69d6)

Modifiche alle API

  • I tipi di costanti PointerCaptureComponent.PointerCaptureState sono stati modificati da Int ai sottotipi PointerCaptureState. (Ic888a)
  • Scene.spatialCapabilities ora è di tipo Set<SpatialCapability> anziché un campo Int. Le costanti SpatialCapability sono state rinominate. (I9c109)
  • I tipi di costanti SurfaceEntity sono stati rinominati e modificati da Int a sottotipi SurfaceEntity. (I419ed)
  • I tipi di costanti SpatializerConstant sono stati rinominati e modificati da Int a sottotipi SpatializerConstant. (Ia0e18)
  • I tipi di costanti TextureSampler sono stati rinominati e modificati da Int a sottotipi TextureSampler. (I44078)
  • I tipi di costanti SpatialVisibility sono stati modificati da Int a sottotipi SpatialVisibility. (I70739)
  • I tipi di costanti ResizeEvent.ResizeState sono stati rinominati e modificati da Int a sottotipi ResizeState. (I384d5)
  • I tipi di costanti InputEvent sono stati rinominati e modificati da Int per ereditare dal rispettivo tipo di inclusione. (I82817)
  • I tipi di costanti GltfModelEntity.AnimationState sono stati modificati da Int ai sottotipi AnimationState. (I24f4e)
  • I tipi di costanti AlphaMode sono stati rinominati e modificati da Int a sottotipi AlphaMode. (I27b56)
  • I tipi di costanti Space sono stati modificati da Int a sottotipi di spazio. (I9255b)
  • ScenePose.hitTest e i metodi correlati ora restituiscono null se non è stata trovata alcuna intersezione, anziché un HitTestResult con un hitPosition null. HitTestResult.hitPosition non è più nullable. (I1400a)
  • Modificati i riferimenti di ActivityPose in ScenePose. (I7fe43)

Versione 1.0.0-alpha08

22 ottobre 2025

androidx.xr.scenecore:scenecore-*:1.0.0-alpha08 è stato rilasciato. La versione 1.0.0-alpha08 contiene questi commit.

Modifiche alle API

  • ActivityPanelEntity.moveActivity è stato rinominato in transferActivity (I273c5, b/430332856)

Correzioni di bug

  • :xr:scenecore:scenecore-spatial-rendering e :xr:scenecore:scenecore-spatial-core sono stati aggiunti come dipendenza di implementazione di :xr:scenecore:scenecore (I6ab65, b/447000520)
  • Viene generata un'eccezione se si accede a session.scene dopo la distruzione della sessione. (I77e6f)

Versione 1.0.0-alpha07

24 settembre 2025

androidx.xr.scenecore:scenecore:1.0.0-alpha07, androidx.xr.scenecore:scenecore-guava:1.0.0-alpha07 e androidx.xr.scenecore:scenecore-testing:1.0.0-alpha07 sono stati rilasciati. La versione 1.0.0-alpha07 contiene questi commit.

Modifiche alle API

  • fixedAspectRatio è stata rinominata in isFixedAspectRatioEnabled ed è stata resa una proprietà booleana (I5c4e8, b/440588971)
  • I falsi Scenecore ora si trovano nel modulo xr:scenecore:scenecore-testing. (Idd951)
  • shouldAutoHideContent è stato rinominato in isAutoHideContentWhileResizingEnabled e shouldAlwaysShowOverlay in isAlwaysShowOverlayEnabled (I97c36, b/432335421)
  • Aggiornate le costanti SceneCore TextureSampler per migliorare la leggibilità, ad esempio TextureSampler.MinFilter.LINEAR ora è TextureSampler.MIN_FILTER_LINEAR (Ib159c)
  • Il setter setKeyEntity della scena è stato unito alla variabile keyEntity. Se imposti keyEntity su un'entità non spostabile come AnchorEntity, verrà generato un IllegalArgumentException anziché restituire un valore booleano falso. (I62080, b/428721695, b/422215745)
  • La variabile SpatialModeChangeListener della scena è stata sostituita con setSpatialModeChangedListener. Accetta un Consumer<SpatialModeChangeEvent> anziché un SpatialModeChangedListener. setSpatialModeChangedListener ora può facoltativamente accettare un Executor. (I62080, b/428721695, b/422215745)
  • È stato rimosso il parametro bundle da ActivityPanelEntity.startActivity (I64344, b/430332856, b/430333040)
  • SpatializerConstants.SOURCE_TYPE_BYPASS rinominato in SpatializerConstants.SOURCE_TYPE_DEFAULT. (Ifc7fe, b/422215565)
  • Aggiunta la costante SpatialSoundPool.PLAY_FAILED. (Ifc7fe, b/422215565)
  • Sono stati aggiunti argomenti predefiniti ai metodi SpatialSoundPool.play. (Ifc7fe, b/422215565)
  • Rimosso il valore restituito dei setter in SpatialAudioTrackBuilder. (Ifc7fe, b/422215565)
  • Modifiche a SurfaceEntity
    • SurfaceEntity.CanvasShape ha rinominato Shape
    • SurfaceEntity.CanvasShape.Vr180Hemisphere ha rinominato Hemisphere
    • SurfaceEntity.CanvasShape.Vr360Sphere ha rinominato Sphere
    • SurfaceEntity.EdgeFeatheringParams.SmoothFeather ha rinominato RectangleFeather
    • SurfaceEntity.EdgeFeathingParams.SolidEdge ha rinominato NoFeathering
    • SurfaceEntity.ContentSecurityLevel ha rinominato SurfaceProtection
    • SurfaceEntity.ContentSecurityLevel.{values} ha aggiunto un prefisso SURFACE_PROTECTION_.
    • SurfaceEntity.SuperSampling.{$values} ha aggiunto un prefisso SUPER_SAMPLING_
    • SurfaceEntity.StereoMode.{values} ha aggiunto un prefisso STEREO_MODE_
    • SurfaceEntity.ContentColorMetadata.maxCLL rinominato in maxContentLightLevel (I7eb5f, b/422216050, b/427529950)
  • launchActivity è stato rinominato in startActivity (I7db90, b/430332856)
  • Contatto rimosso: Scene.activitySpaceRoot. Usa invece il descrittore Scene.activitySpace. (I05ee8, b/378706624, b/422215745)
  • configureBundleForFullSpaceModeLaunch e configureBundleForFullSpaceModeLaunchWithEnvironmentInherited sono stati rinominati rispettivamente in createBundleForFullSpaceModeLaunch e createBundleForFullSpaceModeLaunchWithEnvironmentInherited, spostati nel file LaunchUtils.kt come metodi di primo livello e accettano Session come primo parametro (I64a2c, b/437186050)
  • La factory GroupEntity ora restituisce il tipo GroupEntity anziché Entity. (I66042)

Correzioni di bug

Versione 1.0.0-alpha06

13 agosto 2025

androidx.xr.scenecore:scenecore:1.0.0-alpha06, androidx.xr.scenecore:scenecore-guava:1.0.0-alpha06 e androidx.xr.scenecore:scenecore-testing:1.0.0-alpha06 sono stati rilasciati. La versione 1.0.0-alpha06 contiene questi commit.

Modifiche alle API

  • Rimuovi le restrizioni alle API BaseEntity e BaseScenePose di SceneCore (88c0ff6)

Versione 1.0.0-alpha05

30 luglio 2025

androidx.xr.scenecore:scenecore-guava:1.0.0-alpha05, androidx.xr.scenecore:scenecore-testing:1.0.0-alpha05 e androidx.xr.scenecore:scenecore:1.0.0-alpha05 sono stati rilasciati. La versione 1.0.0-alpha05 contiene questi commit.

Nuove funzionalità

  • API Perceived Resolution aggiunta a Panel Entities e SurfaceEntities. (I118f6)
  • PerceivedResolution Metodi di callback aggiunti a Scene.kt per monitorare la risoluzione percepita del riquadro principale dell'attività in HSM. (I58084)
  • SurfaceEntity - Aggiunto il supporto per l'applicazione per richiedere il super sampling al momento della creazione. In questo modo, le applicazioni possono utilizzare il filtro di supercampionamento per l'anti-aliasing. (I06913)
  • Proprietà recommendedContentBoxInFullSpace aggiunta a ActivitySpace. Restituisce un riquadro consigliato in cui posizionare i contenuti in modalità spazio intero. (I4cd6f)
  • È stato fornito un costruttore sovraccaricato per il modificatore mobile che consente l'ancoraggio. (Ic0c70)

Modifiche alle API

Per questa release sono state apportate modifiche estese all'API SceneCore. Diverse classi sono state rinominate e/o spostate in moduli diversi e la maggior parte dei metodi getter/setter è stata sostituita con proprietà Kotlin. Anche se prevediamo future modifiche alle API che potrebbero causare interruzioni fino alla nostra prima versione beta, non saranno così invasive o numerose.

  • Le seguenti classi e interfacce sono state rinominate e/o spostate: da androidx.xr.scenecore.PixelDimensions a androidx.xr.runtime.math.IntSize2d; da androidx.xr.scenecore.Dimensions a androidx.xr.runtime.math.FloatSize3d; da androidx.xr.scenecore.ActivityPose a ScenePose, da androidx.xr.scenecore.ContentlessEntity a GroupEntity, da androidx.xr.scenecore.PlaneType a PlaneOrientation; da androidx.xr.scenecore.PlaneSemantic a PlaneSemanticType. (Ifd405)(I3b622) (If534d)
  • Un certo numero di setter per le proprietà di Scene sono stati resi privati; non erano destinati a essere modificati dai client SceneCore: activitySpace, activitySpaceRoot, mainPanelEntity, perceptionSpace, spatialCapabilities, spatialEnvironment e spatialUser. (I2f506)
  • In Entity: sono state modificate le seguenti proprietà: get/setParent(), setContentDescription; Entity.is/setHidden() è stato ritirato, utilizza Entity.is/setEnabled. (Ibc4c6)
  • È stata rimossa la classe androidx.xr.scenecore.BasePanelEntity. Utilizza direttamente PanelEntity. Sostituzione dei getter e dei setter per PanelEntity con le proprietà. La proprietà PanelEntity.size è stata modificata da Float3dSize a Float2dSize. È stato rimosso il metodo deprecato androidx.xr.scenecore.PanelEntity.getPixelDimensions. Utilizza invece getSizeInPixels. (Icc174)
  • androidx.xr.scenecore.OnSpaceUpdatedListener sostituita con Runnable. (I19308)
  • SpatialUser.getCameraViews() è stato sostituito con una proprietà. (Ib0cc5) Per ExrImage e GltfModel:, i metodi create sono stati modificati in modo da essere funzioni di sospensione; i parametri di creazione sono stati modificati in modo da accettare un Uri o un Path anziché un String. (Id8883) (I0d247), (I25706)
  • SpatialEnvironment.requestFullSpaceMode e SpatialEnvironment.requestHomeSpaceMode sono stati spostati in Scene, ad esempio utilizza session.scene.requestFullSpaceMode() anziché session.scene.spatialEnvironment.requestFullSpaceMode(). addOnPassthroughOpacityChangedListener e addOnSpatialEnvironmentChangedListener ora hanno override che accettano Executor facoltativi. (I12fe0) (I6b21e)
  • Sono stati rimossi i seguenti metodi SpatialEnvironment deprecati: togglePassthrough, setPassthrough, setPassthroughOpacity, getPassthroughMode, getPassthroughOpacity, setSkybox e setGeometry. È stata rimossa anche la classe deprecata SpatialEnvironment.PassthroughMode (I927bd) (I927bd) (I927bd)
  • Sostituzione dei seguenti getter e setter SpatialEnvironment con le proprietà Kotlin: getCurrentPassthroughOpacity(), get/setPassthroughOpacityPreference(), get/setSpatialEnvironmentPreference(), isSpatialEnvironmentPreferenceActive() (I33a7b) (Ie06e2) (Ie06e2)
  • Tipo di SpatialEnvironmentPreference.preferredPassthroughOpacity cambiato da Float? a Float. Non accetta più valori null. Invece, SpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCE viene utilizzato per indicare che non esiste una preferenza di opacità. (I40107)
  • Aggiornato il parametro windowBoundsPx in pixelDimensions e il relativo tipo da Rect a IntSize2d nel metodo create. (I1926e)
  • Il costruttore SpatialEnvironment ora è interno (I75a51)
  • La classe SpatialPointerIconNone e le classi SpatialPointerIconCircle sono state sostituite con gli oggetti companion SpatialPointerIcon.NONE e SpatialPointerIcon.CIRCLE (I416d2)
  • SpatialPointerIcon in SpatialPointerComponent non è più nullable. Utilizza SpatialPointerIcon.DEFAULT anziché null per indicare che deve essere utilizzata l'icona del puntatore predefinito di sistema. (I416d2)
  • androidx.xr.scenecore.AnchorEntity.getState() è stato sostituito con una proprietà di sola lettura. I parametri del metodo AnchorEntity.create() sono stati rinominati per maggiore chiarezza. Nei metodi di AnchorEntity per l'impostazione e l'aggiunta di listener, il listener è stato spostato nell'argomento finale per abilitare le espressioni lambda finali. Sostituzione di androidx.xr.scenecore.OnStateChangedListener per AnchorEntity con Consumer<AnchorEntity.State>. (I472e0)
  • GltfModelEntity.getAnimationState() è ora una proprietà. (I10b29)
  • ActivitySpace.getBounds() è stato sostituito con una proprietà. ActivitySpace.addBoundsChangedListener rinominato in ActivitySpace.addOnBoundsChangedListener. ActivitySpace.setOnSpaceUpdatedListener sostituito con i metodi di aggiunta/rimozione. (I4c956)
  • Per AnchorPlacement: planeTypeFilter è stato rinominato in anchorablePlaneOrientations, planeSemanticFilter è stato rinominato in anchorablePlaneSemanticTypes. L'aggiunta di un MovableComponent a un AnchorEntity o ActivitySpace restituirà false, MoveListener è stato rinominato in EntityMoveListener shouldDisposeParentAnchor, che è stato rinominato in disposeParentOnReAnchor systemMovable, che è stato rimosso dalla funzione create a favore di creeateCustomMovable, createSystemMovable e createAnchorable (If11c4)
  • Rimosso SurfaceEntity.featherRadiusX/Y e aggiunto un concetto di classe EdgeFeatheringParams. (Ic78fc)
  • Il metodo PanelEntity.enablePanelDepthTest() è stato sostituito con la proprietà panelClippingConfig. Imposta Scene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true) per attivare il test di profondità o PanelClippingConfig(isDepthTestEnabled = false) per disattivarlo. (I0cbe0)
  • Scene.mainPanelEntity è ora di tipo MainPanelEntity anziché PanelEntity (I7125a)
  • Il metodo setFullSpaceMode di Scene è stato rinominato in configureBundleForFullSpaceModeLaunch e il metodo setFullSpaceModeWithEnvironmentInherited in configureBundleForFullSpaceModeLaunchWithEnvironmentInherited. (I0cbe0) (I0cbe0)
  • I valori UNKNOWN, OUTSIDE_FOV, PARTIALLY_WITHIN_FOV e WITHIN_FOV di SpatialVisibility sono stati rinominati rispettivamente in SPATIAL_VISIBILITY_UNKNOWN, SPATIAL_VISIBILITY_OUTSIDE_FIELD_OF_VIEW, SPATIAL_VISIBILITY_PARTIALLY_WITHIN_FIELD_OF_VIEW e SPATIAL_VISIBILITY_WITHIN_FIELD_OF_VIEW (Ie7e8c)
  • Classe SpatialVisibility sostituita con un oggetto pubblico con valori Int const. setSpatialVisibilityChangedListener ora accetta un Consumer<Int> anziché Consumer<SpatialVisibility> (Ie7e8c)
  • Costanti PointerCaptureComponent rinominate e spostate nell'oggetto PointerCaptureComponent.PointerCaptureState (I9c7ac)
  • PointerCaptureComponents' StateListener sostituita con Consumer<Int>. (I9c7ac)
  • InputEventListener sostituito con Consumer<InputEvent> (I9c7ac)
  • setPreferredAspectRatio è stato spostato dalla classe Scene all'oggetto SpatialWindow e accetta Session come primo parametro. (I7b717)
  • Entity.setHidden() sostituito da Entity.setEnabled() e Entity.isHidden() sostituito da Entity.isEnabled(). setHidden(false) è uguale a setEnabled(true) e isHidden() == !isEnabled(). (Icf0de)
  • Tipo Entity.contentDescription cambiato da String a CharSequence. (Ie59be)
  • Session.create e Session.configure ora generano SecurityException quando non sono state concesse autorizzazioni sufficienti, anziché restituire SessionCreatePermissionsNotGranted o SessionConfigurePermissionsNotGranted. (I7c488)
  • ResizableComponent.create ora richiede un Consumer<ResizeEvent> ResizeEventListener è stato sostituito con Consumer<ResizeEvent> ResizableComponent.size è stato rinominato in ResizableComponent.affordanceSize ResizableComponent.minimumSize è stato rinominato in ResizableComponent.minimumEntitySize ResizableComponent.maximumSize è stato rinominato in ResizableComponent.maximumEntitySize, ResizableComponent.autoHideContent è stato rinominato in ResizableComponent.shouldAutoHideContent ResizableComponent.forceShowResizeOverlay è stato rinominato in ResizableComponent.shouldAlwaysShowOverlay (I97a2d)
  • minSDK ridotto a 24 per androidx.xr.scenecore e androidx.xr.compose. I pacchetti XR richiedono comunque l'API 34 in fase di runtime. (I17224)
  • È stata rimossa la limitazione RequiresApi(34) su tutti i pacchetti Jetpack XR. Questa limitazione era ridondante, poiché Jetpack XR è attualmente disponibile solo sui dispositivi con livello API 34 o superiore. (Iae0f8)
  • L'artefatto SceneCore principale (xr:scenecore:scenecore) conterrà solo API asincrone in stile Kotlin. Gli sviluppatori Java possono fare affidamento sulla libreria xr:scenecore:scenecore-guava per accedere alle API compatibili. (If221b)
  • I progetti rilasciati con Kotlin 2.0 richiedono KGP 2.0.0 o versioni successive per essere utilizzati (Idb6b5)
  • Questa libreria ora utilizza le annotazioni di nullità JSpecify, che sono di tipo use. Gli sviluppatori Kotlin devono utilizzare il seguente argomento del compilatore per applicare l'utilizzo corretto: -Xjspecify-annotations=strict (questa è l'impostazione predefinita a partire dalla versione 2.1.0 del compilatore Kotlin) (Ia8420)
  • Tutti i metodi asincroni che restituiscono ListenableFuture sono stati sostituiti con funzioni di sospensione Kotlin. Gli sviluppatori Java che vogliono utilizzare metodi asincroni basati su ListenableFuture anziché funzioni di sospensione Kotlin ora devono utilizzare le funzioni di estensione in :xr:scenecore-scenecore-guava. Ad esempio, GuavaExrImage contiene le funzioni asincrone ExrImage equivalenti a Guava, GuavaScenePose contiene le funzioni asincrone ScenePose equivalenti a Guava, GuavaGltfModel contiene le funzioni asincrone Guava-equivalent GltfModel e così via. (If7283) (I0af60) (If7283) (Ia8515) (I4efdf) (I54bbf) (I3467a) (I82a33)

Correzioni di bug

  • Aggiornata la regola Jetpack XR Scenecore ProGuard per impedire AbstractMethodError per i client minimizzati. (I91a01)
  • Correzioni aggiuntive per supportare la minimizzazione di Proguard per Jetpack XR SceneCore (I4f47e)
  • È stato corretto un bug per cui un InteractableComponent potrebbe causare un arresto anomalo se hitPosition su HitInfo di InputEvent potrebbe causare un arresto anomalo se hitPosition restituito dal sistema era null (I7a695)
  • I valori Config *Mode sono stati rinominati per riflettere il loro comportamento. (I6d247)
  • Risolti i problemi relativi al campo visivo e a HitTest in SceneCore TestApp. (I2c51e)
  • È stato corretto un bug in SpatialCapabilities.hasCapability() per cui veniva restituito true se una qualsiasi delle funzionalità passate con un OR bit per bit era true, anziché restituire true solo se erano tutte true. (I2cd40)
  • SurfaceEntity.StereoMode.TOP_BOTTOM aggiornato in modo che la mappa in alto sia per l'occhio sinistro e quella in basso per l'occhio destro. (I4ae68)

Versione 1.0.0-alpha04

7 maggio 2025

androidx.xr.scenecore:scenecore:1.0.0-alpha04 e androidx.xr.scenecore:scenecore-testing:1.0.0-alpha04 sono state rilasciate. La versione 1.0.0-alpha04 contiene questi commit.

Nuove funzionalità

  • La gestione del pulsante Indietro ora funzionerà sulle entità del riquadro senza attività incorporate. Affinché la gestione del pulsante Indietro funzioni, devi specificare android:enableOnBackInvokedCallback= "true" nel manifest Android.
  • StereoSurfaceEntity ora supporta la riproduzione MV-HEVC tramite due nuovi valori StereoMode: MULTIVIEW_LEFT_PRIMARY e MULTIVIEW_RIGHT_PRIMARY.
  • PanelEntity.setSize e PanelEntity.getSize ora restituiscono le dimensioni nello spazio principale.
  • Entity.setPose, Entity.getPose, Entity.setScale, Entity.getScale, Entity.setAlpha e Entity.getAlpha ora accettano un nuovo parametro relativeTo, che consente di ottenere/impostare valori relativi a spazi diversi. I valori supportati sono Parent, Activity e Real World spaces, mentre il valore predefinito per questo parametro è Parent.
  • Metodi di estensione del callback di visibilità spaziale aggiunti a SessionExt.kt per monitorare quando i contenuti della scena si spostano all'interno o all'esterno del campo visivo dell'utente.
  • setPointSourceParams è stato aggiunto a SpatialAudioTrack, consentendo l'aggiornamento dei parametri dopo la creazione della traccia.
  • È stata aggiunta una nuova classe, Scene, con riferimenti alle API Scenecore. La scena sarà accessibile come proprietà di estensione di Session. Le funzioni all'interno di SessionExt sono state spostate in Scene, pertanto le importazioni dovranno essere modificate, ad esempio SessionExt.getScene(session).addSpatialCapababilitiesChangedListener contro SessionExt.addSpatialCapabilitiesChangedListener.
  • È stato aggiunto ActivityPose.hitTestAsync, che consente un hitTest rispetto ai contenuti virtuali.
  • È stato aggiunto un nuovo tipo di componente SpatialPointerComponent, che consente ai client di specificare l'icona visualizzata per l'indicatore o di disattivarla. Al momento questo componente può essere collegato solo a istanze PanelEntity.
  • È stata introdotta la nuova factory PanelEntity, che accetta le dimensioni del pannello in metri o pixel. La precedente factory PanelEntity che accettava due parametri di tipo Dimension per il riquadro è stata rimossa.

Modifiche alle API

  • È stata rimossa la limitazione RequiresApi(34) su tutti i pacchetti Jetpack XR. Questa limitazione era ridondante, poiché Jetpack XR è attualmente disponibile solo sui dispositivi con livello API 34 o superiore. (Iae0f8)
  • I progetti rilasciati con Kotlin 2.0 richiedono KGP 2.0.0 o versioni successive per essere utilizzati (Idb6b5)
  • La classe PermissionHelper è stata rimossa.
  • L'API PanelEntity.getPixelDensity è deprecata.
  • PanelEntity.setPixelDimensions e PanelEntity.getPixelDimension vengono rimossi e sostituiti da setSizeInPixels e getSizeInPixels.
  • Lingua Entity.getActivitySpaceAlpha rimossa. Può essere sostituito con Entity.getAlpha(Space.Activity).
  • Lingua Entity.getWorldSpaceScale rimossa. Può essere sostituito con Entity.getScale(Space.REAL\_WORLD).
  • La classe Session in SceneCore è stata eliminata a favore di Session in XR Runtime.
  • StereoSurfaceEntity è stato rinominato in SurfaceEntity.
  • Entity.setSize e Entity.getSize vengono rimossi e gli stessi metodi vengono aggiunti a PanelEntity.
  • PointSourceAttributes è stato rinominato in PointSourceParams.
  • SpatializerConstants.SOURCE\_TYPE\_BYPASS è stato rinominato in SpatializerConstants.SOURCE\_TYPE\_DEFAULT.
  • L'entità PointSourceParams è stata modificata da accesso pubblico ad accesso interno.
  • AnchorEntity.create ora richiede la configurazione di PlaneTrackingMode in Session.configure().
  • Le API SpatialUser ora richiedono la configurazione di HeadTrackingMode in Session.configure().
  • Quando ResizableComponent non è collegato, verrà visualizzato un log di livello INFO anziché un log di livello ERROR.
  • La classe Fov ora è una classe Kotlin normale.
  • Suddividi Entity.kt per inserire ogni tipo di entità concreta nel proprio file.
  • Quando crei un nuovo PanelEntity, la maggior parte delle visualizzazioni verrà riassegnata a un FrameLayout. In questo modo è più facile utilizzare LayoutInspector con i pannelli spaziali.
  • L'istanza XrExtensions attualmente utilizzata è ora registrata sulla piattaforma, secondo il criterio del "best effort", per facilitare il debug dell'app.

Correzioni di bug

  • È stata aggiunta una correzione per evitare un arresto anomalo che poteva verificarsi quando veniva spostato un PanelEntity con MovableComponent e AnchorPlacement
  • Risolto un problema per cui ResizableComponent forniva dimensioni obsolete nel callback onResizeStart.
  • Risolto un arresto anomalo che si verificava quando dispose() di JxrPlatformAdapterAxr veniva chiamato più volte.

Versione 1.0.0-alpha03

26 febbraio 2025

androidx.xr.scenecore:scenecore:1.0.0-alpha03 e androidx.xr.scenecore:scenecore-testing:1.0.0-alpha03 sono state rilasciate. La versione 1.0.0-alpha03 contiene questi commit.

Nuove funzionalità

  • La minimizzazione di Proguard è ora supportata per il codice Jetpack XR

Correzioni di bug

  • Ulteriori correzioni per supportare la minimizzazione di Proguard per Jetpack XR SceneCore (I4f47e)
  • Aggiornata la regola Jetpack XR Scenecore ProGuard per impedire AbstractMethodError per i client minimizzati. (I91a01)

Versione 1.0.0-alpha02

12 febbraio 2025

androidx.xr.scenecore:scenecore:1.0.0-alpha02 e androidx.xr.scenecore:scenecore-testing:1.0.0-alpha02 sono state rilasciate. La versione 1.0.0-alpha02 contiene questi commit.

Modifica che provoca un errore imminente che interessa le app create prima della versione 1.0.0-alpha02

  • I metodi factory sono stati spostati dalla classe Session a un metodo companion su ciascun tipo rispettivo:
    • Session.createActivityPanelEntity(Dimensions, String, Activity, Pose) è stato eliminato e sostituito con ActivityPanelEntity.create(Session, Dimensions, String, Pose)
    • Session.createAnchorEntity(Anchor) è stato eliminato e sostituito con AnchorEntity.create(Session, Anchor)
    • Session.createAnchorEntity(Dimensions, Int, Int, Duration) è stato eliminato e sostituito con AnchorEntity.create(Session, Dimensions, Int, Int, Duration)
    • Session.createEntity(String, Pose) è stato eliminato e sostituito con ContentlessEntity.create(Session, String, Pose)
    • Session.createExrImageResource(String) è stato eliminato e sostituito con ExrImage.create(Session, String)
    • Session.createGltfEntity(GltfModel, Pose) è stato eliminato e sostituito con GltfModelEntity.create(Session, GltfModel, Pose)
    • Session.createGltfModelResource(String) è stato eliminato e sostituito con GltfModel.create(Session, String)
    • Session.createInteractableComponent(Executor, InputEventListener) è stato eliminato e sostituito con InteractableComponent.create(Session, Executor, InputEventListener)
    • Session.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean) è stato eliminato e sostituito con MovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean)
    • Session.createPanelEntity(View, Dimensions, Dimensions, String, Pose) è stato eliminato e sostituito con PanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose)
    • Session.createResizableComponent(Dimensions, Dimensions) è stato eliminato e sostituito con ResizableComponent.create(Session, Dimensions, Dimensions)
    • Session.createStereoSurfaceEntity(Int, Dimensions, Pose) è stato eliminato e sostituito con StereoSurface.create(Session, Int, Dimensions, Pose)
  • Sono stati rimossi i seguenti metodi deprecati:
    • Eliminazione completata: Session.canEmbedActivityPanel(Activity). Usa invece il descrittore getSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY).
    • Eliminazione completata: Session.hasSpatialCapability(Int). È stato sostituito con l'utilizzo di getSpatialCapabilities().hasCapability() come modo più compartimentato per verificare la presenza di funzionalità spaziali, poiché getSpatialCapabilities() restituisce un oggetto SpatialCapabilities.
    • Session.requestFullSpaceMode() è stato eliminato e sostituito con SpatialEnvironment.requestFullSpaceMode()
    • Session.requestHomeSpaceMode() è stato eliminato e sostituito con SpatialEnvironment.requestHomeSpaceMode()
  • Session.setFullSpaceMode(Bundle) e Session.setFullSpaceModeWithEnvironmentInherited(Bundle) sono state spostate nelle funzioni di estensione. I file degli sviluppatori dovranno aggiungere le nuove importazioni per l'accesso:
    • import androidx.xr.scenecore.setFullSpaceMode
    • import androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
  • Session.setPreferredAspectRatio(Activity, Float) è stato spostato in una funzione di estensione. I file dello sviluppatore dovranno aggiungere la nuova importazione per l'accesso:
    • import androidx.xr.scenecore.setPreferredAspectRatio
  • Session.getEntitiesOfType(Class<out T>) e Session.getEntityForRtEntity(RtEntity) sono state spostate nelle funzioni di estensione. I file degli sviluppatori dovranno aggiungere le nuove importazioni per l'accesso:
    • import androidx.xr.scenecore.getEntitiesOfType
    • import androidx.xr.scenecore.getEntityForRtEntity
  • La zona Session.unpersistAnchor(Anchor) è stata eliminata
  • La zona Session.createPersistedAnchorEntity(UUID) è stata eliminata

Problemi noti

  • PanelEntity.setCornerRadius() e ActivityPanelEntity.setCornerRadius() potrebbero non avere effetto fino al successivo spostamento del pannello, che può essere mitigato spostando il pannello nella posizione corrente
  • Quando viene chiamato BoundsChanged su ActivitySpace, alcuni ActivityPose potrebbero non essere stati aggiornati correttamente. Verrà aggiornato durante la prossima chiamata OnSpaceUpdated il giorno ActivitySpace

Modifiche che provocano un errore e modifiche del comportamento

  • PanelEntity e ActivityPanelEntity avranno un raggio dell'angolo predefinito di 32 dp o inferiore se il pannello ha una larghezza o un'altezza inferiore a 32 dp

Nuove API e funzionalità

  • Introduce StereoSurface.CanvasShape, che consente di creare canvas Spherical e Hemispherical per il rendering di contenuti multimediali immersivi.
  • StereoSurfaceEntity.create() ora accetta un parametro CanvasShape. (Questo parametro è attualmente ignorato, ma verrà utilizzato in una release futura)
  • StereoSurfaceEntity.create() non accetta più un parametro Dimensions. Le applicazioni devono controllare le dimensioni del canvas impostando CanvasShape
  • StereoSurfaceEntity ha un membro CanvasShape che può essere impostato in modo dinamico.
  • StereoSurfaceEntity.dimensions è ora una proprietà di sola lettura; le applicazioni devono impostare CanvasShape per modificare le dimensioni.
  • StereoSurfaceEntity ora consente di reimpostare StereoMode dopo la creazione.

Altre modifiche

  • Ridotto il valore minSDK in fase di compilazione a 24. Tutte le API Jetpack XR continuano a richiedere l'API 34 in fase di runtime.
  • La classe Session factory di SceneCore (Session.create) non lancia più un intent per acquisire l'autorizzazione SCENE_UNDERSTANDING. L'applicazione client deve invece richiedere esplicitamente le autorizzazioni all'utente prima di tentare di creare gli ancoraggi. La creazione dell'ancoraggio non andrà a buon fine se l'utente non concede l'autorizzazione.

Correzioni di bug

  • getActivitySpacePose() è stato corretto per tenere conto della scala ActivitySpace restituendo i valori di traslazione in metri scalati anziché restituire sempre metri non scalati. transformPoseTo ora utilizza anche le unità corrette per calcolare le modifiche alle coordinate quando ActivitySpace è coinvolto nell'origine o nella destinazione.
  • Lo skybox verrà ora impostato su uno skybox completamente nero ogni volta che viene passata una preferenza skybox null utilizzando setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom)). Per ripristinare lo skybox e la geometria predefiniti del sistema, utilizza setSpatialEnvironmentPreference(null).

Versione 1.0.0-alpha01

12 dicembre 2024

androidx.xr.scenecore:scenecore-* 1.0.0-alpha01 è stato rilasciato.

Funzionalità della release iniziale Release iniziale per gli sviluppatori di Jetpack SceneCore, una libreria di grafi di scene 3D per la creazione e la manipolazione di scene e ambienti immersivi. Questa libreria ti consente di posizionare e disporre modelli 3D e pannelli di contenuti l'uno rispetto all'altro e ai tuoi ambienti virtuali o reali.

  • SpatialEnvironment: crea esperienze completamente immersive con un'immagine skybox e/o una geometria del modello 3D come sfondo per la scena XR del tuo ambiente. In alternativa, attiva il passthrough per integrare la scena virtuale con l'ambiente reale dell'utente.
  • PanelEntity: aggiungi contenuti 2D alle tue scene 3D incorporando layout e attività Android standard in pannelli spazializzati che possono fluttuare o essere ancorati a superfici reali.
  • GltfModelEntity: posiziona, anima e interagisci con i modelli 3D nella scena. SceneCore supporta il formato file glTF per facilitare l'integrazione con i modelli esistenti.
  • SpatialAudio: aggiungi sorgenti audio ambientali e puntuali alla tua scena 3D per un suono spazializzato completamente immersivo.
  • StereoSurfaceEntity: SceneCore supporta il routing dei contenuti per l'occhio sinistro/destro di cui viene eseguito il rendering su una superficie Android. Può essere utilizzato per eseguire il rendering di contenuti stereoscopici in un formato affiancato o dall'alto verso il basso, ad esempio foto stereo, video 3D o altre UI con rendering dinamico. Le applicazioni devono utilizzare MediaPlayer o ExoPlayer per la decodifica video.
  • Sistema di componenti: SceneCore offre un sistema di componenti solido e flessibile per aggiungere funzionalità ai tuoi contenuti XR, tra cui affordance per consentire agli utenti di spostare, ridimensionare e interagire con modelli e pannelli.
  • Ancoraggio: con il passthrough abilitato, puoi collegare pannelli e modelli a superfici reali, offrendo agli utenti un'integrazione perfetta dei contenuti virtuali nel loro ambiente reale.
  • Posa dell'utente: accedi alla posizione dell'utente nella scena virtuale per orientare i contenuti in base alla sua posizione.
  • SpatialCapabilities: crea app completamente adattive che sfruttano le funzionalità spazializzate, se disponibili, come il posizionamento 3D dei contenuti dell'UI. Inoltre, la tua app può monitorare le modifiche alle funzionalità durante l'esecuzione per modificare l'esperienza in base al modo in cui l'utente utilizza il proprio dispositivo Android XR.

Problemi noti

  • Al momento, per utilizzare Jetpack SceneCore è richiesto un minSDK di 30. Come soluzione alternativa, aggiungi la seguente voce del manifest <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> per poter eseguire la build e l'esecuzione con un minSDK di 23.
  • La sessione può diventare non valida in varie situazioni che ricreano automaticamente l'attività, tra cui il ridimensionamento di un riquadro principale, il collegamento di periferiche e il passaggio dalla modalità Luce alla modalità Buio e viceversa. Se riscontri problemi di annullamento della sessione, le soluzioni alternative includono rendere il riquadro principale non ridimensionabile, utilizzare un'entità del riquadro dinamico, disattivare la ricreazione dell'attività per modifiche di configurazione specifiche o disattivare le modifiche del tema della modalità Luce/Buio.
  • I componenti Movable e Resizable non sono supportati su GltfEntity.
  • Entity.getSize() non è supportato su GltfEntity.
  • Le app Jetpack XR devono richiedere l'autorizzazione android.permission.SCENE_UNDERSTANDING in AndroidManifest.
  • La creazione di una sessione è supportata solo su un dispositivo Android XR. Al momento, se crei una sessione e provi a utilizzarla su un dispositivo Android XR non Android, riceverai un'eccezione RuntimeException.
  • L'impostazione dello skybox su null tramite "SpatialEnvironment.setSpatialEnvironmentPreference()" non genera uno skybox nero uniforme come documentato. Potrebbe essere visualizzato lo skybox predefinito di sistema o non essere apportata alcuna modifica allo skybox corrente.
  • I client SceneCore devono aggiungere implementation(“com.google.guava:listenablefuture-1.0”) alla configurazione Gradle per le dipendenze dell'app. In una release futura, scenecore includerà questa libreria come dipendenza api, quindi i client non dovranno dichiararla esplicitamente.
  • SceneCore include erroneamente com.google.guava:guava-31.1-android e com.google.protobuf:protobuf-javalite come dipendenze transitive. Se ciò comporta errori di classi duplicate nella build, queste due dipendenze possono essere escluse in sicurezza.
  • Se la tua app utilizza SceneCore e attiva ProGuard, si arresterà in modo anomalo quando crei una sessione. Come soluzione alternativa, disattiva ProGuard. Per saperne di più su come attivare ProGuard, consulta questa guida.