XR için Jetpack Compose
Son Güncelleme | Kararlı Sürüm | Sürüm Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
7 Mayıs 2025 | - | - | - | 1.0.0-alpha04 |
Bağımlılıkları beyan etme
XR Compose'a bağımlılık 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.compose:compose:1.0.0-alpha04" // Use to write unit tests testImplementation "androidx.xr.compose:compose-testing:1.0.0-alpha04" }
Kotlin
dependencies { implementation("androidx.xr.compose:compose:1.0.0-alpha04") // Use to write unit tests testImplementation("androidx.xr.compose:compose-testing:1.0.0-alpha04") }
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-alpha04
7 Mayıs 2025
androidx.xr.compose:compose:1.0.0-alpha04
ve androidx.xr.compose:compose-testing:1.0.0-alpha04
yayınlandı. 1.0.0-alpha04 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Özel
SubspaceModifier
türlerinin kompozisyon yerel değerlerine erişmesine izin vermek içinCompositionLocalConsumerSubspaceModifierNode
arayüzü eklendi. - Oluşturma
AndroidView
uygulama stilini izleyen ve öncekiViewBased SpatialPanel
için desteği sonlandıran yeni birSpatialPanel
API eklendi. - Sınırsız kısıtlamaları temsil eden
VolumeConstraints.Unbounded
tamamlayıcı nesnesi eklendi. - Uzamsal ses kaynağına izin vermek için
SubspaceModifier.onPointSourceParams
eklendi. - Uygulamanın mekansal içerik oluşturabileceği 3D bir alanı tanımlamak için isteğe bağlı
VolumeConstraints
sunan herkese açık birApplicationSubspace
eklendi. Varsayılan olarak, herhangi bir kısıtlama belirtilmezse alt alan,SpatialUser
'nin mevcut genişlik ve yükseklikteki görüş alanıyla sınırlandırılır. Kullanıcılar, görüş alanı belirlenemezse kullanılacak kısıtlamaları sağlayabilir. Aksi takdirde, varsayılan görüntü alanı genişliği ve yüksekliği değerleri kullanılır. - Stereoskopik içerik oluşturmak için kullanılabilen
SpatialExternalSurface
eklendi.SpatialExternalSurface
, değiştiricilerle (alfa hariç) ve kenar yumuşatma efektiyle özelleştirilebilir. - Kullanıcıların uzamsal işaretçinin simgesini ayarlamalarına olanak tanıyan yeni bir
pointerHoverIcon
alt alan değiştirici eklendi.
API Değişiklikleri
- Tüm Jetpack XR paketlerinde
RequiresApi(34)
kısıtlaması kaldırıldı. Jetpack XR şu anda yalnızca API düzeyi 34 ve sonraki sürümleri çalıştıran cihazlarda kullanılabildiğinden bu kısıtlama gereksiz hale gelmişti. (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)
- Geri işleme artık yerleşik etkinlikler içermeyen mekansal panellerde çalışacak. Geri işleme özelliğinin çalışması için Android manifest dosyasında
android:enableOnBackInvokedCallback="true"
belirtmeniz gerekir. - Geri işleme özelliği artık mekansal iletişim kutularında da çalışacak. Geri işleme özelliğinin çalışması için Android manifest dosyasında
android:enableOnBackInvokedCallback="true"
belirtmeniz gerekir. - Oluşturma tabanlı ve görüntüleme tabanlı
SpatialPanel
'ler artık içeriklerine göre boyutlandırılabilir. - Geliştiriciler artık kendi özel
SpatialElevationLevel
değerlerini belirleyebilir ve önceden tanımlanmış seviyelerle sınırlı değildir. - Yörünge aracının yükseklik düzeyi artık
elevation
parametresi aracılığıyla özelleştirilebilir. - Alt alan artık varsayılan olarak
SpatialUser
'nin genişlik ve yükseklikteki görüş alanıyla sınırlandırılabilir. Görüş alanı belirlenemezse varsayılan görüş alanı genişliği ve yüksekliği değerleri kullanılır. Movable
değiştiricisine yeni geri çağırma işlevlerionMoveStart
veonMoveEnd
eklendi.onMoveStart
veonMoveEnd
geri çağırma işlevleri, kullanıcı hareketli değiştiriciyle birleştirilebilir bir alt uzayı hareket ettirmeye başladığında ve hareket ettirmeyi bıraktığında çağrılır.name
parametresi,SpatialRow
veSpatialPanel
gibi uzamsal API'lerden kaldırıldı. Mekansal oluşturma ağaçları için bunun yerineSubspaceModifier.testTag
kullanın.- Yalnızca
spatialElevationLevel
vecontent
içeren, desteklenmeyen birSpatialPopup
aşırı yüklemesi kaldırıldı. LütfenonDimissRequest
'ü destekleyen arayüzü kullanın. - Movable değiştiriciden gelen
onPoseChange
geri çağırma işlevi kaldırıldı. Bunun yerineonMove
'ü kullanın. SubspaceModifiers
, ayrılmışsa veya ayrılıyorsa artık efektlerini uygulamaz.- Mevcut
SpatialRow
API,SpatialRow
veSpatialCurvedRow
olarak ikiye ayrıldı. Daha önceSpatialRow
'ıncurveRadius
parametresini kullanıyorsanız bunun yerine aynı davranışı sunanSpatialCurvedRow
parametresini kullanın. MainPanel
veActivityPanel
, benzer şekilde yeni bir sistem görüntüsünde çalıştırıldığında artık başlık çubuğuna sahip değildir.- Alfa ve ölçek değiştiriciler artık yığınlanabilir ve uygulanan son alfa veya ölçek değeri için değerlerini çarpar.
- Movable değiştiriciden gelen
onPoseChange
geri çağırma işlevi, daha yumuşak poz hareketi gerçekleştirmek için optimize edildi. - Taşınabilir ve yeniden boyutlandırılabilir değiştiriciler artık durum değişikliklerinin yeniden oluşturmayı tetiklemesini sağlamak için geri çağırma işlevlerini ana iş parçacığında gerçekleştirecek.
SubspaceLayout
'teki durum değişikliklerinin yeniden düzeni tetiklemesini sağlamak için düzen ve ölçüm aşamalarına durum gözlemi eklendi.- Mevcut değiştiricileri daha iyi yeniden kullanmak için optimize edilmiş değiştirici zinciri güncellemeleri.
Hata Düzeltmeleri
SpatialDialog
gösterildiğinde ekran karartıldı. (Ic4594)- Değiştirici düğümler ayrılmışken yapılan yeniden düzenleme istekleri artık yoksayılacak.
- Taşınabilir ve Değiştirilebilir değiştiriciler tarafından tetiklenen yeniden düzen aşamaları kaldırıldı.
MainPanel()
bileşeninde, boyut doğrudan veya bir düzen hesaplaması (ör.SpatialRow/SpatialColumn
hesaplaması) sırasında sıfır olarak ayarlandığında meydana gelen kilitlenme düzeltildi. Panel artık gizlenir. Bu düzeltmenin özellikle düzen aşamasındaki kilitlenmeleri ele aldığını unutmayın. Panelin kullanıcı etkileşimi aracılığıyla sıfıra yeniden boyutlandırılması ayrı olarak ele alınacaktır. Gizli panelde kullanıcı arayüzü kolaylıkları yok.- Boyutlandırılabilir değiştiricideki
maintainAspectRatio
ile ilgili sorun düzeltildi. En boy oranı artık korunacaktır. - İç içe yerleştirilmiş alt alanların tek bir kare için yanlış konumlandırılmasına neden olan sorun düzeltildi.
- Yuvarlatılmış köşelerin bazen uygulanması gerektiği halde uygulanmaması sorunu düzeltildi.
NestedSubspaces
artık bir kare için yanlış konumda görünmeyecek.
Sürüm 1.0.0-alpha03
26 Şubat 2025
androidx.xr.compose:compose:1.0.0-alpha03
ve androidx.xr.compose:compose-testing:1.0.0-alpha03
, son alfa sürümden bu yana önemli bir değişiklik içermeden yayınlandı. 1.0.0-alpha03 sürümü bu taahhütleri içerir
Sürüm 1.0.0-alpha02
12 Şubat 2025
androidx.xr.compose:compose:1.0.0-alpha02
ve androidx.xr.compose:compose-testing:1.0.0-alpha02
yayınlandı. 1.0.0-alpha02 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Etkinlik paneli artık bir uzamsal iletişim etkinleştirildiğinde içeriğini karartabilir.
Orbiter
API artıkSubspaceComposable
bağlamlarında kullanılabilir ve Orbiter'ları en yakınSubspaceLayout
tabanlı birleştirilebilir üst öğelerine ekler.- Özel konumlandırmaya dayalı değiştiricilere izin vermek için
LayoutCoordinatesAwareModifierNode
kullanıma sunuldu. SubspaceModifier.Node
için ekleme/çıkarma yaşam döngüsü yöntemleri eklendi.- Hareketli değiştiriciye
scaleWithDistance
eklendi.scaleWithDistance
etkinleştirildiğinde, taşınan alt alan öğesi büyür veya küçülür. Ayrıca, hareket etmeden önceki açık ölçeği de korur.
API Değişiklikleri
SessionCallbackProvider
,SpatialCapabilities
için kaldırıldı.
Diğer değişiklikler
minSDK
24'e düşürüldü. Tüm Jetpack XR API'leri, çalışma zamanında API 34'ü kullanmaya devam eder.Orbiter
EdgeOffset.inner
,EdgeOffset.outer
veEdgeOffset.overlap
kurucuları artık@Composable
yöntemleri değildir. Bu sayede, birleştirilebilir olmayan bağlamlarda kullanılabilirler.- Uzamsal yükseklik seviyelerini en son kullanıcı deneyimi spesifikasyonuyla eşleşecek şekilde güncelleyin.
SubspaceSemanticsInfo
arayüzünüMeasurableLayout
'a uygulayın.SubspaceModifierElement
,SubspaceModifierNodeElement
olarak yeniden adlandırıldı.
Hata düzeltmeleri
SubspaceModifier
sıralamasını sabitlemek için düzeltmeler.SubspaceModifier
daha güvenilir şekilde davranacaktır. Ofset, döndürme, ölçek, taşınabilir ve yeniden boyutlandırılabilir değiştirici artık herhangi bir sırada kullanılabilir.
Sürüm 1.0.0-alpha01
12 Aralık 2024
androidx.xr.compose:compose-*1.0.0-alpha01
yayınlanır.
İlk Sürümün Özellikleri
XR için Jetpack Compose'un ilk geliştirici sürümü. Mevcut bir 2D uygulamayı XR'ye taşıyor veya sıfırdan yeni bir XR uygulaması oluşturuyor olsanız da XR'de uzamsal kullanıcı arayüzü düzenleri oluşturmak için satırlar ve sütunlar gibi tanıdık Compose kavramlarını kullanın. Bu kitaplık, mevcut 2D Compose veya Görünüm tabanlı kullanıcı arayüzünüzü bir mekansal düzene yerleştirmenize olanak tanıyan mekansal paneller ve yörünge araçları gibi alt alan ve mekansal bileşenler sağlar. Bu sürümde, 3D modeller gibi SceneCore öğelerini kullanıcı arayüzünüze göre yerleştirmenize olanak tanıyan Hacim alt uzayı birleştirilebilir öğesi kullanıma sunulmuştur. Daha fazla bilgi için bu geliştirici kılavuzunu inceleyin:
Subspace
: Bu bileşen, uygulamanızın kullanıcı arayüzü hiyerarşisinin herhangi bir yerine yerleştirilebilir. Böylece, dosyalar arasındaki bağlamı kaybetmeden 2D ve uzamsal kullanıcı arayüzü için düzenleri koruyabilirsiniz. Bu sayede, kullanıcı arayüzü ağacınızın tamamında durumu kaldırmanıza veya uygulamanızın mimarisini yeniden tasarlamanıza gerek kalmadan mevcut uygulama mimarisi gibi öğeleri XR ile diğer form faktörleri arasında paylaşabilirsiniz.SpatialPanel: Mekansal panel, uygulama içeriğini görüntülemenize olanak tanıyan bir alt alan bileşimidir. Örneğin, bir mekansal panelde video oynatma, hareketsiz resimler veya başka herhangi bir içerik görüntüleyebilirsiniz.
Yörünge aracı: Yörünge aracı, mekansal bir kullanıcı arayüzü bileşenidir. İlgili bir mekansal panele eklenecek şekilde tasarlanmıştır ve bu mekansal panelle ilgili gezinme ve bağlamsal işlem öğeleri içerir. Örneğin, video içeriği görüntülemek için bir uzamsal panel oluşturduysanız bir yörünge aracının içine video oynatma kontrolleri ekleyebilirsiniz.
Hacim: 3D modeller gibi SceneCore öğelerini kullanıcı arayüzünüze göre yerleştirin.
Üç boyutlu yerleşim:
SpatialRow
,SpatialColumn
,SpatialBox
veSpatialLayoutSpacer
simgesini kullanarak birden fazla üç boyutlu panel oluşturabilir ve bunları üç boyutlu yerleşime yerleştirebilirsiniz. Düzeninizi özelleştirmek içinSubspaceModifier
simgesini kullanın.Mekansal kullanıcı arayüzü bileşenleri: Bu öğeler 2D kullanıcı arayüzünüzde yeniden kullanılabilir ve mekansal özellikleri yalnızca mekansal özellikler etkinleştirildiğinde görünür.
SpatialDialog
: Panel, yükseltilmiş bir iletişim kutusu görüntülemek için z-derinliğinde biraz geriye itilir.SpatialPopUp
: Panel, yükseltilmiş bir pop-up görüntülemek için z-derinliğinde biraz geriye itilirSpatialElevation
:SpatialElevationLevel
, yükseklik eklemek için ayarlanabilir.
SpatialCapabilities: SpatialCapabilities, kullanıcılar uygulamanızla veya sistemle etkileşim kurarken değişebilir. Hatta uygulamanız tarafından da değiştirilebilir (ör. ana alana veya tam alana geçme). Sorun yaşanmaması için uygulamanızın, mevcut ortamda hangi API'lerin desteklendiğini belirlemek üzere
LocalSpatialCapabilities.current
değerini kontrol etmesi gerekir.isSpatialUiEnabled
: Üç boyutlu kullanıcı arayüzü öğeleri (ör. SpatialPanel)isContent3dEnabled
: 3D nesnelerisAppEnvironmentEnabled
: OrtamisPassthroughControlEnabled
: Uygulamanın geçiş durumunu kontrol edip edemeyeceğiisSpatialAudioEnabled
: Üç boyutlu ses
Bilinen Sorunlar
- Şu anda XR için Jetpack Compose'u kullanmak üzere 30'un üzerinde bir minSDK gereklidir. Geçici bir çözüm olarak, 23 minimum SDK ile derleyip çalıştırabilmek için aşağıdaki manifest girişini
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>
ekleyebilirsiniz. - Jetpack XR uygulamaları için şu anda AndroidManifest'de
android.permission.SCENE_UNDERSTANDING
izninin istenmesi gerekiyor. - Bir uygulama, manifest dosyasında
PROPERTY_XR_ACTIVITY_START_MODE
mülkünü kullanarak doğrudan Tam Alan'da başlatıldığında Etkinlikler/Uygulamalar, Tam Alan'a geçmeden önce başlangıçta Ana Alan'da açılır. - Hacim bileşenlerindeki glTF'ler başlangıçta yanlış konumda yanıp sönebilir.
- Önemli ölçüde hareket ettirilmiş bir panelde SpatialDialog kullanılması, içeriğin yanlış yöne gitmesine neden olur.