{ } { }
Jetpack SceneCore
Son Güncelleme | Kararlı Sürüm | Sürüm Adayı | Beta Sürümü | Alfa Sürüm |
---|---|---|---|---|
12 Şubat 2025 | - | - | - | 1.0.0-alpha02 |
Bağımlılıkları beyan etme
XR SceneCore'a bağımlı eklemek için projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu inceleyin.
Uygulamanızın veya modülünüzün build.gradle
dosyasına ihtiyacınız olan yapıların bağımlılıklarını ekleyin:
Eski
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-alpha01" // 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-alpha01" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha01") // 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-alpha01") }
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ştirmek için fikirleriniz varsa lütfen bize bildirin. Yeni bir kitaplık oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oy verebilirsiniz.
Daha fazla bilgi için Sorun İzleyici belgelerine bakın.
Sürüm 1.0
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 taahhütleri 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 ilgili her türdeki bir 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()
birSpatialCapabilities
nesnesi döndürdüğü içingetSpatialCapabilities()
, mekansal özelliklerin varlığını kontrol etmenin daha bölümlendirilmiş bir yolu olarakgetSpatialCapabilities().hasCapability()
ile 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şmek için yeni içe aktarma işlemlerini eklemesi gerekir:import androidx.xr.scenecore.setFullSpaceMode
import androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
Session.setPreferredAspectRatio(Activity, Float)
, bir uzantı işlevine taşındı. Geliştirici dosyalarının erişmek 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şmek için yeni içe aktarma işlemlerini 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 kez taşınana kadar geçerli olmayabilir. Bu durum, paneli mevcut konumuna taşıyarak azaltılabilir.ActivitySpace
üzerindeBoundsChanged
çağrıldığında bazıActivityPose
'ler doğru şekilde güncellenmeyebilir. Bu durum,ActivitySpace
tarihinde yapılacakOnSpaceUpdated
görüşmesinde güncellenecektir.
Zararlı içerikler ve davranış değişiklikleri
- Panelin genişliği veya yüksekliği 32 dp'den azsa
PanelEntity
veActivityPanelEntity
'nin varsayılan köşe yarıçapı 32 dp veya daha küçük olur.
Yeni API'ler ve özellikler
- Tam sayfa medya oluşturmak için
Spherical
veHemispherical
kanvasları oluşturmanıza olanak tanıyanStereoSurface.CanvasShape
özelliğini kullanıma sundu. StereoSurfaceEntity.create()
artıkCanvasShape
parametresini kabul ediyor. (Bu parametre şu anda yoksayılıyor ancak gelecekteki bir sürümde kullanılacak.)StereoSurfaceEntity.create()
artıkDimensions
parametresi almıyor. Uygulamalar,CanvasShape
StereoSurfaceEntity
, dinamik olarak ayarlanabilen birCanvasShape
üyesine sahiptir.StereoSurfaceEntity.dimensions
artık salt okunur bir mülktür; uygulamalar boyutları değiştirmek içinCanvasShape
değerini ayarlamalıdır.StereoSurfaceEntity
artıkStereoMode
'ın inşaattan sonra yeniden ayarlanmasına izin veriyor.
Diğer değişiklikler
- Derleme zamanı minimum SDK sürümü 24'e düşürüldü. Tüm Jetpack XR API'leri, çalışma zamanında API 34'ü kullanmaya devam eder.
SceneCore
'ın Oturum fabrikası (Session.create
), artıkSCENE_UNDERSTANDING
iznini almak için intent başlatmıyor. Bunun yerine istemci uygulaması, sabitleyicileri oluşturmaya başlamadan önce kullanıcıdan açıkça izin istemelidir. Kullanıcı izin vermezse ankraj oluşturulamaz.
Hata düzeltmeleri
getActivitySpacePose()
, her zaman ölçeklendirilmemiş metreler döndürmek yerine çeviri değerlerini ölçeklendirilmiş metre cinsinden döndürerekActivitySpace
ölçeğini hesaba katacak şekilde düzeltildi.transformPoseTo
artık kaynak veya hedefteActivitySpace
bulunduğunda koordinat değişikliklerini hesaplamak için doğru birimleri de kullanıyor.- Artık
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom))
kullanılarak null bir gökyüzü kutusu tercihi iletildiğinde gökyüzü kutusu tamamen siyah olarak ayarlanacaktır. Sistemdeki varsayılan gökyüzü kutusuna ve geometrisine dönmek içinsetSpatialEnvironmentPreference(null).
Sürüm 1.0.0-alpha01
12 Aralık 2024
androidx.xr.scenecore:scenecore-* 1.0.0-alpha01
yayınlanır.
İlk Sürümün Özellikleri Immersive sahneler ve ortamlar oluşturmak ve bunlarda değişiklik yapmak 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 birbirine ve sanal ya da gerçek dünya ortamlarınıza göre yerleştirmenize ve düzenlemenize olanak tanır.
- SpatialEnvironment: Ortamınızın XR sahnesinin arka planı olarak bir gökyüzü kutusu resmi ve/veya 3D model geometrisi kullanarak tamamen etkileyici deneyimler oluşturun. Dilerseniz sanal sahnenizin kullanıcının gerçek dünya ortamıyla entegre olabilmesi için geçişi etkinleştirebilirsiniz.
- PanelEntity: Standart Android düzenleri ve etkinliklerini, gerçek dünyadaki yüzeylere sabitlenebilen veya yüzebilen uzamsal panellere yerleştirerek 3D sahnelerinize 2D içerik ekleyin.
- GltfModelEntity: Sahnenizde 3D modeller yerleştirin, animasyonlu hale getirin ve bunlarla etkileşim kurun. SceneCore, mevcut modellerle entegrasyonu kolaylaştırmak için glTF dosya biçimini destekler.
- Üç Boyutlu Ses: Tam anlamıyla sürükleyici, üç boyutlu ses için 3D sahnenize ortam ve nokta ses kaynakları ekleyin.
- StereoSurfaceEntity: SceneCore, Android yüzeyinde oluşturulan içeriğin sol/sağ göze yönlendirilmesini destekler. Bu, stereoskopik içeriği yan yana veya yukarıdan aşağıya biçiminde (ör. stereo fotoğraflar, 3D video veya dinamik olarak oluşturulan diğer kullanıcı arayüzleri) oluşturmak için kullanılabilir. Uygulamalar, video kod çözme için MediaPlayer veya ExoPlayer'ı kullanmalıdır.
- Bileşen sistemi: SceneCore, kullanıcıların modelleri ve panelleri taşıması, yeniden boyutlandırması ve bunlarla etkileşime geçmesi için 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 ekleyebilirsiniz. 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 kullanıcının sanal sahnedeki konumuna erişin.
- SpatialCapabilities: Kullanılabilir olduğunda kullanıcı arayüzü içeriğinin 3D olarak konumlandırılması gibi uzamsallaştırılmış özelliklerden yararlanan tamamen uyarlanabilir uygulamalar oluşturun. Ayrıca uygulamanız, çalıştırıldığı sırada özelliklerde yapılan değişiklikleri izleyebilir. Böylece, deneyimi kullanıcının Android XR cihazını kullanma şekline göre değiştirebilir.
Bilinen Sorunlar
- Jetpack SceneCore'u kullanmak için şu anda 30'un üzerinde bir minSDK gereklidir. Geçici çözüm olarak, 23 minSDK ile derleyip çalıştırabilmek için aşağıdaki manifest girişini
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>
ekleyin. - Ana panelin yeniden boyutlandırılması, çevre birimlerinin bağlanması ve açık ile koyu mod arasında geçiş yapılması gibi etkinliği otomatik olarak yeniden oluşturan çeşitli durumlarda oturum geçersiz hale gelebilir. Oturum geçersizleştirme 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/karanlık 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 üzerinde desteklenmez.
- Jetpack XR uygulamalarının AndroidManifest'de
android.permission.SCENE_UNDERSTANDING
izni istemesi gerekir. - Oturum oluşturma özelliği yalnızca Android XR cihazlarda desteklenir. Şu anda bir oturum oluşturup Android XR dışında bir cihazda kullanmayı denerseniz RuntimeException alırsınız.
- "SpatialEnvironment.setSpatialEnvironmentPreference()" aracılığıyla gökyüzü kutusunu null olarak ayarlamak, dokümanda belirtildiği gibi tamamen siyah bir gökyüzü kutusu oluşturmaz. Bu işlem, sistemin varsayılan gökyüzü kutusuna neden olabilir veya mevcut gökyüzü kutusunda herhangi bir değişiklik yapmayabilir.
- 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ığı olarak içerecek. Böylece istemcilerin bunu açıkça belirtmesi gerekmeyecek. - SceneCore,
com.google.guava:guava-31.1-android
vecom.google.protobuf:protobuf-javalite
'u geçişli bağımlılık olarak yanlışlıkla dahil ediyor. Bu, 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ıyorsa ve ProGuard'ı etkinleştirdiyseniz oturum oluşturduğunuzda uygulamanız kilitlenir. 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.