Jetpack SceneCore
| Ultimo aggiornamento | Release stabile | Candidato per la release | Release beta | Release alpha |
|---|---|---|---|---|
| 19 novembre 2025 | - | - | - | 1.0.0-alpha09 |
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:
Groovy
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha09" // Optional dependencies for asynchronous conversions implementation "androidx.xr.scenecore:scenecore-guava:1.0.0-alpha09" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha09" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha09") // Optional dependencies for asynchronous conversions implementation("androidx.xr.scenecore:scenecore-guava:1.0.0-alpha09") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha09") }
Per saperne di più sulle dipendenze, consulta Aggiungi dipendenze di build.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa libreria. 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 ulteriori informazioni, consulta la documentazione di Issue Tracker.
Versione 1.0
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 posa di origine dello spazio di percezione e una posa rispetto all'origine dello spazio di percezione. (I5b50a) - Aggiunta la funzione
getGravityAlignedPose. La posa allineata alla gravità ignora il beccheggio e il rollio della rotazione. (I5ae21) - I tipi di costanti
AnchorEntity.Statesono stati modificati da numeri interi a sottotipi di stato. (Ib0c49) - Aggiunta di
getChildren()all'interfaccia Entità. Ciclo di vitaMainPanelEntityaggiornato. (Ia69d6)
Modifiche alle API
- I tipi di costanti
PointerCaptureComponent.PointerCaptureStatesono stati modificati da numeri interi a 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 numeri interi a sottotipiSurfaceEntity. (I419ed) - I tipi di costanti
SpatializerConstantsono stati rinominati e modificati da numeri interi a sottotipiSpatializerConstant. (Ia0e18) - I tipi di costanti
TextureSamplersono stati rinominati e modificati da numeri interi a sottotipiTextureSampler. (I44078) - I tipi di costanti
SpatialVisibilitysono stati modificati da numeri interi a sottotipiSpatialVisibility. (I70739) - I tipi di costanti
ResizeEvent.ResizeStatesono stati rinominati e modificati da numeri interi a sottotipiResizeState. (I384d5) - I tipi di costanti
InputEventsono stati rinominati e modificati da numeri interi per ereditare dal rispettivo tipo di inclusione. (I82817) - I tipi di costanti
GltfModelEntity.AnimationStatesono stati modificati da numeri interi a sottotipiAnimationState. (I24f4e) - I tipi di costanti
AlphaModesono stati rinominati e modificati da numeri interi a sottotipiAlphaMode. (I27b56) - I tipi di costanti
Spacesono stati modificati da numeri interi a sottotipi di spazio. (I9255b) ScenePose.hitTeste i metodi correlati ora restituiscononullse non è stata trovata alcuna intersezione, anziché unHitTestResultcon unhitPositionnull.HitTestResult.hitPositionnon è più annullabile. (I1400a)- Modificate le referenze 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.moveActivityrinominato intransferActivity(I273c5, b/430332856)
Correzioni di bug
:xr:scenecore:scenecore-spatial-renderinge:xr:scenecore:scenecore-spatial-coreaggiunti 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
- È stata rinominata la proprietà
fixedAspectRatioinisFixedAspectRatioEnableded è stata resa booleana (I5c4e8, b/440588971) ScenecoreFakes si trova ora nel moduloxr:scenecore:scenecore-testing. (Idd951)shouldAutoHideContentè stato rinominato inisAutoHideContentWhileResizingEnabledeshouldAlwaysShowOverlayinisAlwaysShowOverlayEnabled(I97c36, b/432335421)- Costanti
SceneCoreTextureSampleraggiornate per una maggiore leggibilità, ad esempioTextureSampler.MinFilter.LINEARora èTextureSampler.MIN_FILTER_LINEAR(Ib159c) - L'impostazione
setKeyEntitydella scena è stata unita alla variabilekeyEntity. L'impostazione dikeyEntitysu un'entità non spostabile comeAnchorEntitygenererà unIllegalArgumentExceptionanziché restituire un valore booleano false. (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) - Rimosso il parametro
bundledaActivityPanelEntity.startActivity(I64344, b/430332856, b/430333040) SpatializerConstants.SOURCE_TYPE_BYPASSrinominato inSpatializerConstants.SOURCE_TYPE_DEFAULT. (Ifc7fe, b/422215565)- Aggiunta della 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.CanvasShaperinominato inShapeSurfaceEntity.CanvasShape.Vr180Hemisphererinominato inHemisphereSurfaceEntity.CanvasShape.Vr360Sphererinominato inSphereSurfaceEntity.EdgeFeatheringParams.SmoothFeatherrinominato inRectangleFeatherSurfaceEntity.EdgeFeathingParams.SolidEdgerinominato inNoFeatheringSurfaceEntity.ContentSecurityLevelrinominato inSurfaceProtectionSurfaceEntity.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)
launchActivityrinominato instartActivity(I7db90, b/430332856)Scene.activitySpaceRootrimosso. Utilizza inveceScene.activitySpace. (I05ee8, b/378706624, b/422215745)configureBundleForFullSpaceModeLauncheconfigureBundleForFullSpaceModeLaunchWithEnvironmentInheritedsono stati rinominati rispettivamentecreateBundleForFullSpaceModeLaunchecreateBundleForFullSpaceModeLaunchWithEnvironmentInheritede spostati nel file LaunchUtils.kt come metodi di primo livello e prendono Session come primo parametro (I64a2c, b/437186050)- La fabbrica
GroupEntityora restituisce il tipoGroupEntityanziché Entità. (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 dalle API
SceneCore,BaseEntityeBaseScenePose(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 Entità pannello e
SurfaceEntities. (I118f6) PerceivedResolutionMetodi di callback aggiunti a Scene.kt per monitorare la risoluzione percepita del pannello principale dell'attività in HSM. (I58084)SurfaceEntity- Aggiunto il supporto per l'applicazione per richiedere il super campionamento al momento della creazione. Ciò consente alle applicazioni di utilizzare il filtro di sovracampionamento per l'anti-aliasing. (I06913)- Aggiunta della proprietà
recommendedContentBoxInFullSpaceaActivitySpace. Restituisce una casella consigliata in cui inserire i contenuti in modalità Full Space. (I4cd6f) - È stato fornito un costruttore di overload per il modificatore mobile che consente l'ancoraggio. (Ic0c70)
Modifiche alle API
Per questa release sono state apportate modifiche significative all'API SceneCore. Diverse classi sono state rinominate e/o spostate in moduli diversi e la maggior parte dei metodi getter/setter sono stati sostituiti con proprietà Kotlin. Sebbene prevediamo future modifiche alle API che causano interruzioni fino alla prima release beta, queste non saranno così dirompenti o numerose.
- Sono state rinominate e/o spostate le seguenti classi e interfacce:
androidx.xr.scenecore.PixelDimensionsinandroidx.xr.runtime.math.IntSize2d;androidx.xr.scenecore.Dimensionsinandroidx.xr.runtime.math.FloatSize3d;androidx.xr.scenecore.ActivityPoseinScenePose,androidx.xr.scenecore.ContentlessEntityinGroupEntity,androidx.xr.scenecore.PlaneTypeinPlaneOrientation;androidx.xr.scenecore.PlaneSemanticinPlaneSemanticType. (Ifd405)(I3b622) (If534d) - Un certo numero di setter per le proprietà di
Scenesono stati resi privati; non era previsto che venissero modificati dai clientSceneCore:activitySpace,activitySpaceRoot,mainPanelEntity,perceptionSpace,spatialCapabilities,spatialEnvironmentespatialUser. (I2f506) - In Entità: sono state modificate le seguenti proprietà:
get/setParent(),setContentDescription; è stata ritirata la proprietàEntity.is/setHidden(), utilizzaEntity.is/setEnabled. (Ibc4c6) - È stata rimossa la classe
androidx.xr.scenecore.BasePanelEntity; utilizza invece direttamentePanelEntity. Getter e setter perPanelEntitysostituiti con proprietà. La proprietàPanelEntity.sizeè stata modificata daFloat3dSizeaFloat2dSize. È stato rimosso il metodo deprecatoandroidx.xr.scenecore.PanelEntity.getPixelDimensions. UtilizzagetSizeInPixels. (Icc174) androidx.xr.scenecore.OnSpaceUpdatedListenersostituito conRunnable. (I19308)SpatialUser.getCameraViews()è stato sostituito con una proprietà. (Ib0cc5) PerExrImageeGltfModel:I metodicreatesono stati modificati in funzioni di sospensione; i parametri di creazione sono stati modificati per accettare unUrioPathanziché unString. (Id8883) (I0d247), (I25706)SpatialEnvironment.requestFullSpaceModeeSpatialEnvironment.requestHomeSpaceModesono stati spostati in Scena. Ad esempio, utilizzasession.scene.requestFullSpaceMode()anzichésession.scene.spatialEnvironment.requestFullSpaceMode().addOnPassthroughOpacityChangedListenereaddOnSpatialEnvironmentChangedListenerora hanno override che accettano esecutori facoltativi. (I12fe0) (I6b21e)- Sono stati rimossi i seguenti metodi
SpatialEnvironmentritirati:togglePassthrough,setPassthrough,setPassthroughOpacity,getPassthroughMode,getPassthroughOpacity,setSkyboxesetGeometry. È stata rimossa anche la classe deprecataSpatialEnvironment.PassthroughMode(I927bd) (I927bd) (I927bd) - Sono stati sostituiti i seguenti getter e setter
SpatialEnvironmentcon proprietà Kotlin:getCurrentPassthroughOpacity(),get/setPassthroughOpacityPreference(),get/setSpatialEnvironmentPreference(),isSpatialEnvironmentPreferenceActive()(I33a7b) (Ie06e2) (Ie06e2) - Il tipo di
SpatialEnvironmentPreference.preferredPassthroughOpacityè cambiato daFloat?aFloat. Non accetta più valori nulli. Al suo posto,SpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCEviene utilizzato per indicare che non è presente alcuna preferenza di opacità. (I40107) - È stato aggiornato il parametro
windowBoundsPxapixelDimensionse il relativo tipo da Rect aIntSize2dnel metodo create. (I1926e) - Il costruttore
SpatialEnvironmentora è interno (I75a51) - Sostituite le classi
SpatialPointerIconNoneeSpatialPointerIconCirclecon gli oggetti complementariSpatialPointerIcon.NONEeSpatialPointerIcon.CIRCLE(I416d2) SpatialPointerIconinSpatialPointerComponentnon è più annullabile. UtilizzaSpatialPointerIcon.DEFAULTanziché null per indicare che deve essere utilizzata l'icona del puntatore predefinita del 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 impostare e aggiungere listener, il listener è stato spostato nell'argomento finale per abilitare le espressioni lambda finali.androidx.xr.scenecore.OnStateChangedListenerperAnchorEntitysostituito conConsumer<AnchorEntity.State>. (I472e0)GltfModelEntity.getAnimationState()ora è una proprietà. (I10b29)ActivitySpace.getBounds()è stato sostituito con una proprietà.ActivitySpace.addBoundsChangedListenerrinominato inActivitySpace.addOnBoundsChangedListener. SostituitoActivitySpace.setOnSpaceUpdatedListenercon i metodi di aggiunta/rimozione. (I4c956)AnchorPlacement: planeTypeFilterè stato rinominato inanchorablePlaneOrientations,planeSemanticFilterè stato rinominato inanchorablePlaneSemanticTypes. L'aggiunta di unMovableComponenta unAnchorEntityo a unActivitySpacerestituirà false,MoveListenerè stato rinominato inEntityMoveListener shouldDisposeParentAnchor,disposeParentOnReAnchor systemMovableè stato rimosso dalla funzionecreatea favore dicreeateCustomMovable,createSystemMovableecreateAnchorable(If11c4)- Rimosso
SurfaceEntity.featherRadiusX/Ye aggiunto un concetto di classeEdgeFeatheringParams. (Ic78fc) - Il metodo
PanelEntity.enablePanelDepthTest()è stato sostituito dalla proprietàpanelClippingConfig. ImpostaScene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true)per attivare il test di profondità o impostalo suPanelClippingConfig(isDepthTestEnabled = false)per disattivarlo. (I0cbe0) Scene.mainPanelEntityora è di tipoMainPanelEntityinvece diPanelEntity(I7125a)- Il metodo
setFullSpaceModedi Scene è stato rinominato inconfigureBundleForFullSpaceModeLaunche il metodosetFullSpaceModeWithEnvironmentInheritedinconfigureBundleForFullSpaceModeLaunchWithEnvironmentInherited. (I0cbe0) (I0cbe0) - Rinominate le proprietà UNKNOWN, OUTSIDE_FOV, PARTIALLY_WITHIN_FOV e WITHIN_FOV di
SpatialVisibilityin SPATIAL_VISIBILITY_UNKNOWN, SPATIAL_VISIBILITY_OUTSIDE_FIELD_OF_VIEW, SPATIAL_VISIBILITY_PARTIALLY_WITHIN_FIELD_OF_VIEW e SPATIAL_VISIBILITY_WITHIN_FIELD_OF_VIEW, rispettivamente (Ie7e8c) - La classe
SpatialVisibilityè stata sostituita con un oggetto pubblico con valori Int costanti.setSpatialVisibilityChangedListenerora accetta unConsumer<Int>invece diConsumer<SpatialVisibility>(Ie7e8c) - Costanti
PointerCaptureComponentrinominate e spostate nell'oggettoPointerCaptureComponent.PointerCaptureState(I9c7ac) PointerCaptureComponents' StateListenersostituito 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)- Il tipo
Entity.contentDescriptionè stato modificato 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)- Riduzione di
minSDKa 24 perandroidx.xr.scenecoreeandroidx.xr.compose. I pacchetti XR richiedono comunque l'API 34 in fase di runtime. (I17224) - Rimossa la limitazione
RequiresApi(34)su tutti i pacchetti Jetpack XR. Questa limitazione era ridondante in quanto Jetpack XR è attualmente disponibile solo su 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 l'utilizzo di KGP 2.0.0 o versioni successive (Idb6b5)
- Questa libreria ora utilizza le annotazioni di nullabilità JSpecify, che sono di tipo use. Gli sviluppatori Kotlin devono utilizzare il seguente argomento del compilatore per garantire un utilizzo corretto:
-Xjspecify-annotations=strict(questo è il valore predefinito 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
- Regola Jetpack XR Scenecore
ProGuardaggiornata per impedireAbstractMethodErrorper i client ridotti. (I91a01) - Correzioni aggiuntive per supportare la minimizzazione Proguard per Jetpack XR
SceneCore(I4f47e) - È stato corretto un bug per cui un
InteractableComponentpuò causare un arresto anomalo sehitPositionin HitInfo diInputEventpuò causare un arresto anomalo sehitPositionrestituito dal sistema era null (I7a695) - I valori della modalità di configurazione sono stati rinominati per riflettere il loro comportamento. (I6d247)
- Sono stati risolti i problemi relativi al campo visivo e a
HitTestinSceneCoreTestApp. (I2c51e) - È stato corretto un bug in
SpatialCapabilities.hasCapability()che restituiva true se una delle funzionalità trasmesse con un OR bit a bit era true, anziché restituire true solo se erano tutte true. (I2cd40) SurfaceEntity.StereoMode.TOP_BOTTOMè stato aggiornato in modo che la mappa in alto sia visualizzata dall'occhio sinistro e quella in basso dall'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 stati rilasciati. 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 genitore.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 e 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, Scena, con riferimenti alle API
Scenecore. La scena sarà accessibile come proprietà di estensione della sessione. Le funzioni all'interno diSessionExtsono state spostate in Scena, quindi gli importazioni dovranno essere modificate. Ad esempio,SessionExt.getScene(session).addSpatialCapababilitiesChangedListenercontroSessionExt.addSpatialCapabilitiesChangedListener. - È stato aggiunto
ActivityPose.hitTestAsync, che consente dihitTestcontro i contenuti virtuali. - È stato aggiunto il nuovo tipo di componente
SpatialPointerComponent, che consente ai clienti di specificare l'icona visualizzata per il puntatore o di disattivarla. Questo componente può essere attualmente collegato solo aPanelEntityistanze. - Introduzione della nuova fabbrica
PanelEntity, che accetta le dimensioni del pannello in metri o pixel. Rimozione della fabbricaPanelEntityprecedente che accettava due parametri di tipo Dimension per il pannello.
Modifiche alle API
- Rimossa la limitazione
RequiresApi(34)su tutti i pacchetti Jetpack XR. Questa limitazione era ridondante in quanto Jetpack XR è attualmente disponibile solo su dispositivi con livello API 34 o superiore. (Iae0f8) - I progetti rilasciati con Kotlin 2.0 richiedono l'utilizzo di KGP 2.0.0 o versioni successive (Idb6b5)
- Il corso
PermissionHelperè stato rimosso. PanelEntity.getPixelDensityè deprecato.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. - Ora
AnchorEntity.createrichiede la configurazione diPlaneTrackingModeinSession.configure(). - Le API
SpatialUserora richiedono la configurazione diHeadTrackingModeinSession.configure(). - Quando
ResizableComponentnon è allegato, viene fornito un log a livello INFO anziché a livello ERROR. - La classe Fov è ora una normale classe Kotlin.
- Dividi
Entity.ktper inserire ogni tipo di entità concreta nel proprio file. - Quando crei un nuovo
PanelEntity, la maggior parte delle visualizzazioni viene riassegnata a unFrameLayout. Ciò facilita l'utilizzo diLayoutInspectorcon i riquadri spaziali. - L'istanza
XrExtensionsattualmente in uso è ora registrata sulla piattaforma, nel miglior modo possibile, 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 - È stato risolto un problema per cui
ResizableComponentforniva dimensioni obsolete nel callbackonResizeStart. - È stato risolto il problema di arresto anomalo 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 stati rilasciati. La versione 1.0.0-alpha03 contiene questi commit.
Nuove funzionalità
- La riduzione Proguard è ora supportata per il codice Jetpack XR
Correzioni di bug
- Correzioni aggiuntive per supportare la minimizzazione Proguard per Jetpack XR SceneCore (I4f47e)
- Regola Jetpack XR Scenecore
ProGuardaggiornata per impedireAbstractMethodErrorper i client ridotti. (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 stati rilasciati. La versione 1.0.0-alpha02 contiene questi commit.
Modifica che causa interruzioni imminenti che interessano le app create prima della versione 1.0.0-alpha02
- I metodi di fabbrica sono stati spostati dalla classe
Sessiona un metodo complementare su ogni tipo rispettivamente: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:
Session.canEmbedActivityPanel(Activity)è stato eliminato. Utilizza invecegetSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY).Session.hasSpatialCapability(Int)è stato eliminato. È stato sostituito a favore dell'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()
Session.setFullSpaceMode(Bundle)eSession.setFullSpaceModeWithEnvironmentInherited(Bundle)sono stati spostati nelle funzioni di estensione. I file dello sviluppatore dovranno aggiungere i nuovi import 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 il nuovo import per l'accesso:import androidx.xr.scenecore.setPreferredAspectRatio
Session.getEntitiesOfType(Class<out T>)eSession.getEntityForRtEntity(RtEntity)sono stati spostati nelle funzioni di estensione. I file dello sviluppatore dovranno aggiungere i nuovi import per l'accesso:import androidx.xr.scenecore.getEntitiesOfTypeimport androidx.xr.scenecore.getEntityForRtEntity
Session.unpersistAnchor(Anchor)è stato eliminatoSession.createPersistedAnchorEntity(UUID)è stato eliminato
Problemi noti
PanelEntity.setCornerRadius()eActivityPanelEntity.setCornerRadius()potrebbero non essere applicati fino al successivo spostamento del pannello. Questo problema può essere risolto spostando il pannello nella sua posizione attuale.- Quando viene chiamato
BoundsChangedsuActivitySpace, alcuniActivityPosepotrebbero non essere stati aggiornati correttamente. Verrà aggiornato nella seguente chiamataOnSpaceUpdateddel giornoActivitySpace
Modifiche che provocano un errore e comportamentali
PanelEntityeActivityPanelEntityavranno un raggio d'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 la creazione di canvasSphericaleHemisphericalper il rendering di contenuti multimediali immersivi. StereoSurfaceEntity.create()ora accetta un parametroCanvasShape. (Questo parametro viene 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 costruzione.
Altre modifiche
- Riduzione di minSDK in fase di compilazione a 24. Tutte le API Jetpack XR continuano a richiedere l'API 34 in fase di runtime.
- La Session factory di
SceneCore(Session.create) non avvia 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 di ancore non riuscirà se l'autorizzazione non viene concessa dall'utente.
Correzioni di bug
getActivitySpacePose()è stato corretto per tenere conto della scalaActivitySpacerestituendo i valori di conversione 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.- La skybox verrà ora impostata su una skybox completamente nera ogni volta che viene passata una preferenza di skybox nulla utilizzando
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom)). Per ripristinare la skybox e la geometria predefinite del sistema, utilizzasetSpatialEnvironmentPreference(null).
Versione 1.0.0-alpha01
12 dicembre 2024
androidx.xr.scenecore:scenecore-* 1.0.0-alpha01 è stato rilasciato.
Funzionalità della versione iniziale Versione iniziale per sviluppatori di Jetpack SceneCore, una libreria di grafici di scene 3D per creare e manipolare 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 della scena XR del tuo ambiente. In alternativa, attiva il passthrough, in modo che la scena virtuale possa integrarsi 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 del mondo reale.
- GltfModelEntity: posiziona, anima e interagisci con i modelli 3D nella tua scena. SceneCore supporta il formato di file glTF per facilitare l'integrazione con i modelli esistenti.
- Audio spaziale: aggiungi sorgenti audio ambientali e puntiformi alla tua scena 3D per un suono spazializzato e completamente immersivo.
- StereoSurfaceEntity: SceneCore supporta il routing dei contenuti renderizzati su una superficie Android per l'occhio sinistro/destro. Può essere utilizzato per il rendering di contenuti stereoscopici in formato side-by-side o top-bottom, ad esempio foto stereoscopiche, video 3D o altre UI sottoposte a 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 la possibilità per gli utenti di spostare, ridimensionare e interagire con modelli e pannelli.
- Ancoraggio: con il passthrough attivato, puoi collegare pannelli e modelli a superfici reali, consentendo agli utenti di integrare perfettamente i contenuti virtuali nel loro ambiente reale.
- Posizione 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 quando disponibili, ad esempio il posizionamento 3D dei contenuti dell'interfaccia utente. Inoltre, la tua app può monitorare le modifiche alle funzionalità durante l'esecuzione, per modificare l'esperienza in base a come l'utente utilizza il proprio dispositivo Android XR.
Problemi noti
- Al momento è necessario un minSDK di 30 per utilizzare Jetpack SceneCore. Come soluzione alternativa, aggiungi la seguente voce del manifest
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>per poter eseguire la build ed eseguire l'app 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 pannello principale, il collegamento di periferiche e il passaggio dalla modalità Chiaro alla modalità Buio. Se riscontri problemi di invalidazione della sessione, le soluzioni alternative includono la creazione di un pannello principale non ridimensionabile, l'utilizzo di un'entità pannello dinamico, la disattivazione della ricreazione dell'attività per modifiche di configurazione specifiche o la disattivazione delle modifiche al tema della modalità Chiaro/Scuro.
- 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 XR non Android, riceverai un'eccezione RuntimeException.
- L'impostazione della skybox su null tramite `SpatialEnvironment.setSpatialEnvironmentPreference()` non comporta una skybox nera solida come documentato. Potrebbe essere visualizzata la skybox predefinita del sistema o non essere apportata alcuna modifica alla 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 classe duplicati nella build, queste due dipendenze possono essere escluse in modo sicuro. - Se la tua app utilizza SceneCore e attiva ProGuard, si arresterà in modo anomalo quando crei una sessione. Come soluzione alternativa, disattiva ProGuard. Per ulteriori informazioni su come attivare ProGuard, consulta questa guida.