Jetpack SceneCore
| 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.
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.updateIndexDatae un costruttoreCustomMesh.BuilderFromMeshDatadinamico) per supportare l'aggiornamento dei dati di vertici e indici in fase di runtime. (Ia1ecb) - Sono stati aggiunti i metodi helper
VertexLayout.getBufferIndexper recuperare facilmente l'indice del buffer per un determinatoVertexAttributeoVertexBufferLayout. (I1a9e3) - Ho reso
CustomMesh.boundsuna variabile in modo che il riquadro di delimitazione possa essere aggiornato dinamicamente in fase di runtime. (Ib0397) - Sono state promosse
glTFAPI di animazione (GltfAnimation,GltfModelEntity.getAnimationseGltfModelEntity.stopAllAnimations) a pubbliche/stabili, mantenendo il setterGltfAnimation.loop come sperimentale eGltfAnimationStartOptionse start(options) come sperimentali e deprecati. (Iacdae) - Aggiunto
stopAllAnimations()aGltfModelEntity, resoGltfAnimation.start()senza parametri, aggiunte le proprietàloopespeedaGltfAnimatione ritiratiGltfAnimationStartOptions,start(options)eseekTo(Duration). (I53105) - Sono state aggiornate le API
GltfModelEntityper documentareIllegalStateException(in particolareEntity.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
AudioOutputProviderper evidenziare che non deve essere riutilizzato con più istanzeExoPlayer(I6b18e) - Sono state rimosse le dipendenze non necessarie da
impressda 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
perceptionRuntimeCacheinSessionExte rifattorizzandolo per recuperarePerceptionRuntimedirettamente dall'istanzaSession. (Ie35b1) - È stato corretto un potenziale leak di contesto utilizzando
applicationContextper gli handle nativiOpenXRper garantire che il runtime nativo non contenga riferimenti a un contestoActivity. (Ie35b1) - Risolte le race condition in
XrInstanceManagerintroducendo una sincronizzazione adeguata e un blocco dell'inizializzazione. (Ie35b1) - Risolto il problema di
ReferenceCleanerper supportare l'annullamento della registrazione delle azioni di pulizia e garantire che le azioni di pulizia diEntityvengano eseguite in modo esplicito durantedispose(), impedendo l'esecuzione duplicata durante la garbage collection. (Ie35b1) - Risolta una perdita di memoria in
ScenerimuovendosceneCacheinSessionExte rifattorizzandoSceneper recuperare l'istanza direttamente dasessionConnectors. (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-openxraggiunta 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ànullse 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
GltfAnimationeSpatialGltfModelAnimationsono 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)
ActivitySpaceeAnchorSpaceora estendono una classeSpaceEntitycomune che contiene un comportamento comune per le entità le cui posizioni sono controllate dal sistema (I506ec, b/513619219)- Aggiornato
AnchorEntityin modo che venga chiamatoAnchorSpace(Ifa95e, b/513619219) - Fornisce l'API di test pubblica
SoundEffectPoolComponentTester. (I87df7, b/498104417) - È stato aggiunto un parametro
cornerRadiusfacoltativo al costruttoreSurfaceEntity.Shape.Quade 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 canvasSurfaceEntitycon angoli arrotondati ed eseguire query sul raggio dei Quad esistenti. (Ia7809, b/474681085) - Fornisce overload dell'API di test pubblica
SpatialAudioTrackBuilderTester,SpatialAudioTrackTestereSceneCoreTestRule.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,setIndexDataeaddSubsetaCustomMesh.BuilderFromMeshDataeCustomMesh.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 comeByteBufferRegionoMeshSubset. (I84d5c) Scene.requestFullSpaceMode()eScene.requestHomeSpaceMode()sono stati rinominati rispettivamente inrequestFullSpace()erequestHomeSpace(). 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
PanelEntityTestereMainPanelEntityTester(I961e4) - Aggiunta della proprietà
pointSourceParamsaSoundEffectPoolComponent(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
GltfModelTestereSceneCoreTestRule.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,TestGltfModelNodeeTestGltfAnimation. (I72c4d) - Fornisce l'API di test pubblica
SceneTestereSceneCoreTestRule.sceneTester. (Ib4ec5) - Fornisce l'API di test pubblica
PerceptionSpaceTestereSceneCoreTestRule.perceptionSpaceTester. (Icf739) - Fornisce l'API di test pubblica
MeshEntityTester. (I63801) - Fornisce l'API di test pubblica
ImageBasedLightingAssetTestere gli overloadSceneCoreTestRule.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
ActivitySpaceTestereSceneCoreTestRule.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
PixelDensityed è stata esposta tramiteScene#virtualPixelDensityper fornire un rapporto pixel per metro basato su hardware per una mappatura accurata delle dimensioni fisiche inActivitySpace. (I0e3ac) - Aggiunte API pubbliche per la creazione e il rendering di mesh personalizzate. (I7ad2f)
- L'API
VertexLayoutè stata aggiornata per utilizzare un elenco diVertexBufferLayout, in cui ogniVertexBufferLayoutdescrive 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.createTrackingMovableper 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,ExrImageeImageBasedLightingAssetora implementanoAutoCloseableper consentire la gestione idiomatica delle risorse utilizzando il bloccousedi Kotlin. (I1ac79)- È stata introdotta la classe
ImageBasedLightingAssetper sostituireExrImageper la definizione dell'illuminazione dell'ambiente spaziale.ExrImageè stato ritirato e rimosso dall'API pubblica.SpatialEnvironmentPreferenceè stato aggiornato per utilizzareImageBasedLightingAsset. (I6c92a) - Il parametro
skyboxinSpatialEnvironmentè stato rinominato inimageBasedLightingAssetper 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é chiamaredispose()sulle istanze Entity, le app possono rendere le istanze pulibili impostandoparentsunulle cancellando tutti i riferimenti forti a queste istanze. (I396c9)- I metodi
set/clearOnLoadCompleteListenerdiSoundEffectPoolsono stati eliminati. Usa invece il descrittoreadd/removeLoadCompleteListener. (Iae78d) set/clearSpatialVisibilityChangedListenerdella scena è stato sostituito conadd/removeSpatialVisibilityChangedListener. (I67dff)- Tutti i metodi SceneCore
add/removeOnFooListenersono stati rinominatiadd/removeFooListener, rimuovendoOndal nome. (Ibe50b) - I metodi
AnchorEntity.setOnOriginChangedListenereAnchorEntity.setOnStateChangedListenersono stati sostituiti con i metodiadd/removeFooListenerper supportare più listener contemporaneamente. (I13749) AnchorEntity.State.TIMEDOUTrinominato inState.TIMED_OUT. (Id2b8d)- L'API Component è stata rifattorizzata per migliorare la sicurezza e l'estensibilità.
Componentè ora una classe astratta. I metodionAttach()eonDetach()sono oraprotectedper impedire le chiamate dirette. UtilizzaEntity.addComponent()eEntity.removeComponent()per gestire i cicli di vita dei componenti. (Id04e8) - È stata eseguita la migrazione delle costanti
PlaneSemanticTypePlaneOrientationdi SceneCore da Int a tipi personalizzati. Le costantiANYverranno rimosse. I client devono enumerare esplicitamente tutte le costanti desiderate o utilizzare le nuove costanti Set immutabili.ALL. Il metodo factoryAnchorEntityora 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
boneCountdurante la creazione di unMeshEntitye aggiornando l'animazione in tempo reale utilizzandoMeshEntity.setBoneTransforms(). (Id8ba2, b/496692490) - È stata introdotta l'API
CustomMeshsperimentale. Ora gli sviluppatori possono creare ed eseguire il rendering della geometria 3D in modo programmatico nelle loro scene utilizzandoCustomMesh,MeshBuffereMeshEntity. (I94617) - Contatto rimosso:
androidx.xr.scenecore.SpatializerConstants.SourceType.SOURCE_TYPE_SOUND_FIELD. Usa invece il descrittoreSourceType.SOUND_FIELD. (Ia68b9) - Aggiunta di componenti audio spaziali:
PositionalAudioComponent,SoundEffectPoolComponenteSoundFieldAudioComponent(Ieda89) AnchorEntity.getAnchorè stato sostituito conAnchorEntity.anchore ora restituirà unAnchorquandoAnchorEntityè stato creato da unAnchorARCore (I5c7c8)- Il valore predefinito del parametro
parentnei metodi factoryActivityPanelEntity,GltfModelEntity,GroupEntity,PanelEntityeSurfaceEntityè stato modificato daActivitySpaceanull. 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 tramiteEntity.parent = ...(Ie7cc1)
Correzioni di bug
SceneCoreora recupera automaticamente le istanzeEntityquando diventano raggiungibili in modalità fantasma, eliminando la necessità per gli sviluppatori di richiamare esplicitamentedispose()per liberare risorse. Per assicurarsi che un'istanza [Entity] venga recuperata correttamente, gli sviluppatori devono:- Scollegalo dal grafico della scena impostando
parentsunull. - 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)
- Scollegalo dal grafico della scena impostando
- Regole di conservazione di Proguard più restrittive per tutte le librerie
SceneCore. (I98447)
Problemi noti
- Il collegamento di un
PositionalAudioComponenta unEntitycon un'istanzaExoPlayerinattiva causerà un arresto anomalo. Non chiamaresetPointSourceParamsné 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
TrackingStateeVpsAvailabilityResultsono stati spostati inandroidx.xr.arcore packagee i tipi inandroidx.xr.runtimesono ora deprecati. (Ic7930, b/480462213)Plane.Typerinominato inPlaneType. (I8c90c, b/482675376)Plane.Labelrinominato inPlaneLabel. (Ic6b67, b/482675376)androidx.xr.runtime.FieldOfViewè stato ritirato. Usa invece il descrittoreandroidx.xr.runtime.math.FieldOfView. (Ia01a0, b/480233045)Matrix4.poseè stato rinominato inMatrix4.toPose(). La proprietà pose è ora deprecata. (I329b4, b/493383490)- Valori enum
HandJointTyperinominati. (Ifbc83, b/482670596) - Esporre
Component.onAttacheonDetachcome API pubblica per consentire implementazioniComponentpersonalizzate. (I0ca1f) - Aggiunta di componenti audio spaziali (I39ddd, b/489421980, b/436642086, b/436642499)
- Rimuovi l'entità da
PointSourceParams. L'entità verrà invece utilizzata direttamente conSpatialAudioTrack,SpatialSoundPooleSpatialMediaPlayer(Ib3685, b/489421980, b/436634048) DeviceTrackingMode.LAST_KNOWNè stato rinominato inSPATIAL_LAST_KNOWN(con un fallback deprecato), è stato aggiuntoINERTIAL_LAST_KNOWNper il monitoraggio 3DoF ed è stato aggiuntoTRACKING_DEGRADEDaTrackingState. (Ie661c, b/445466590)GroupEntitydeprecato. Per avere un'entità con solo la funzionalità di base, chiamaEntity.create, che restituirà un'interfaccia Entity. (I4c450, b/473867483)- API
XrLogaggiunta. ImpostaXrLog.isEnabledsutrueper attivare il logging in JetpackXR e utilizzaXrLog.Levelper impostare il livello di log. (I76a1f, b/463460895, b/487378441)
Correzioni di bug
Scene.keyEntityora è impostato sumainPanelEntityper 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
unscaledGravityAlignedActivitySpacerimosso daSession.create.ActivitySpaceora è sempre non scalato e allineato alla gravità. (If6f11, b/458173423) - Sono state rimosse le funzioni deprecate
setMaterialOverrideeclearMaterialOverridedaGltfModelEntity, che ora vengono chiamate sul singoloGltfModelNode. (I2e5d2) - Sono stati aggiunti
transformPixelCoordinatesToLocalPositionetransformNormalizedCoordinatesToLocalPositionaPanelEntitye sono stati rimossi i metodi sperimentali equivalenti che restituivano pose anziché posizioniVector3. (Ib6960, b/460123106, b/458333591) - Sono state aggiunte le API
GltfAnimationper il controllo delle animazioni glTF inSceneCore. (I2c172, b/466065486, b/465819070, b/465818617) ScenePose.activitySpacePoseè stato rinominato inScenePose.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
MovableComponentpotrebbe non essere visualizzata perSurfaceEntitye altri tipi di entità non del riquadro. L'impostazione esplicita diMovableComponent.sizefarà 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 inandroidx.xr.scenecore:scenecore-*:1.0.0-alpha13e nelle release successive. Le app interessate devono essere aggiornate all'ultima versione.
Modifiche alle API
ActivitySpace.addOnSpaceUpdatedListenereActivitySpace.removeOnSpaceUpdatedListenersono stati rinominati inaddOnOriginChangedListenereremoveOnOriginChangedListener.AnchorEntity.setOnSpaceUpdatedListenerè stato rinominato insetOnOriginChangedListener. (I5d8fb)- Aggiunta la proprietà del nome pubblico a
FakeEntitye resa pubblica la visualizzazione suFakePanelEntity. (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.InvalidRenderViewpointgetPerceivedResolutionRenderViewpointCameraViewScenePoseQuesto nome riflette meglio la nuova implementazione. (I8c967, b/446989745, b/419311998) - I metodi
PanelEntity/SurfaceEntity.getPerceivedResolutionora accettano come argomento unRenderViewpointfornito dallo sviluppatore. In precedenza, il runtime sceglieva arbitrariamente ilRenderViewpointutilizzato nel calcolo della risoluzione percepita. (I8c967, b/446989745, b/419311998) SpatialUser,ScenePose.HeadeScenePose.CameraViewrimosse. La funzionalità di queste API è coperta dalle APIArDeviceeRenderViewpointall'interno di ARCore per Jetpack XR. Per ottenere unScenePosecorrispondente alla testa o all'occhio sinistro o destro dell'utente, gli sviluppatori possono utilizzarePerceptionSpace.getScenePoseFromPerceptionPosecon 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
transformPixelCoordinatesToPoseetransformNormalizedCoordinatesToPoseaggiunti aPanelEntity(I462b3)- È stata aggiunta una classe helper, Utils, al runtime
SceneCorein base alla logica inSceneCore(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
IllegalStateExceptionquando 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
ScenePoseche rappresenta la composizione della postura di origine dello spazio di percezione e di una postura rispetto all'origine dello spazio di percezione. (I5b50a) - Funzione
getGravityAlignedPoseaggiunta. La posa allineata alla gravità ignora il beccheggio e il rollio della rotazione. (I5ae21) - I tipi di costanti
AnchorEntity.Statesono stati modificati da Ints a sottotipi di State. (Ib0c49) getChildren()aggiunto all'interfaccia Entity. Ciclo di vita diMainPanelEntityaggiornato. (Ia69d6)
Modifiche alle API
- I tipi di costanti
PointerCaptureComponent.PointerCaptureStatesono stati modificati da Int ai sottotipiPointerCaptureState. (Ic888a) Scene.spatialCapabilitiesora è di tipoSet<SpatialCapability>anziché un campo Int. Le costantiSpatialCapabilitysono state rinominate. (I9c109)- I tipi di costanti
SurfaceEntitysono stati rinominati e modificati da Int a sottotipiSurfaceEntity. (I419ed) - I tipi di costanti
SpatializerConstantsono stati rinominati e modificati da Int a sottotipiSpatializerConstant. (Ia0e18) - I tipi di costanti
TextureSamplersono stati rinominati e modificati da Int a sottotipiTextureSampler. (I44078) - I tipi di costanti
SpatialVisibilitysono stati modificati da Int a sottotipiSpatialVisibility. (I70739) - I tipi di costanti
ResizeEvent.ResizeStatesono stati rinominati e modificati da Int a sottotipiResizeState. (I384d5) - I tipi di costanti
InputEventsono stati rinominati e modificati da Int per ereditare dal rispettivo tipo di inclusione. (I82817) - I tipi di costanti
GltfModelEntity.AnimationStatesono stati modificati da Int ai sottotipiAnimationState. (I24f4e) - I tipi di costanti
AlphaModesono stati rinominati e modificati da Int a sottotipiAlphaMode. (I27b56) - I tipi di costanti
Spacesono stati modificati da Int a sottotipi di spazio. (I9255b) ScenePose.hitTeste i metodi correlati ora restituiscononullse non è stata trovata alcuna intersezione, anziché unHitTestResultcon unhitPositionnull.HitTestResult.hitPositionnon è più nullable. (I1400a)- Modificati i riferimenti di
ActivityPoseinScenePose. (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 intransferActivity(I273c5, b/430332856)
Correzioni di bug
:xr:scenecore:scenecore-spatial-renderinge:xr:scenecore:scenecore-spatial-coresono stati aggiunti come dipendenza di implementazione di:xr:scenecore:scenecore(I6ab65, b/447000520)- Viene generata un'eccezione se si accede a
session.scenedopo 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 inisFixedAspectRatioEnableded è stata resa una proprietà booleana (I5c4e8, b/440588971)- I falsi
Scenecoreora si trovano nel moduloxr:scenecore:scenecore-testing. (Idd951) shouldAutoHideContentè stato rinominato inisAutoHideContentWhileResizingEnabledeshouldAlwaysShowOverlayinisAlwaysShowOverlayEnabled(I97c36, b/432335421)- Aggiornate le costanti
SceneCoreTextureSamplerper migliorare la leggibilità, ad esempioTextureSampler.MinFilter.LINEARora èTextureSampler.MIN_FILTER_LINEAR(Ib159c) - Il setter
setKeyEntitydella scena è stato unito alla variabilekeyEntity. Se impostikeyEntitysu un'entità non spostabile comeAnchorEntity, verrà generato unIllegalArgumentExceptionanziché restituire un valore booleano falso. (I62080, b/428721695, b/422215745) - La variabile
SpatialModeChangeListenerdella scena è stata sostituita consetSpatialModeChangedListener. Accetta unConsumer<SpatialModeChangeEvent>anziché unSpatialModeChangedListener.setSpatialModeChangedListenerora può facoltativamente accettare un Executor. (I62080, b/428721695, b/422215745) - È stato rimosso il parametro
bundledaActivityPanelEntity.startActivity(I64344, b/430332856, b/430333040) SpatializerConstants.SOURCE_TYPE_BYPASSrinominato inSpatializerConstants.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.CanvasShapeha rinominatoShapeSurfaceEntity.CanvasShape.Vr180Hemisphereha rinominatoHemisphereSurfaceEntity.CanvasShape.Vr360Sphereha rinominatoSphereSurfaceEntity.EdgeFeatheringParams.SmoothFeatherha rinominatoRectangleFeatherSurfaceEntity.EdgeFeathingParams.SolidEdgeha rinominatoNoFeatheringSurfaceEntity.ContentSecurityLevelha rinominatoSurfaceProtectionSurfaceEntity.ContentSecurityLevel.{values}ha aggiunto un prefissoSURFACE_PROTECTION_.SurfaceEntity.SuperSampling.{$values}ha aggiunto un prefissoSUPER_SAMPLING_SurfaceEntity.StereoMode.{values}ha aggiunto un prefissoSTEREO_MODE_SurfaceEntity.ContentColorMetadata.maxCLLrinominato inmaxContentLightLevel(I7eb5f, b/422216050, b/427529950)
launchActivityè stato rinominato instartActivity(I7db90, b/430332856)- Contatto rimosso:
Scene.activitySpaceRoot. Usa invece il descrittoreScene.activitySpace. (I05ee8, b/378706624, b/422215745) configureBundleForFullSpaceModeLauncheconfigureBundleForFullSpaceModeLaunchWithEnvironmentInheritedsono stati rinominati rispettivamente increateBundleForFullSpaceModeLaunchecreateBundleForFullSpaceModeLaunchWithEnvironmentInherited, spostati nel file LaunchUtils.kt come metodi di primo livello e accettano Session come primo parametro (I64a2c, b/437186050)- La factory
GroupEntityora restituisce il tipoGroupEntityanziché Entity. (I66042)
Correzioni di bug
- Genera un
IllegalStateExceptionquando un'istanza di entità viene utilizzata dopo l'eliminazione. (I90990, b/427314036, b/432063442)
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
BaseEntityeBaseScenePosediSceneCore(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) PerceivedResolutionMetodi 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à
recommendedContentBoxInFullSpaceaggiunta aActivitySpace. 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.PixelDimensionsaandroidx.xr.runtime.math.IntSize2d; daandroidx.xr.scenecore.Dimensionsaandroidx.xr.runtime.math.FloatSize3d; daandroidx.xr.scenecore.ActivityPoseaScenePose, daandroidx.xr.scenecore.ContentlessEntityaGroupEntity, daandroidx.xr.scenecore.PlaneTypeaPlaneOrientation; daandroidx.xr.scenecore.PlaneSemanticaPlaneSemanticType. (Ifd405)(I3b622) (If534d) - Un certo numero di setter per le proprietà di
Scenesono stati resi privati; non erano destinati a essere modificati dai clientSceneCore:activitySpace,activitySpaceRoot,mainPanelEntity,perceptionSpace,spatialCapabilities,spatialEnvironmentespatialUser. (I2f506) - In Entity: sono state modificate le seguenti proprietà:
get/setParent(),setContentDescription;Entity.is/setHidden()è stato ritirato, utilizzaEntity.is/setEnabled. (Ibc4c6) - È stata rimossa la classe
androidx.xr.scenecore.BasePanelEntity. Utilizza direttamentePanelEntity. Sostituzione dei getter e dei setter perPanelEntitycon le proprietà. La proprietàPanelEntity.sizeè stata modificata daFloat3dSizeaFloat2dSize. È stato rimosso il metodo deprecatoandroidx.xr.scenecore.PanelEntity.getPixelDimensions. Utilizza invecegetSizeInPixels. (Icc174) androidx.xr.scenecore.OnSpaceUpdatedListenersostituita conRunnable. (I19308)SpatialUser.getCameraViews()è stato sostituito con una proprietà. (Ib0cc5) PerExrImageeGltfModel:, i metodicreatesono stati modificati in modo da essere funzioni di sospensione; i parametri di creazione sono stati modificati in modo da accettare unUrio unPathanziché unString. (Id8883) (I0d247), (I25706)SpatialEnvironment.requestFullSpaceModeeSpatialEnvironment.requestHomeSpaceModesono stati spostati in Scene, ad esempio utilizzasession.scene.requestFullSpaceMode()anzichésession.scene.spatialEnvironment.requestFullSpaceMode().addOnPassthroughOpacityChangedListenereaddOnSpatialEnvironmentChangedListenerora hanno override che accettano Executor facoltativi. (I12fe0) (I6b21e)- Sono stati rimossi i seguenti metodi
SpatialEnvironmentdeprecati:togglePassthrough,setPassthrough,setPassthroughOpacity,getPassthroughMode,getPassthroughOpacity,setSkyboxesetGeometry. È stata rimossa anche la classe deprecataSpatialEnvironment.PassthroughMode(I927bd) (I927bd) (I927bd) - Sostituzione dei seguenti getter e setter
SpatialEnvironmentcon le proprietà Kotlin:getCurrentPassthroughOpacity(),get/setPassthroughOpacityPreference(),get/setSpatialEnvironmentPreference(),isSpatialEnvironmentPreferenceActive()(I33a7b) (Ie06e2) (Ie06e2) - Tipo di
SpatialEnvironmentPreference.preferredPassthroughOpacitycambiato daFloat?aFloat. Non accetta più valori null. Invece,SpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCEviene utilizzato per indicare che non esiste una preferenza di opacità. (I40107) - Aggiornato il parametro
windowBoundsPxinpixelDimensionse il relativo tipo da Rect aIntSize2dnel metodo create. (I1926e) - Il costruttore
SpatialEnvironmentora è interno (I75a51) - La classe
SpatialPointerIconNonee le classiSpatialPointerIconCirclesono state sostituite con gli oggetti companionSpatialPointerIcon.NONEeSpatialPointerIcon.CIRCLE(I416d2) SpatialPointerIconinSpatialPointerComponentnon è più nullable. UtilizzaSpatialPointerIcon.DEFAULTanziché 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 metodoAnchorEntity.create()sono stati rinominati per maggiore chiarezza. Nei metodi diAnchorEntityper l'impostazione e l'aggiunta di listener, il listener è stato spostato nell'argomento finale per abilitare le espressioni lambda finali. Sostituzione diandroidx.xr.scenecore.OnStateChangedListenerperAnchorEntityconConsumer<AnchorEntity.State>. (I472e0)GltfModelEntity.getAnimationState()è ora una proprietà. (I10b29)ActivitySpace.getBounds()è stato sostituito con una proprietà.ActivitySpace.addBoundsChangedListenerrinominato inActivitySpace.addOnBoundsChangedListener.ActivitySpace.setOnSpaceUpdatedListenersostituito con i metodi di aggiunta/rimozione. (I4c956)- Per
AnchorPlacement: planeTypeFilterè stato rinominato inanchorablePlaneOrientations,planeSemanticFilterè stato rinominato inanchorablePlaneSemanticTypes. L'aggiunta di unMovableComponenta unAnchorEntityoActivitySpacerestituirà false,MoveListenerè stato rinominato inEntityMoveListener shouldDisposeParentAnchor, che è stato rinominato indisposeParentOnReAnchor systemMovable, che è stato rimosso dalla funzionecreatea favore dicreeateCustomMovable,createSystemMovableecreateAnchorable(If11c4) - Rimosso
SurfaceEntity.featherRadiusX/Ye aggiunto un concetto di classeEdgeFeatheringParams. (Ic78fc) - Il metodo
PanelEntity.enablePanelDepthTest()è stato sostituito con la proprietàpanelClippingConfig. ImpostaScene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true)per attivare il test di profondità oPanelClippingConfig(isDepthTestEnabled = false)per disattivarlo. (I0cbe0) Scene.mainPanelEntityè ora di tipoMainPanelEntityanzichéPanelEntity(I7125a)- Il metodo
setFullSpaceModedi Scene è stato rinominato inconfigureBundleForFullSpaceModeLaunche il metodosetFullSpaceModeWithEnvironmentInheritedinconfigureBundleForFullSpaceModeLaunchWithEnvironmentInherited. (I0cbe0) (I0cbe0) - I valori UNKNOWN, OUTSIDE_FOV, PARTIALLY_WITHIN_FOV e WITHIN_FOV di
SpatialVisibilitysono 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
SpatialVisibilitysostituita con un oggetto pubblico con valori Int const.setSpatialVisibilityChangedListenerora accetta unConsumer<Int>anzichéConsumer<SpatialVisibility>(Ie7e8c) - Costanti
PointerCaptureComponentrinominate e spostate nell'oggettoPointerCaptureComponent.PointerCaptureState(I9c7ac) PointerCaptureComponents' StateListenersostituita conConsumer<Int>. (I9c7ac)InputEventListenersostituito conConsumer<InputEvent>(I9c7ac)setPreferredAspectRatioè stato spostato dalla classe Scene all'oggettoSpatialWindowe accetta Session come primo parametro. (I7b717)Entity.setHidden()sostituito daEntity.setEnabled()eEntity.isHidden()sostituito daEntity.isEnabled().setHidden(false)è uguale asetEnabled(true)eisHidden() == !isEnabled(). (Icf0de)- Tipo
Entity.contentDescriptioncambiato da String aCharSequence. (Ie59be) Session.createeSession.configureora generanoSecurityExceptionquando non sono state concesse autorizzazioni sufficienti, anziché restituireSessionCreatePermissionsNotGrantedoSessionConfigurePermissionsNotGranted. (I7c488)ResizableComponent.createora richiede unConsumer<ResizeEvent> ResizeEventListenerè stato sostituito conConsumer<ResizeEvent> ResizableComponent.sizeè stato rinominato inResizableComponent.affordanceSize ResizableComponent.minimumSizeè stato rinominato inResizableComponent.minimumEntitySize ResizableComponent.maximumSizeè stato rinominato inResizableComponent.maximumEntitySize,ResizableComponent.autoHideContentè stato rinominato inResizableComponent.shouldAutoHideContentResizableComponent.forceShowResizeOverlayè stato rinominato inResizableComponent.shouldAlwaysShowOverlay(I97a2d)minSDKridotto a 24 perandroidx.xr.scenecoreeandroidx.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
SceneCoreprincipale (xr:scenecore:scenecore) conterrà solo API asincrone in stile Kotlin. Gli sviluppatori Java possono fare affidamento sulla libreriaxr:scenecore:scenecore-guavaper 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
ListenableFuturesono stati sostituiti con funzioni di sospensione Kotlin. Gli sviluppatori Java che vogliono utilizzare metodi asincroni basati suListenableFutureanziché funzioni di sospensione Kotlin ora devono utilizzare le funzioni di estensione in:xr:scenecore-scenecore-guava. Ad esempio,GuavaExrImagecontiene le funzioni asincrone ExrImage equivalenti a Guava,GuavaScenePosecontiene le funzioni asincroneScenePoseequivalenti a Guava,GuavaGltfModelcontiene le funzioni asincroneGuava-equivalent GltfModele così via. (If7283) (I0af60) (If7283) (Ia8515) (I4efdf) (I54bbf) (I3467a) (I82a33)
Correzioni di bug
- Aggiornata la regola Jetpack XR Scenecore
ProGuardper impedireAbstractMethodErrorper i client minimizzati. (I91a01) - Correzioni aggiuntive per supportare la minimizzazione di Proguard per Jetpack XR
SceneCore(I4f47e) - È stato corretto un bug per cui un
InteractableComponentpotrebbe causare un arresto anomalo sehitPositionsu HitInfo diInputEventpotrebbe causare un arresto anomalo sehitPositionrestituito 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
HitTestinSceneCoreTestApp. (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_BOTTOMaggiornato 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. StereoSurfaceEntityora supporta la riproduzione MV-HEVC tramite due nuovi valoriStereoMode: MULTIVIEW_LEFT_PRIMARY e MULTIVIEW_RIGHT_PRIMARY.PanelEntity.setSizeePanelEntity.getSizeora restituiscono le dimensioni nello spazio principale.Entity.setPose,Entity.getPose,Entity.setScale,Entity.getScale,Entity.setAlphaeEntity.getAlphaora accettano un nuovo parametrorelativeTo, 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.ktper monitorare quando i contenuti della scena si spostano all'interno o all'esterno del campo visivo dell'utente. setPointSourceParamsè stato aggiunto aSpatialAudioTrack, 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 diSessionExtsono state spostate in Scene, pertanto le importazioni dovranno essere modificate, ad esempioSessionExt.getScene(session).addSpatialCapababilitiesChangedListenercontroSessionExt.addSpatialCapabilitiesChangedListener. - È stato aggiunto
ActivityPose.hitTestAsync, che consente unhitTestrispetto 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 istanzePanelEntity. - È stata introdotta la nuova factory
PanelEntity, che accetta le dimensioni del pannello in metri o pixel. La precedente factoryPanelEntityche 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.setPixelDimensionsePanelEntity.getPixelDimensionvengono rimossi e sostituiti dasetSizeInPixelsegetSizeInPixels.- Lingua
Entity.getActivitySpaceAlpharimossa. Può essere sostituito conEntity.getAlpha(Space.Activity). - Lingua
Entity.getWorldSpaceScalerimossa. Può essere sostituito conEntity.getScale(Space.REAL\_WORLD). - La classe Session in
SceneCoreè stata eliminata a favore di Session in XR Runtime. StereoSurfaceEntityè stato rinominato inSurfaceEntity.Entity.setSizeeEntity.getSizevengono rimossi e gli stessi metodi vengono aggiunti aPanelEntity.PointSourceAttributesè stato rinominato inPointSourceParams.SpatializerConstants.SOURCE\_TYPE\_BYPASSè stato rinominato inSpatializerConstants.SOURCE\_TYPE\_DEFAULT.- L'entità
PointSourceParamsè stata modificata da accesso pubblico ad accesso interno. AnchorEntity.createora richiede la configurazione diPlaneTrackingModeinSession.configure().- Le API
SpatialUserora richiedono la configurazione diHeadTrackingModeinSession.configure(). - Quando
ResizableComponentnon è collegato, verrà visualizzato un log di livello INFO anziché un log di livello ERROR. - La classe Fov ora è una classe Kotlin normale.
- Suddividi
Entity.ktper inserire ogni tipo di entità concreta nel proprio file. - Quando crei un nuovo
PanelEntity, la maggior parte delle visualizzazioni verrà riassegnata a unFrameLayout. In questo modo è più facile utilizzareLayoutInspectorcon i pannelli spaziali. - L'istanza
XrExtensionsattualmente 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
PanelEntityconMovableComponenteAnchorPlacement - Risolto un problema per cui
ResizableComponentforniva dimensioni obsolete nel callbackonResizeStart. - Risolto un arresto anomalo che si verificava quando
dispose()diJxrPlatformAdapterAxrveniva 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
ProGuardper impedireAbstractMethodErrorper 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
Sessiona un metodo companion su ciascun tipo rispettivo:Session.createActivityPanelEntity(Dimensions, String, Activity, Pose)è stato eliminato e sostituito conActivityPanelEntity.create(Session, Dimensions, String, Pose)Session.createAnchorEntity(Anchor)è stato eliminato e sostituito conAnchorEntity.create(Session, Anchor)Session.createAnchorEntity(Dimensions, Int, Int, Duration)è stato eliminato e sostituito conAnchorEntity.create(Session, Dimensions, Int, Int, Duration)Session.createEntity(String, Pose)è stato eliminato e sostituito conContentlessEntity.create(Session, String, Pose)Session.createExrImageResource(String)è stato eliminato e sostituito conExrImage.create(Session, String)Session.createGltfEntity(GltfModel, Pose)è stato eliminato e sostituito conGltfModelEntity.create(Session, GltfModel, Pose)Session.createGltfModelResource(String)è stato eliminato e sostituito conGltfModel.create(Session, String)Session.createInteractableComponent(Executor, InputEventListener)è stato eliminato e sostituito conInteractableComponent.create(Session, Executor, InputEventListener)Session.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean)è stato eliminato e sostituito conMovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean)Session.createPanelEntity(View, Dimensions, Dimensions, String, Pose)è stato eliminato e sostituito conPanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose)Session.createResizableComponent(Dimensions, Dimensions)è stato eliminato e sostituito conResizableComponent.create(Session, Dimensions, Dimensions)Session.createStereoSurfaceEntity(Int, Dimensions, Pose)è stato eliminato e sostituito conStereoSurface.create(Session, Int, Dimensions, Pose)
- Sono stati rimossi i seguenti metodi deprecati:
- Eliminazione completata:
Session.canEmbedActivityPanel(Activity). Usa invece il descrittoregetSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY). - Eliminazione completata:
Session.hasSpatialCapability(Int). È stato sostituito con l'utilizzo digetSpatialCapabilities().hasCapability()come modo più compartimentato per verificare la presenza di funzionalità spaziali, poichégetSpatialCapabilities()restituisce un oggettoSpatialCapabilities. Session.requestFullSpaceMode()è stato eliminato e sostituito conSpatialEnvironment.requestFullSpaceMode()Session.requestHomeSpaceMode()è stato eliminato e sostituito conSpatialEnvironment.requestHomeSpaceMode()
- Eliminazione completata:
Session.setFullSpaceMode(Bundle)eSession.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.setFullSpaceModeimport 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>)eSession.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.getEntitiesOfTypeimport androidx.xr.scenecore.getEntityForRtEntity
- La zona
Session.unpersistAnchor(Anchor)è stata eliminata - La zona
Session.createPersistedAnchorEntity(UUID)è stata eliminata
Problemi noti
PanelEntity.setCornerRadius()eActivityPanelEntity.setCornerRadius()potrebbero non avere effetto fino al successivo spostamento del pannello, che può essere mitigato spostando il pannello nella posizione corrente- Quando viene chiamato
BoundsChangedsuActivitySpace, alcuniActivityPosepotrebbero non essere stati aggiornati correttamente. Verrà aggiornato durante la prossima chiamataOnSpaceUpdatedil giornoActivitySpace
Modifiche che provocano un errore e modifiche del comportamento
PanelEntityeActivityPanelEntityavranno 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 canvasSphericaleHemisphericalper il rendering di contenuti multimediali immersivi. StereoSurfaceEntity.create()ora accetta un parametroCanvasShape. (Questo parametro è attualmente ignorato, ma verrà utilizzato in una release futura)StereoSurfaceEntity.create()non accetta più un parametroDimensions. Le applicazioni devono controllare le dimensioni del canvas impostandoCanvasShapeStereoSurfaceEntityha un membroCanvasShapeche può essere impostato in modo dinamico.StereoSurfaceEntity.dimensionsè ora una proprietà di sola lettura; le applicazioni devono impostareCanvasShapeper modificare le dimensioni.StereoSurfaceEntityora consente di reimpostareStereoModedopo 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'autorizzazioneSCENE_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 scalaActivitySpacerestituendo i valori di traslazione in metri scalati anziché restituire sempre metri non scalati.transformPoseToora utilizza anche le unità corrette per calcolare le modifiche alle coordinate quandoActivitySpaceè 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, utilizzasetSpatialEnvironmentPreference(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_UNDERSTANDINGin 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 dipendenzaapi, quindi i client non dovranno dichiararla esplicitamente. - SceneCore include erroneamente
com.google.guava:guava-31.1-androidecom.google.protobuf:protobuf-javalitecome 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.