Jetpack SceneCore
Son Güncelleme | Kararlı sürüm | Sürüm Adayı | Beta Sürümü | Alfa sürümü |
---|---|---|---|---|
30 Temmuz 2025 | - | - | - | 1.0.0-alpha05 |
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:
Eski
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha05" // Required for Java implementation "com.google.guava:listenablefuture:1.0" // Required for Kotlin implementation "org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.9.0" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha05" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha05") // Required for Java implementation("com.google.guava:listenablefuture:1.0") // Required for Kotlin implementation("org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.9.0") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha05") }
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 olursa 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-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
yayınlandı. 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) PerceivedResolution
HSM'deki etkinliğin ana panelinin algılanan çözünürlüğünü izlemek için Scene.kt dosyasına 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)recommendedContentBoxInFullSpace
özelliğiActivitySpace
adlı reklam grubuna 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 adı 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ı,SceneCore
istemcileri tarafından değiştirilmemesi amaçlandığından gizli hale getirildi:activitySpace
,activitySpaceRoot
,mainPanelEntity
,perceptionSpace
,spatialCapabilities
,spatialEnvironment
vespatialUser
. (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.BasePanelEntity
sınıfı kaldırıldı. Bunun yerine doğrudanPanelEntity
kullanın.PanelEntity
için alıcılar ve ayarlayıcılar özelliklerle değiştirildi.PanelEntity.size
özelliği,Float3dSize
olan önceki değerdenFloat2dSize
olarak değiştirildi. Kullanımdan kaldırılanandroidx.xr.scenecore.PanelEntity.getPixelDimensions
yöntemi kaldırıldı. Bunun yerinegetSizeInPixels
yöntemini kullanın. (Icc174)androidx.xr.scenecore.OnSpaceUpdatedListener
,Runnable
ile değiştirildi. (I19308)SpatialUser.getCameraViews()
öğesi bir mülkle değiştirildi. (Ib0cc5)ExrImage
veGltfModel:
içincreate
yöntemleri askıya alma işlevleri olarak değiştirildi; oluşturma parametreleri,String
yerineUri
veyaPath
kabul edecek şekilde değiştirildi. (Id8883) (I0d247), (I25706)SpatialEnvironment.requestFullSpaceMode
veSpatialEnvironment.requestHomeSpaceMode
, Sahne'ye taşındı. Örneğin,session.scene.spatialEnvironment.requestFullSpaceMode()
yerinesession.scene.requestFullSpaceMode()
kullanın.addOnPassthroughOpacityChangedListener
veaddOnSpatialEnvironmentChangedListener
artık isteğe bağlı Executor'ları kabul eden geçersiz kılma işlemlerine sahip. (I12fe0) (I6b21e)- Kullanımdan kaldırılan şu
SpatialEnvironment
yöntemleri kaldırıldı:togglePassthrough
,setPassthrough
,setPassthroughOpacity
,getPassthroughMode
,getPassthroughOpacity
,setSkybox
vesetGeometry
. Ayrıca, kullanımdan kaldırılanSpatialEnvironment.PassthroughMode
(I927bd) (I927bd) (I927bd) sınıfı da kaldırıldı. - Aşağıdaki
SpatialEnvironment
alıcılar ve ayarlayıcılar Kotlin özellikleriyle değiştirildi:getCurrentPassthroughOpacity()
,get/setPassthroughOpacityPreference()
,get/setSpatialEnvironmentPreference()
,isSpatialEnvironmentPreferenceActive()
(I33a7b) (Ie06e2) (Ie06e2) SpatialEnvironmentPreference.preferredPassthroughOpacity
türüFloat?
olarak değiştirildi.Float
Artık boş değerler kabul edilmiyor. Bunun yerine, opaklık tercihi olmadığını belirtmek içinSpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCE
kullanılır. (I40107)- Oluşturma yönteminde
windowBoundsPx
parametresipixelDimensions
olarak, türü ise Rect'tenIntSize2d
olarak güncellendi. (I1926e) SpatialEnvironment
oluşturucusu artık dahili (I75a51)SpatialPointerIconNone
veSpatialPointerIconCircle
sınıfları, yardımcı nesnelerSpatialPointerIcon.NONE
veSpatialPointerIcon.CIRCLE
ile değiştirildi (I416d2).SpatialPointerComponent
içindekiSpatialPointerIcon
artık boş değer içermez. Sistem varsayılanı işaretçi simgesinin kullanılması gerektiğini belirtmek için null yerineSpatialPointerIcon.DEFAULT
değ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 dinleyici ayarlama ve ekleme yöntemlerinde, sondaki lambda'ların etkinleştirilmesi için dinleyici son bağımsız değişkene taşındı.AnchorEntity
içinandroidx.xr.scenecore.OnStateChangedListener
yerineConsumer<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.addOnBoundsChangedListener
olarak yeniden adlandırıldı.ActivitySpace.setOnSpaceUpdatedListener
yerine ekleme/kaldırma yöntemleri eklendi. (I4c956)AnchorPlacement: planeTypeFilter
olan adanchorablePlaneOrientations
olarak,planeSemanticFilter
olan adanchorablePlaneSemanticTypes
olarak değiştirildi.AnchorEntity
veyaActivitySpace
işlevineMovableComponent
eklenmesi "yanlış" değerini döndürür,MoveListener
işlevinin adıEntityMoveListener shouldDisposeParentAnchor
olarak değiştirildi,disposeParentOnReAnchor systemMovable
işlevicreeateCustomMovable
,createSystemMovable
vecreateAnchorable
işlevleri lehinecreate
işlevinden kaldırıldı (If11c4)SurfaceEntity.featherRadiusX/Y
kaldırılır veEdgeFeatheringParams
sı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.mainPanelEntity
artıkPanelEntity
yerineMainPanelEntity
türünde (I7125a)- Scene'in
setFullSpaceMode
yöntemiconfigureBundleForFullSpaceModeLaunch
,setFullSpaceModeWithEnvironmentInherited
yöntemi iseconfigureBundleForFullSpaceModeLaunchWithEnvironmentInherited
olarak 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).SpatialVisibility
sınıfı, sabit int değerlerine sahip genel nesneyle değiştirildi.setSpatialVisibilityChangedListener
artıkConsumer<SpatialVisibility>
yerineConsumer<Int>
kabul ediyor (Ie7e8c)PointerCaptureComponent
sabiti yeniden adlandırıldı vePointerCaptureComponent.PointerCaptureState
nesnesine 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ındanSpatialWindow
nesnesine 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.contentDescription
türü, String'denCharSequence
olarak değiştirildi. (Ie59be)Session.create
veSession.configure
artıkSessionCreatePermissionsNotGranted
veyaSessionConfigurePermissionsNotGranted
değerini döndürmek yerine yeterli izin verilmediğindeSecurityException
değerini döndürüyor. (I7c488)ResizableComponent.create
artıkConsumer<ResizeEvent> ResizeEventListener
gerektiriyor.Consumer<ResizeEvent> ResizableComponent.size
,ResizableComponent.affordanceSize ResizableComponent.minimumSize
olarak yeniden adlandırıldı.ResizableComponent.minimumEntitySize ResizableComponent.maximumSize
,ResizableComponent.maximumEntitySize
olarak yeniden adlandırıldı.ResizableComponent.autoHideContent
,ResizableComponent.shouldAutoHideContent
olarak yeniden adlandırıldı.ResizableComponent.forceShowResizeOverlay
,ResizableComponent.shouldAlwaysShowOverlay
olarak yeniden adlandırıldı (I97a2d).minSDK
,androidx.xr.scenecore
veandroidx.xr.compose
iç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
SceneCore
yapı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-guava
kitaplığı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) ListenableFuture
döndüren tüm asenkron yöntemler, Kotlin'in askıya alma işlevleriyle değiştirildi. Kotlin'in askıya alma işlevleri yerineListenableFuture
tabanlı asenkron yöntemler kullanmak isteyen Java geliştiricilerin artık:xr:scenecore-scenecore-guava
'deki uzantı işlevlerini kullanması gerekiyor. Örneğin,GuavaExrImage
, Guava'daki ExrImage eşdeğeri olan eşzamansız işlevleri,GuavaScenePose
, Guava'dakiScenePose
eşdeğeri olan eşzamansız işlevleri,GuavaGltfModel
iseGuava-equivalent GltfModel
eşdeğeri olan eşzamansız işlevleri içerir. (If7283) (I0af60) (If7283) (Ia8515) (I4efdf) (I54bbf) (I3467a) (I82a33)
Hata Düzeltmeleri
- Küçültülmüş istemcilerde
AbstractMethodError
sorununu önlemek için güncellenmiş Jetpack XR ScenecoreProGuard
kuralı. (I91a01) - Jetpack XR için Proguard küçültmesini desteklemeye yönelik ek düzeltmeler
SceneCore
(I4f47e) - Sistemden döndürülen
hitPosition
değeri boşsa (null)InputEvent
HitInfo'nunhitPosition
değerininInteractableComponent
çökmesine neden olabileceği hata düzeltildi (I7a695). - Yapılandırma *Mode değerleri, davranışlarını yansıtacak şekilde yeniden adlandırıldı. (I6d247)
SceneCore
TestApp'te FOV veHitTest
ile 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. StereoSurfaceEntity
artık MULTIVIEW_LEFT_PRIMARY ve MULTIVIEW_RIGHT_PRIMARY olmak üzere iki yeniStereoMode
değeriyle MV-HEVC oynatmayı destekliyor.PanelEntity.setSize
vePanelEntity.getSize
artık üst alandaki boyutları döndürüyor.Entity.setPose
,Entity.getPose
,Entity.setScale
,Entity.getScale
,Entity.setAlpha
veEntity.getAlpha
artık farklı alanlara göre değerlerin alınmasına/ayarlanmasına olanak tanıyan yeni bir parametrerelativeTo
alıyor. Desteklenen değerler Parent, Activity ve Real World spaces'tir. Bu parametrenin varsayılan değeri Parent'tır.- 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
,SpatialAudioTrack
'ye eklendi. Bu sayede, parça oluşturulduktan sonra parametrelerin güncellenmesine olanak tanındı.Scenecore
API'lerine referanslar içeren yeni bir sınıf (Sahne) eklendi. Sahne, oturumun bir uzantı özelliği olarak erişilebilir.SessionExt
içindeki işlevler Scene'e taşındı. Bu nedenle, içe aktarmaların ayarlanması gerekecek. Örneğin,SessionExt.getScene(session)
.addSpatialCapababilitiesChangedListener
-SessionExt.addSpatialCapabilitiesChangedListener
.ActivityPose.hitTestAsync
eklendi. Bu sayede, sanal içeriklere karşıhitTest
kullanılabiliyor.- Yeni bileşen türü
SpatialPointerComponent
eklendi. 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
PanelEntity
fabrika 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 eskiPanelEntity
fabrikası 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).
PermissionHelper
sınıfı kaldırıldı.PanelEntity.getPixelDensity
desteği sonlandırıldı.PanelEntity.setPixelDimensions
vePanelEntity.getPixelDimension
kaldırıldı, yerinisetSizeInPixels
vegetSizeInPixels
aldı.Entity.getActivitySpaceAlpha
kaldırıldı.Entity.getAlpha(Space.Activity)
ile değiştirilebilir.Entity.getWorldSpaceScale
kaldırıldı.Entity.getScale(Space.REAL\_WORLD)
ile değiştirilebilir.SceneCore
içindeki Oturum sınıfı, XR Runtime'daki Oturum sınıfı lehine silindi.StereoSurfaceEntity
,SurfaceEntity
olarak yeniden adlandırıldı.Entity.setSize
veEntity.getSize
kaldırıldı ve aynı yöntemlerPanelEntity
'ye eklendi.PointSourceAttributes
,PointSourceParams
olarak yeniden adlandırıldı.SpatializerConstants.SOURCE\_TYPE\_BYPASS
,SpatializerConstants.SOURCE\_TYPE\_DEFAULT
olarak yeniden adlandırıldı.PointSourceParams
öğesinin erişimi herkese açık yerine kuruluş içi olarak değiştirildi.AnchorEntity.create
artıkSession.configure()
içindePlaneTrackingMode
yapılandırılmasını gerektiriyor.SpatialUser
API'leri artıkSession.configure()
içindeHeadTrackingMode
yapılandırılmasını gerektiriyor.ResizableComponent
eklenmediğ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
PanelEntity
oluştururken çoğu görünümFrameLayout
olarak yeniden üst öğe atanır. Bu,LayoutInspector
ile Spatial Panels'in kullanımı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 şekilde kayıtlıdır.
Hata Düzeltmeleri
MovableComponent
veAnchorPlacement
içeren birPanelEntity
taşındığında oluşabilecek kilitlenmeyi önlemek için düzeltme eklendi.ResizableComponent
öğesininonResizeStart
geri ç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ı. Sürüm 1.0.0-alpha03, 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
AbstractMethodError
sorununu önlemek için güncellenmiş Jetpack XR ScenecoreProGuard
kuralı. (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,
Session
sı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
- Desteği sonlandırılan aşağıdaki 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()
,SpatialCapabilities
nesnesi 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.setFullSpaceMode
import 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.getEntitiesOfType
import 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
,ActivitySpace
cihazında arandığında bazıActivityPose
cihazları doğru şekilde güncellenmemiş olabilir.ActivitySpace
tarihinde yapılacakOnSpaceUpdated
görüşmesinde güncellenecektir.
Kırılma ve davranış değişiklikleri
- Panelin genişliği veya yüksekliği 32 dp'den küçükse
PanelEntity
veActivityPanelEntity
iç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çinSpherical
veHemispherical
tuvallerinin oluşturulmasına olanak tanır.StereoSurfaceEntity.create()
artıkCanvasShape
parametresini kabul ediyor. (Bu parametre şu anda yoksayılmaktadır ancak gelecekteki bir sürümde kullanılacaktır.)StereoSurfaceEntity.create()
artıkDimensions
parametresini kullanmıyor. Uygulamalar,CanvasShape
ayarını yaparak tuvalin boyutunu kontrol etmelidir.StereoSurfaceEntity
, dinamik olarak ayarlanabilenCanvasShape
üyesine sahiptir.StereoSurfaceEntity.dimensions
artık salt okunur bir özelliktir. Uygulamalar, boyutları değiştirmek içinCanvasShape
değerini ayarlamalıdır.StereoSurfaceEntity
artı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_UNDERSTANDING
iznini 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 ölçeklendirilmiş metrelerde çeviri değerleri döndürerekActivitySpace
ölçeğini hesaba katacak şekilde düzeltildi.transformPoseTo
artık kaynak veya hedefteActivitySpace
olduğ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: Ortamınızın XR sahnesinin 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ılar sanal içeriği gerçek dünya ortamlarına sorunsuz bir şekilde entegre edebilir.
- 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 şekline göre deneyimi değiştirmek için uygulama yürütülürken özelliklerdeki değişiklikleri izleyebilir.
Bilinen Sorunlar
- Jetpack SceneCore'un kullanılabilmesi 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.
- GltfEntity'de taşınabilir ve yeniden boyutlandırılabilir bileşenler desteklenmez.
- Entity.getSize() işlevi, GltfEntity'de desteklenmez.
- Jetpack XR uygulamalarının AndroidManifest'te
android.permission.SCENE_UNDERSTANDING
izni 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 hatası alırsınız.
- `SpatialEnvironment.setSpatialEnvironmentPreference()` ile 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. Gelecekteki bir sürümde, scenecore bu kitaplığıapi
bağımlılık olarak içerecek. Böylece istemcilerin bunu açıkça bildirmesi gerekmeyecek. - SceneCore,
com.google.guava:guava-31.1-android
vecom.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.