Jetpack SceneCore
| Son Güncelleme | Kararlı sürüm | Sürüm Adayı | Beta Sürümü | Alfa sürümü |
|---|---|---|---|---|
| 22 Ekim 2025 | - | - | - | 1.0.0-alpha08 |
Bağımlılıkları bildirme
XR SceneCore'a bağımlılık eklemek için Google Maven deposunu projenize eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.
Uygulamanız veya modülünüz için build.gradle dosyasına ihtiyacınız olan yapılarla ilgili bağımlılıkları ekleyin:
Groovy
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha08" // Optional dependencies for asynchronous conversions implementation "androidx.xr.scenecore:scenecore-guava:1.0.0-alpha08" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha08" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha08") // Optional dependencies for asynchronous conversions implementation("androidx.xr.scenecore:scenecore-guava:1.0.0-alpha08") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha08") }
Bağımlılıklar hakkında daha fazla bilgi için Derleme bağımlılıkları ekleme başlıklı makaleyi inceleyin.
Geri bildirim
Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmeye yönelik fikirleriniz varsa lütfen bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.
Daha fazla bilgi için Sorun İzleyici belgelerini inceleyin.
Sürüm 1.0
Sürüm 1.0.0-alpha08
22 Ekim 2025
androidx.xr.scenecore:scenecore-*:1.0.0-alpha08 iptal edilir. 1.0.0-alpha08 sürümü bu commit'leri içerir.
API Değişiklikleri
ActivityPanelEntity.moveActivity,transferActivityolarak yeniden adlandırıldı (I273c5, b/430332856)
Hata Düzeltmeleri
:xr:scenecore:scenecore-spatial-renderingve:xr:scenecore:scenecore-spatial-core,:xr:scenecore:scenecore'nin (I6ab65, b/447000520) uygulama bağımlılığı olarak eklendi.- Oturum yok edildikten sonra
session.sceneerişilirse istisna oluşturulur. (I77e6f)
Sürüm 1.0.0-alpha07
24 Eylül 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha07, androidx.xr.scenecore:scenecore-guava:1.0.0-alpha07 ve androidx.xr.scenecore:scenecore-testing:1.0.0-alpha07 özellikleri kullanıma sunulur. 1.0.0-alpha07 sürümü bu commit'leri içerir.
API Değişiklikleri
fixedAspectRatio,isFixedAspectRatioEnabledolarak yeniden adlandırıldı ve Boole özelliği haline getirildi (I5c4e8, b/440588971)ScenecoreSahteler artıkxr:scenecore:scenecore-testingmodülünde yer alıyor. (Idd951)shouldAutoHideContent,isAutoHideContentWhileResizingEnabled,shouldAlwaysShowOverlayveisAlwaysShowOverlayEnabledolarak yeniden adlandırıldı (I97c36, b/432335421)- Okunabilirlik için
SceneCoreTextureSamplersabitleri güncellendi. Örneğin,TextureSampler.MinFilter.LINEARartıkTextureSampler.MIN_FILTER_LINEAR(Ib159c) olarak kullanılıyor. - Sahnenin
setKeyEntityayarlayıcısı,keyEntitydeğişkeniyle birleştirildi.keyEntityöğesiniAnchorEntitygibi taşınamayan bir öğeye ayarlamak, boole yanlış değeri döndürmek yerineIllegalArgumentExceptionhatası verir. (I62080, b/428721695, b/422215745) - Sahnenin
SpatialModeChangeListenerdeğişkeni,setSpatialModeChangedListenerile değiştirildi.SpatialModeChangedListeneryerineConsumer<SpatialModeChangeEvent>alır.setSpatialModeChangedListenerartık isteğe bağlı olarak bir Executor alabilir. (I62080, b/428721695, b/422215745) bundleparametresiActivityPanelEntity.startActivityöğesinden kaldırıldı (I64344, b/430332856, b/430333040).SpatializerConstants.SOURCE_TYPE_BYPASS,SpatializerConstants.SOURCE_TYPE_DEFAULTolarak yeniden adlandırıldı. (Ifc7fe, b/422215565)SpatialSoundPool.PLAY_FAILEDsabiti eklendi. (Ifc7fe, b/422215565)SpatialSoundPool.playyöntemlerine varsayılan bağımsız değişkenler eklendi. (Ifc7fe, b/422215565)SpatialAudioTrackBuilderiçindeki ayarlayıcıların döndürülen değeri kaldırıldı. (Ifc7fe, b/422215565)- SurfaceEntity değişiklikleri
SurfaceEntity.CanvasShape,Shapeolarak yeniden adlandırıldıSurfaceEntity.CanvasShape.Vr180Hemisphere,Hemisphereolarak yeniden adlandırıldıSurfaceEntity.CanvasShape.Vr360Sphere,Sphereolarak yeniden adlandırıldıSurfaceEntity.EdgeFeatheringParams.SmoothFeather,RectangleFeatherolarak yeniden adlandırıldıSurfaceEntity.EdgeFeathingParams.SolidEdge,NoFeatheringolarak yeniden adlandırıldıSurfaceEntity.ContentSecurityLevel,SurfaceProtectionolarak yeniden adlandırıldıSurfaceEntity.ContentSecurityLevel.{values},SURFACE_PROTECTION_önekini ekledi.SurfaceEntity.SuperSampling.{$values},SUPER_SAMPLING_önekini eklediSurfaceEntity.StereoMode.{values},STEREO_MODE_önekini eklediSurfaceEntity.ContentColorMetadata.maxCLL,maxContentLightLevelolarak yeniden adlandırıldı (I7eb5f, b/422216050, b/427529950)
launchActivity,startActivityolarak yeniden adlandırıldı (I7db90, b/430332856)Scene.activitySpaceRootkaldırıldı. Bunun yerineScene.activitySpacepolitikasını kullanın. (I05ee8, b/378706624, b/422215745)configureBundleForFullSpaceModeLaunchveconfigureBundleForFullSpaceModeLaunchWithEnvironmentInheritedsırasıylacreateBundleForFullSpaceModeLaunchvecreateBundleForFullSpaceModeLaunchWithEnvironmentInheritedolarak yeniden adlandırıldı ve üst düzey yöntemler olarak LaunchUtils.kt dosyasına taşındı. İlk parametre olarak Session'ı alır (I64a2c, b/437186050).GroupEntityfactory artık Entity yerineGroupEntitytürünü döndürüyor. (I66042)
Hata Düzeltmeleri
- Bir öğe örneği, yok etme işleminden sonra kullanıldığında
IllegalStateExceptionoluşturun. (I90990, b/427314036, b/432063442)
Sürüm 1.0.0-alpha06
13 Ağustos 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha06, androidx.xr.scenecore:scenecore-guava:1.0.0-alpha06 ve androidx.xr.scenecore:scenecore-testing:1.0.0-alpha06 özellikleri kullanıma sunulur. 1.0.0-alpha06 sürümü bu commit'leri içerir.
API Değişiklikleri
SceneCore'nınBaseEntityveBaseScenePoseAPI'lerindeki kısıtlamaları kaldırın (88c0ff6)
Sürüm 1.0.0-alpha05
30 Temmuz 2025
androidx.xr.scenecore:scenecore-guava:1.0.0-alpha05, androidx.xr.scenecore:scenecore-testing:1.0.0-alpha05 ve androidx.xr.scenecore:scenecore:1.0.0-alpha05 özellikleri kullanıma sunulur. 1.0.0-alpha05 sürümü bu commit'leri içerir.
Yeni Özellikler
- Panel Varlıkları ve
SurfaceEntities'ya Algılanan Çözünürlük API'si eklendi. (I118f6) PerceivedResolutionHSM'deki etkinliğin ana panelinin algılanan çözünürlüğünü izlemek için Scene.kt'ye geri çağırma yöntemleri eklendi. (I58084)SurfaceEntity- Oluşturma sırasında süper örnekleme isteğinde bulunma uygulaması için destek eklendi. Bu, uygulamaların kenar yumuşatma için süper örnekleme filtresi kullanmasına olanak tanır. (I06913)ActivitySpacelistesinerecommendedContentBoxInFullSpaceözelliği eklendi. Tam Alan Modu'nda yerleştirilecek içerikler için önerilen bir kutu döndürür. (I4cd6f)- Taşınabilir değiştirici için, sabitlemeye olanak tanıyan aşırı yüklenmiş oluşturucu sağlandı. (Ic0c70)
API Değişiklikleri
Bu sürümde SceneCore'da kapsamlı API değişiklikleri yapıldı. Birkaç sınıf yeniden adlandırıldı ve/veya farklı modüllere taşındı. Çoğu getter/setter yöntemi Kotlin özellikleri ile değiştirildi. İlk beta sürümümüz yayınlanana kadar gelecekte API'de uyumluluğu bozan değişiklikler olacağını tahmin etsek de bu değişiklikler o kadar rahatsız edici veya çok sayıda olmayacak.
- Aşağıdaki sınıfların ve arayüzlerin adları değiştirildi ve/veya taşındı:
androidx.xr.scenecore.PixelDimensions-androidx.xr.runtime.math.IntSize2d;androidx.xr.scenecore.Dimensions-androidx.xr.runtime.math.FloatSize3d;androidx.xr.scenecore.ActivityPose-ScenePose,androidx.xr.scenecore.ContentlessEntity-GroupEntity,androidx.xr.scenecore.PlaneType-PlaneOrientation;androidx.xr.scenecore.PlaneSemantic-PlaneSemanticType. (Ifd405)(I3b622) (If534d) Sceneözelliklerinin bir dizi ayarlayıcısı,SceneCoreistemcileri tarafından değiştirilmemesi amaçlandığından gizli hale getirildi:activitySpace,activitySpaceRoot,mainPanelEntity,perceptionSpace,spatialCapabilities,spatialEnvironmentvespatialUser. (I2f506)- Varlıkta:
get/setParent(),setContentDescriptionözellikleri değiştirildi.Entity.is/setHidden()özelliği kullanımdan kaldırıldı, bunun yerineEntity.is/setEnabledözelliği kullanılıyor. (Ibc4c6) androidx.xr.scenecore.BasePanelEntitysınıfı kaldırıldı. Bunun yerine doğrudanPanelEntitykullanın.PanelEntityiçin alıcılar ve ayarlayıcılar özelliklerle değiştirildi.PanelEntity.sizeözelliği,Float3dSizeolan önceki değerdenFloat2dSizeolarak değiştirildi. Desteği sonlandırılanandroidx.xr.scenecore.PanelEntity.getPixelDimensionsyöntemi kaldırıldı. Bunun yerinegetSizeInPixelsyöntemini kullanın. (Icc174)androidx.xr.scenecore.OnSpaceUpdatedListener,Runnableile değiştirildi. (I19308)SpatialUser.getCameraViews()öğesi bir mülkle değiştirildi. (Ib0cc5)ExrImageveGltfModel:içincreateyöntemleri askıya alma işlevleri olarak değiştirildi; oluşturma parametreleri,StringyerineUriveyaPathkabul edecek şekilde değiştirildi. (Id8883) (I0d247), (I25706)SpatialEnvironment.requestFullSpaceModeveSpatialEnvironment.requestHomeSpaceMode, Sahne'ye taşındı. Örneğin,session.scene.spatialEnvironment.requestFullSpaceMode()yerinesession.scene.requestFullSpaceMode()kullanın.addOnPassthroughOpacityChangedListenerveaddOnSpatialEnvironmentChangedListenerartık isteğe bağlı Executor'ları kabul eden geçersiz kılma işlemlerine sahip. (I12fe0) (I6b21e)- Kullanımdan kaldırılan şu
SpatialEnvironmentyöntemleri kaldırıldı:togglePassthrough,setPassthrough,setPassthroughOpacity,getPassthroughMode,getPassthroughOpacity,setSkyboxvesetGeometry. Ayrıca, kullanımdan kaldırılanSpatialEnvironment.PassthroughMode(I927bd) (I927bd) (I927bd) sınıfı da kaldırıldı. - Aşağıdaki
SpatialEnvironmentalıcılar ve ayarlayıcılar Kotlin özellikleriyle değiştirildi:getCurrentPassthroughOpacity(),get/setPassthroughOpacityPreference(),get/setSpatialEnvironmentPreference(),isSpatialEnvironmentPreferenceActive()(I33a7b) (Ie06e2) (Ie06e2) SpatialEnvironmentPreference.preferredPassthroughOpacitytürüFloat?olarak değiştirildi.FloatArtık boş değerler kabul edilmiyor. Bunun yerine, opaklık tercihi olmadığını belirtmek içinSpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCEkullanılır. (I40107)- Oluşturma yönteminde
windowBoundsPxparametresipixelDimensionsolarak, türü ise Rect'tenIntSize2dolarak güncellendi. (I1926e) SpatialEnvironmentoluşturucusu artık dahili (I75a51)SpatialPointerIconNoneveSpatialPointerIconCirclesınıfları, yardımcı nesnelerSpatialPointerIcon.NONEveSpatialPointerIcon.CIRCLEile değiştirildi (I416d2).SpatialPointerComponentiçindekiSpatialPointerIconartık boş değer içermez. Sistem varsayılanı işaretçi simgesinin kullanılması gerektiğini belirtmek için null yerineSpatialPointerIcon.DEFAULTdeğerini kullanın. (I416d2)androidx.xr.scenecore.AnchorEntity.getState(), salt okunur bir özellik ile değiştirildi.AnchorEntity.create()yöntemindeki parametreler daha anlaşılır olacak şekilde yeniden adlandırıldı.AnchorEntity'nın işleyici ayarlama ve ekleme yöntemlerinde, sondaki lambda'ların etkinleştirilmesi için işleyici son bağımsız değişkene taşındı.AnchorEntityiçinandroidx.xr.scenecore.OnStateChangedListeneryerineConsumer<AnchorEntity.State>kullanıldı. (I472e0)GltfModelEntity.getAnimationState()artık bir mülk. (I10b29)ActivitySpace.getBounds()öğesi bir mülkle değiştirildi.ActivitySpace.addBoundsChangedListener,ActivitySpace.addOnBoundsChangedListenerolarak yeniden adlandırıldı.ActivitySpace.setOnSpaceUpdatedListener, ekleme/kaldırma yöntemleriyle değiştirildi. (I4c956)AnchorPlacement: planeTypeFilterolan adanchorablePlaneOrientations,planeSemanticFilterolan adanchorablePlaneSemanticTypesolarak değiştirildi.AnchorEntityveyaActivitySpaceişlevineMovableComponenteklenmesi "yanlış" değerini döndürür,MoveListenerişlevinin adıEntityMoveListener shouldDisposeParentAnchorolarak değiştirildi,EntityMoveListener shouldDisposeParentAnchorişlevinin adıdisposeParentOnReAnchor systemMovableolarak değiştirildi,disposeParentOnReAnchor systemMovableişlevicreeateCustomMovable,createSystemMovablevecreateAnchorableişlevleri lehinecreateişlevinden kaldırıldı (If11c4)SurfaceEntity.featherRadiusX/Ykaldırılır veEdgeFeatheringParamssınıfı kavramı eklenir. (Ic78fc)PanelEntity.enablePanelDepthTest()yöntemi,panelClippingConfigözelliğiyle değiştirildi. Derinlik testini etkinleştirmek içinScene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true), devre dışı bırakmak içinPanelClippingConfig(isDepthTestEnabled = false)olarak ayarlayın. (I0cbe0)Scene.mainPanelEntityartıkPanelEntityyerineMainPanelEntitytüründe (I7125a)- Scene sınıfının
setFullSpaceModeyöntemiconfigureBundleForFullSpaceModeLaunch,setFullSpaceModeWithEnvironmentInheritedyöntemi iseconfigureBundleForFullSpaceModeLaunchWithEnvironmentInheritedolarak yeniden adlandırıldı. (I0cbe0) (I0cbe0) SpatialVisibility'nın UNKNOWN, OUTSIDE_FOV, PARTIALLY_WITHIN_FOV ve WITHIN_FOV değerleri sırasıyla SPATIAL_VISIBILITY_UNKNOWN, SPATIAL_VISIBILITY_OUTSIDE_FIELD_OF_VIEW, SPATIAL_VISIBILITY_PARTIALLY_WITHIN_FIELD_OF_VIEW ve SPATIAL_VISIBILITY_WITHIN_FIELD_OF_VIEW olarak yeniden adlandırıldı (Ie7e8c).SpatialVisibilitysınıfı, sabit int değerlerine sahip genel nesneyle değiştirildi.setSpatialVisibilityChangedListenerartıkConsumer<SpatialVisibility>yerineConsumer<Int>kabul ediyor (Ie7e8c)PointerCaptureComponentsabiti yeniden adlandırıldı vePointerCaptureComponent.PointerCaptureStatenesnesine taşındı (I9c7ac)PointerCaptureComponents' StateListener,Consumer<Int>ile değiştirildi. (I9c7ac)InputEventListener,Consumer<InputEvent>ile değiştirildi (I9c7ac)setPreferredAspectRatio, Scene sınıfındanSpatialWindownesnesine taşındı ve ilk parametre olarak Session'ı alıyor. (I7b717)Entity.setHidden(),Entity.setEnabled()ile,Entity.isHidden()iseEntity.isEnabled()ile değiştirildi.setHidden(false),setEnabled(true)veisHidden() == !isEnabled()değerine eşittir. (Icf0de)Entity.contentDescriptiontürü, String'denCharSequenceolarak değiştirildi. (Ie59be)Session.createveSession.configureartıkSessionCreatePermissionsNotGrantedveyaSessionConfigurePermissionsNotGranteddeğerini döndürmek yerine yeterli izin verilmediğindeSecurityExceptiondeğerini döndürüyor. (I7c488)ResizableComponent.createartıkConsumer<ResizeEvent> ResizeEventListenergerektiriyor.Consumer<ResizeEvent> ResizableComponent.size,ResizableComponent.affordanceSize ResizableComponent.minimumSizeolarak yeniden adlandırıldı.ResizableComponent.minimumEntitySize ResizableComponent.maximumSize,ResizableComponent.maximumEntitySizeolarak yeniden adlandırıldı.ResizableComponent.autoHideContent,ResizableComponent.shouldAutoHideContentolarak yeniden adlandırıldı.ResizableComponent.forceShowResizeOverlay,ResizableComponent.shouldAlwaysShowOverlayolarak yeniden adlandırıldı (I97a2d).minSDK,androidx.xr.scenecoreveandroidx.xr.composeiçin 24'e düşürüldü. XR paketleri, çalışma zamanında hâlâ API 34'ü gerektirir. (I17224)- Tüm Jetpack XR paketlerindeki
RequiresApi(34)kısıtlaması kaldırıldı. Jetpack XR şu anda yalnızca API düzeyi 34 ve üzeri olan cihazlarda kullanılabildiğinden bu kısıtlama gereksizdi. (Iae0f8) - Ana
SceneCoreyapısı (xr:scenecore:scenecore) yalnızca Kotlin tarzı eş zamansız API'ler içerir. Java geliştiriciler, uyumlu API'lere erişmek içinxr:scenecore:scenecore-guavakitaplığını kullanabilir. (If221b) - Kotlin 2.0 ile yayınlanan projelerin kullanılabilmesi için KGP 2.0.0 veya daha yeni bir sürüm gerekir (Idb6b5).
- Bu kitaplık artık tür kullanımı olan JSpecify nullness ek açıklamalarını kullanıyor. Kotlin geliştiricileri, doğru kullanımı zorunlu kılmak için aşağıdaki derleyici bağımsız değişkenini kullanmalıdır:
-Xjspecify-annotations=strict(bu, Kotlin derleyicisinin 2.1.0 sürümünden itibaren varsayılan değerdir) (Ia8420) ListenableFuturedöndüren tüm asenkron yöntemler, Kotlin'in askıya alma işlevleriyle değiştirildi. Kotlin'in askıya alma işlevleri yerineListenableFuturetabanlı asenkron yöntemler kullanmak isteyen Java geliştiricilerin artık:xr:scenecore-scenecore-guava'deki uzantı işlevlerini kullanması gerekiyor. Örneğin,GuavaExrImage, Guava'ya eşdeğer ExrImage asenkron işlevlerini,GuavaScenePose, Guava'ya eşdeğerScenePoseasenkron işlevlerini,GuavaGltfModeliseGuava-equivalent GltfModelasenkron işlevlerini içerir. (If7283) (I0af60) (If7283) (Ia8515) (I4efdf) (I54bbf) (I3467a) (I82a33)
Hata Düzeltmeleri
- Küçültülmüş istemcilerde
AbstractMethodErrorsorununu önlemek için güncellenmiş Jetpack XR ScenecoreProGuardkuralı. (I91a01) - Jetpack XR için Proguard küçültmesini desteklemeye yönelik ek düzeltmeler
SceneCore(I4f47e) - Sistemden döndürülen
hitPositiondeğeri boşsa (null)InputEventHitInfo'nunhitPositiondeğerininInteractableComponentçökmesine neden olabileceği hata düzeltildi (I7a695). - Yapılandırma *Modu değerleri, davranışlarını yansıtacak şekilde yeniden adlandırıldı. (I6d247)
SceneCoreTestApp'te FOV veHitTestile ilgili sorunlar düzeltildi. (I2c51e)SpatialCapabilities.hasCapability()işlevinde, bit düzeyinde VEYA ile iletilen özelliklerden herhangi biri doğruysa yalnızca tüm özellikler doğru olduğunda doğru değerini döndürmesi gerekirken doğru değerini döndürmesine neden olan hata düzeltildi. (I2cd40)SurfaceEntity.StereoMode.TOP_BOTTOM, üstteki harita sol gözde, alttaki harita ise sağ gözde olacak şekilde güncellendi. (I4ae68)
Sürüm 1.0.0-alpha04
7 Mayıs 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha04 ve androidx.xr.scenecore:scenecore-testing:1.0.0-alpha04 yayınlandı. 1.0.0-alpha04 sürümü bu commit'leri içerir.
Yeni Özellikler
- Geriye dönük işleme artık yerleştirilmiş etkinlikler içermeyen panel öğelerinde çalışacak. Geriye doğru işleme özelliğinin çalışması için Android manifestinde
android:enableOnBackInvokedCallback= "true"belirtmeniz gerekir. StereoSurfaceEntityartık iki yeniStereoModedeğeri (MULTIVIEW_LEFT_PRIMARY ve MULTIVIEW_RIGHT_PRIMARY) aracılığıyla MV-HEVC oynatmayı destekliyor.PanelEntity.setSizevePanelEntity.getSizeartık üst alandaki boyutları döndürüyor.Entity.setPose,Entity.getPose,Entity.setScale,Entity.getScale,Entity.setAlphaveEntity.getAlphaartık farklı alanlara göre değerleri alma/ayarlama işlemlerine olanak tanıyan yeni bir parametrerelativeToalıyor. Desteklenen değerler üst, etkinlik ve gerçek dünya alanlarıdır. Bu parametrenin varsayılan değeri üst öğedir.- Sahne içeriğinin kullanıcının görüş alanının içine veya dışına taşındığı zamanı izlemek için
SessionExt.kt'ya Spatial Visibility Callback uzantı yöntemleri eklendi. setPointSourceParams,SpatialAudioTrackadlı parçaya eklendi. Bu sayede, parça oluşturulduktan sonra parametreler güncellenebilir.ScenecoreAPI'lerine referanslar içeren yeni bir sınıf (Sahne) eklendi. Sahne, oturumun bir uzantı özelliği olarak erişilebilir.SessionExtiçindeki işlevler Scene'e taşındı. Bu nedenle, içe aktarmaların ayarlanması gerekecek. Örneğin,SessionExt.getScene(session).addSpatialCapababilitiesChangedListener-SessionExt.addSpatialCapabilitiesChangedListener.ActivityPose.hitTestAsynceklendi. Bu sayede sanal içeriklere karşıhitTestkullanılabiliyor.- Yeni bileşen türü
SpatialPointerComponenteklendi. Bu tür, müşterilerin işaretçi için oluşturulan simgeyi belirtmesine veya simgeyi devre dışı bırakmasına olanak tanır. Bu Bileşen şu anda yalnızcaPanelEntityörneğe eklenebilir. - Yeni
PanelEntityfabrika işleviyle tanışın. Bu işlev, panel boyutlarını metre veya piksel cinsinden alır. Panel için iki boyut türü parametresi alan eskiPanelEntityfabrikası kaldırıldı.
API Değişiklikleri
- Tüm Jetpack XR paketlerindeki
RequiresApi(34)kısıtlaması kaldırıldı. Jetpack XR şu anda yalnızca API düzeyi 34 ve üzeri olan cihazlarda kullanılabildiğinden bu kısıtlama gereksizdi. (Iae0f8) - Kotlin 2.0 ile yayınlanan projelerin kullanılabilmesi için KGP 2.0.0 veya daha yeni bir sürüm gerekir (Idb6b5).
PermissionHelpersınıfı kaldırıldı.PanelEntity.getPixelDensitydesteği sonlandırıldı.PanelEntity.setPixelDimensionsvePanelEntity.getPixelDimensionkaldırıldı, yerinisetSizeInPixelsvegetSizeInPixelsaldı.Entity.getActivitySpaceAlphakaldırıldı.Entity.getAlpha(Space.Activity)ile değiştirilebilir.Entity.getWorldSpaceScalekaldırıldı.Entity.getScale(Space.REAL\_WORLD)ile değiştirilebilir.SceneCoreiçindeki Oturum sınıfı, XR Runtime'daki Oturum sınıfı lehine silindi.StereoSurfaceEntity,SurfaceEntityolarak yeniden adlandırıldı.Entity.setSizeveEntity.getSizekaldırıldı. Aynı yöntemlerPanelEntityiçin eklendi.PointSourceAttributes,PointSourceParamsolarak yeniden adlandırıldı.SpatializerConstants.SOURCE\_TYPE\_BYPASS,SpatializerConstants.SOURCE\_TYPE\_DEFAULTolarak yeniden adlandırıldı.PointSourceParamsöğesinin erişimi herkese açık yerine kuruluş içi olarak değiştirildi.AnchorEntity.createartıkSession.configure()içindePlaneTrackingModeyapılandırılmasını gerektiriyor.SpatialUserAPI'leri artıkSession.configure()içindeHeadTrackingModeyapılandırılmasını gerektiriyor.ResizableComponenteklenmediğinde HATA düzeyinde günlük yerine BİLGİ düzeyinde günlük verilir.- Fov sınıfı artık normal bir Kotlin sınıfıdır.
- Her somut varlık türünü kendi dosyasına yerleştirmek için
Entity.ktöğesini bölün. - Yeni bir
PanelEntityoluştururken çoğu görünümFrameLayoutaltında yeniden üst öğe olarak atanır. Bu,LayoutInspectorile Spatial Panels'in kullanılmasını kolaylaştırır. - Şu anda kullanılan
XrExtensionsörneği, uygulama hata ayıklamasına yardımcı olmak için platforma en iyi çabayı göstererek kaydedilir.
Hata Düzeltmeleri
MovableComponentveAnchorPlacementiçeren birPanelEntitytaşındığında oluşabilecek kilitlenmeyi önlemek için düzeltme eklendi.ResizableComponent'nınonResizeStartgeri çağırmasında eski boyutlar sağlaması sorunu düzeltildi.JxrPlatformAdapterAxr'nındispose()işlevi birden çok kez çağrıldığında yaşanan kilitlenme sorunu düzeltildi.
Sürüm 1.0.0-alpha03
26 Şubat 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha03 ve androidx.xr.scenecore:scenecore-testing:1.0.0-alpha03 yayınlandı. 1.0.0-alpha03 sürümü bu commit'leri içerir.
Yeni Özellikler
- Proguard sadeleştirme artık Jetpack XR kodu için destekleniyor
Hata Düzeltmeleri
- Jetpack XR SceneCore için Proguard küçültmesini destekleyen ek düzeltmeler (I4f47e)
- Küçültülmüş istemcilerde
AbstractMethodErrorsorununu önlemek için güncellenmiş Jetpack XR ScenecoreProGuardkuralı. (I91a01)
Sürüm 1.0.0-alpha02
12 Şubat 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha02 ve androidx.xr.scenecore:scenecore-testing:1.0.0-alpha02 yayınlandı. 1.0.0-alpha02 sürümü bu commit'leri içerir.
1.0.0-alpha02 sürümünden önce oluşturulan uygulamaları etkileyecek önemli değişiklik
- Fabrika yöntemleri,
Sessionsınıfından her bir ilgili türdeki yardımcı yönteme taşındı:Session.createActivityPanelEntity(Dimensions, String, Activity, Pose)silindi veActivityPanelEntity.create(Session, Dimensions, String, Pose)ile değiştirildiSession.createAnchorEntity(Anchor)silindi veAnchorEntity.create(Session, Anchor)ile değiştirildiSession.createAnchorEntity(Dimensions, Int, Int, Duration)silindi veAnchorEntity.create(Session, Dimensions, Int, Int, Duration)ile değiştirildiSession.createEntity(String, Pose)silindi veContentlessEntity.create(Session, String, Pose)ile değiştirildiSession.createExrImageResource(String)silindi veExrImage.create(Session, String)ile değiştirildiSession.createGltfEntity(GltfModel, Pose)silindi veGltfModelEntity.create(Session, GltfModel, Pose)ile değiştirildiSession.createGltfModelResource(String)silindi veGltfModel.create(Session, String)ile değiştirildiSession.createInteractableComponent(Executor, InputEventListener)silindi veInteractableComponent.create(Session, Executor, InputEventListener)ile değiştirildiSession.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean)silindi veMovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean)ile değiştirildiSession.createPanelEntity(View, Dimensions, Dimensions, String, Pose)silindi vePanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose)ile değiştirildiSession.createResizableComponent(Dimensions, Dimensions)silindi veResizableComponent.create(Session, Dimensions, Dimensions)ile değiştirildiSession.createStereoSurfaceEntity(Int, Dimensions, Pose)silindi veStereoSurface.create(Session, Int, Dimensions, Pose)ile değiştirildi
- Aşağıdaki desteği sonlandırılan yöntemler kaldırıldı:
Session.canEmbedActivityPanel(Activity)silindi. Bunun yerinegetSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY)politikasını kullanın.Session.hasSpatialCapability(Int)silindi.getSpatialCapabilities(),SpatialCapabilitiesnesnesi döndürdüğünden,getSpatialCapabilities().hasCapability()'nın uzamsal özelliklerin varlığını kontrol etmek için daha bölümlere ayrılmış bir yöntem olarak kullanılması tercih edilerek bu yöntem değiştirildi.Session.requestFullSpaceMode()silindi veSpatialEnvironment.requestFullSpaceMode()ile değiştirildiSession.requestHomeSpaceMode()silindi veSpatialEnvironment.requestHomeSpaceMode()ile değiştirildi
Session.setFullSpaceMode(Bundle)veSession.setFullSpaceModeWithEnvironmentInherited(Bundle), uzantı işlevlerine taşındı. Geliştirici dosyalarının erişim için yeni içe aktarmaları eklemesi gerekir:import androidx.xr.scenecore.setFullSpaceModeimport androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
Session.setPreferredAspectRatio(Activity, Float), uzantı işlevine taşındı. Geliştirici dosyalarının erişim için yeni içe aktarma işlemini eklemesi gerekir:import androidx.xr.scenecore.setPreferredAspectRatio
Session.getEntitiesOfType(Class<out T>)veSession.getEntityForRtEntity(RtEntity), uzantı işlevlerine taşındı. Geliştirici dosyalarının erişim için yeni içe aktarmaları eklemesi gerekir:import androidx.xr.scenecore.getEntitiesOfTypeimport androidx.xr.scenecore.getEntityForRtEntity
Session.unpersistAnchor(Anchor)silindiSession.createPersistedAnchorEntity(UUID)silindi
Bilinen sorunlar
PanelEntity.setCornerRadius()veActivityPanelEntity.setCornerRadius(), panel bir sonraki taşıma işlemine kadar geçerli olmayabilir. Bu durum, paneli mevcut konumuna taşıyarak giderilebilir.BoundsChanged,ActivitySpacecihazında arandığında bazıActivityPose'ler doğru şekilde güncellenmemiş olabilir.ActivitySpacetarihinde yapılacakOnSpaceUpdatedgörüşmesinde güncellenecek.
Kırılma ve davranış değişiklikleri
- Panelin genişliği veya yüksekliği 32 dp'den küçükse
PanelEntityveActivityPanelEntityiçin varsayılan köşe yarıçapı 32 dp veya daha küçük olur.
Yeni API'ler ve özellikler
StereoSurface.CanvasShapeözelliğini kullanıma sunar. Bu özellik, etkileyici medya oluşturmak içinSphericalveHemisphericaltuvallerinin oluşturulmasına olanak tanır.StereoSurfaceEntity.create()artıkCanvasShapeparametresini kabul ediyor. (Bu parametre şu anda yoksayılmaktadır ancak gelecekteki bir sürümde kullanılacaktır.)StereoSurfaceEntity.create()artıkDimensionsparametresini kullanmıyor. Uygulamalar,CanvasShapeayarını yaparak tuvalin boyutunu kontrol etmelidir.StereoSurfaceEntity, dinamik olarak ayarlanabilenCanvasShapeüyesine sahiptir.StereoSurfaceEntity.dimensionsartık salt okunur bir özelliktir. Uygulamalar, boyutları değiştirmek içinCanvasShapedeğerini ayarlamalıdır.StereoSurfaceEntityartıkStereoMode'ın yapılandırmadan sonra yeniden ayarlanmasına izin veriyor.
Diğer değişiklikler
- Derleme zamanı minSDK 24'e düşürüldü. Tüm Jetpack XR API'leri, çalışma zamanında API 34 gerektirmeye devam eder.
SceneCore'nın oturum fabrikası (Session.create) artıkSCENE_UNDERSTANDINGiznini almak için bir amaç başlatmıyor. Bunun yerine, istemci uygulaması, bağlantı oluşturmaya çalışmadan önce izinleri kullanıcıdan açıkça istemelidir. Kullanıcı izin vermezse bağlantı oluşturma işlemi başarısız olur.
Hata düzeltmeleri
getActivitySpacePose(), her zaman ölçeklendirilmemiş metreler yerine çeviri değerlerini ölçeklendirilmiş metreler olarak döndürerekActivitySpaceölçeğini hesaba katacak şekilde düzeltildi.transformPoseToartık kaynak veya hedefteActivitySpaceolduğunda koordinat değişikliklerini hesaplamak için doğru birimleri de kullanıyor.- Artık
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom))kullanılarak boş bir gökyüzü kutusu tercihi iletildiğinde gökyüzü kutusu tamamen siyah bir gökyüzü kutusu olarak ayarlanacak. Sistemin varsayılan gökyüzü kutusuna ve geometrisine geri dönmek içinsetSpatialEnvironmentPreference(null).kullanın.
Sürüm 1.0.0-alpha01
12 Aralık 2024
androidx.xr.scenecore:scenecore-* 1.0.0-alpha01 iptal edilir.
İlk Sürümün Özellikleri Etkileyici sahneler ve ortamlar oluşturup bunları düzenlemek için kullanılan 3D sahne grafiği kitaplığı Jetpack SceneCore'un ilk geliştirici sürümü. Bu kitaplık, 3D modelleri ve içerik panellerini birbirlerine ve sanal ya da gerçek dünya ortamlarınıza göre yerleştirip düzenlemenize olanak tanır.
- SpatialEnvironment: XR sahnenizin arka planı olarak gökyüzü resmi ve/veya 3D model geometrisiyle tamamen sürükleyici deneyimler oluşturun. Alternatif olarak, sanal sahnenizin kullanıcının gerçek dünya ortamıyla entegre olabilmesi için geçişi etkinleştirin.
- PanelEntity: Standart Android düzenlerini ve Etkinliklerini, gerçek dünyadaki yüzeylere sabitlenebilen veya yüzeylerde kaydırılabilen, uzamsallaştırılmış panellere yerleştirerek 3D sahnelerinize 2D içerik ekleyin.
- GltfModelEntity: Sahnenizdeki 3D modelleri yerleştirin, canlandırın ve bunlarla etkileşimde bulunun. SceneCore, mevcut modellerle kolay entegrasyon için glTF dosya biçimini destekler.
- SpatialAudio: Tamamen etkileyici ve uzamsallaştırılmış ses için 3D sahnenize ortam ve nokta ses kaynakları ekleyin.
- StereoSurfaceEntity: SceneCore, Android Surface'e işlenen içeriğin sol/sağ göz yönlendirmesini destekler. Bu, yan yana veya üst-alt biçiminde stereoskopik içerik oluşturmak için kullanılabilir. Örneğin, stereo fotoğraflar, 3D video veya dinamik olarak oluşturulan diğer kullanıcı arayüzleri. Uygulamalar, video kod çözme için MediaPlayer veya ExoPlayer'ı kullanmalıdır.
- Bileşen sistemi: SceneCore, kullanıcıların modeller ve panellerle hareket etme, yeniden boyutlandırma ve etkileşim kurma gibi olanaklar da dahil olmak üzere XR içeriğinize özellikler eklemek için güçlü ve esnek bir bileşen sistemi sunar.
- Sabitleme: Geçiş etkinleştirildiğinde panelleri ve modelleri gerçek yüzeylere ekleyebilir, böylece kullanıcılara sanal içeriğin gerçek dünya ortamlarına sorunsuz bir şekilde entegrasyonunu sağlayabilirsiniz.
- Kullanıcı Pozu: İçeriğinizi kullanıcının konumuna göre yönlendirmek için sanal sahnedeki kullanıcının konumuna erişin.
- SpatialCapabilities: Kullanılabilir olduğunda, kullanıcı arayüzü içeriğinin 3D konumlandırılması gibi uzamsallaştırılmış özelliklerden yararlanan, tamamen uyarlanabilir uygulamalar oluşturun. Bununla da kalmayıp uygulamanız, kullanıcıların Android XR cihazlarını kullanma şekillerine göre deneyimi değiştirmek için uygulama yürütülürken özelliklerdeki değişiklikleri izleyebilir.
Bilinen Sorunlar
- Jetpack SceneCore'u kullanmak için şu anda minimum SDK sürümü 30 olmalıdır. Geçici çözüm olarak, 23 minSDK ile derleme ve çalıştırma yapabilmek için aşağıdaki manifest girişini
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>ekleyin. - Oturum, ana paneli yeniden boyutlandırma, çevre birimleri bağlama ve açık ile koyu mod arasında geçiş yapma gibi Etkinliğin otomatik olarak yeniden oluşturulduğu çeşitli durumlarda geçersiz hale gelebilir. Oturum geçersiz kılma sorunlarıyla karşılaşırsanız geçici çözümler arasında ana panelinizi yeniden boyutlandırılamaz hale getirme, dinamik panel öğesi kullanma, belirli yapılandırma değişiklikleri için etkinlik yeniden oluşturmayı devre dışı bırakma veya açık/koyu mod tema değişikliklerini devre dışı bırakma yer alır.
- Taşınabilir ve yeniden boyutlandırılabilir bileşenler GltfEntity'de desteklenmez.
- Entity.getSize(), GltfEntity'de desteklenmez.
- Jetpack XR uygulamalarının AndroidManifest'te
android.permission.SCENE_UNDERSTANDINGizni istemesi gerekir. - Oturum oluşturma yalnızca Android XR cihazlarda desteklenir. Şu anda bir oturum oluşturup Android XR olmayan bir cihazda kullanmaya çalışırsanız RuntimeException alırsınız.
- `SpatialEnvironment.setSpatialEnvironmentPreference()` aracılığıyla gökyüzü kutusunun null olarak ayarlanması, belgelendiği gibi tamamen siyah bir gökyüzü kutusuyla sonuçlanmıyor. Bu durumda, sistemin varsayılan gökyüzü kutusu gösterilebilir veya mevcut gökyüzü kutusunda değişiklik yapılmayabilir.
- SceneCore istemcileri, uygulamalarının bağımlılıkları için Gradle yapılandırmalarına
implementation(“com.google.guava:listenablefuture-1.0”)eklemelidir. Scenecore, gelecekteki bir sürümde bu kitaplığıapibağımlılık olarak içerecek. Böylece istemcilerin bunu açıkça bildirmesi gerekmeyecek. - SceneCore,
com.google.guava:guava-31.1-androidvecom.google.protobuf:protobuf-javaliteöğelerini yanlışlıkla geçişli bağımlılık olarak içeriyor. Bu durum, derlemenizde yinelenen sınıf hatalarına neden olursa bu iki bağımlılık güvenli bir şekilde hariç tutulabilir. - Uygulamanız SceneCore kullanıyor ve ProGuard'ı etkinleştiriyorsa oturum oluşturduğunuzda uygulama çöker. Geçici çözüm olarak ProGuard'ı devre dışı bırakın. ProGuard'ı etkinleştirme hakkında daha fazla bilgi için bu kılavuza bakın.