Jetpack SceneCore

3D içeriklerle Android XR sahne grafiğini oluşturun ve üzerinde değişiklik yapın.
Son Güncelleme Kararlı Sürüm Sürüm Adayı Beta sürümü Alfa Sürümü
17 Haziran 2026 - - - 1.0.0-alpha16

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-alpha16"

    // Use to write unit tests
    testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha16"
}

Kotlin

dependencies {
    implementation("androidx.xr.scenecore:scenecore:1.0.0-alpha16")

    // Use to write unit tests
    testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha16")
}

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.

Yeni sorun oluşturma

Daha fazla bilgi için Sorun İzleyici belgelerini inceleyin.

Sürüm 1.0

Sürüm 1.0.0-alpha16

17 Haziran 2026

androidx.xr.scenecore:scenecore-*:1.0.0-alpha16 iptal edilir. 1.0.0-alpha16 sürümü bu commit'leri içerir.

API Değişiklikleri

  • CustomMesh.BuilderFromMeshData ve CustomMesh.BuilderFromMeshBuffer öğelerine addVertexData, setIndexData ve addSubset için aşırı yüklemeler eklendi. Bu aşırı yüklemeler, geliştiricilerin ByteBufferRegion veya MeshSubset gibi ara nesnelere sarmalamalarına gerek kalmadan ham verileri ve parametreleri doğrudan (ör. ByteBuffer, offset, size, topology, indexOffset, indexCount) geçirmesine olanak tanır. (I84d5c)
  • Scene.requestFullSpaceMode() ve Scene.requestHomeSpaceMode(), sırasıyla requestFullSpace() ve requestHomeSpace() olarak yeniden adlandırıldı. "Ana Sayfa Alanı Modu" ve "Tam Ekran Alanı Modu"na atıfta bulunan diğer yöntemler ve belgeler de benzer şekilde güncellendi. (I45751)
  • Herkese açık test API'si PanelEntityTester ve MainPanelEntityTester (I961e4) sağlar.
  • pointSourceParams mülkünü SoundEffectPoolComponent'e ekleme (I4a750)
  • Herkese açık test API'si sağlar MovableComponentTester (I0c972)
  • Herkese açık test API'si sağlar PointerCaptureComponentTester (Ic0d4f)
  • Herkese açık test API'si sağlar ActivityPanelEntityTester (I837c4)
  • Herkese açık test API'si sağlar ResizableComponentTester (I0a3a4)
  • Herkese açık test API'si sağlar BoundsComponentTester. (Iefd53)
  • Herkese açık test API'si SpatialMediaPlayerTester (Ia3e09) sağlar.
  • Herkese açık test API'si SpatialEnvironmentTester (Icf60f) sağlar.
  • Herkese açık test API'leri GltfModelTester ve SceneCoreTestRule.getGltfModelTester sağlar. (I33fcb)
  • Herkese açık test API'si sağlar InteractableComponentTester. (Ia7096)
  • Herkese açık test API'si sağlar SurfaceEntityTester. (Ic0740)
  • Herkese açık test API'leri GltfModelEntityTester, TestGltfModelNode ve TestGltfAnimation sağlar. (I72c4d)
  • Herkese açık test API'leri SceneTester ve SceneCoreTestRule.sceneTester sağlar. (Ib4ec5)
  • Herkese açık test API'leri PerceptionSpaceTester ve SceneCoreTestRule.perceptionSpaceTester sağlar. (Icf739)
  • Herkese açık test API'si sağlar MeshEntityTester. (I63801)
  • ImageBasedLightingAssetTester ve SceneCoreTestRule.getTester aşırı yüklemeleri için herkese açık test API'si sağlar. (I57ec4)
  • Herkese açık test API'si TextureTester (Ia865b) sağlar.
  • Herkese açık test API'si sağlar PositionalAudioComponentTester (Icd96e)
  • Herkese açık test API'si SpatialSoundPoolTester (Ia3531) sağlar.
  • Herkese açık test API'si SoundEffectPoolTester (If349a) sağlar.
  • Herkese açık test API'leri ActivitySpaceTester ve SceneCoreTestRule.activitySpaceTester sağlar. (I2d5c2)
  • Herkese açık test API'si sağlar SpatialWindowTester (I41837)
  • Herkese açık test API'si AnchorEntityTester (I68404) sağlar.
  • Herkese açık test API arayüzünü SceneCoreTestRule sağlar. (Ic72d3)
  • PixelDensity sınıfı eklendi ve ActivitySpace'de doğru fiziksel boyut eşlemesi için donanıma dayalı metre başına piksel oranı sağlamak üzere Scene#virtualPixelDensity üzerinden kullanıma sunuldu. (I0e3ac)
  • Özel ağlar oluşturmak ve oluşturulan ağları işlemek için herkese açık API'ler eklendi. (I7ad2f)
  • VertexLayout API, VertexBufferLayout listesini kullanacak şekilde güncellendi. Bu listedeki her VertexBufferLayout, tek bir köşe arabelleğindeki özellikleri açıklıyor. Bu sayede, özel adımlar ve ofsetlerle serpiştirilmiş özellikler de dahil olmak üzere daha esnek köşe noktası verisi düzenlemeleri yapılabilir. (Ic426b)
  • ARCore Trackable'ı Activity Space'e göre bir duruşa dönüştürmek için MovableComponent.createTrackingMovable sağlar. (I12249)
  • Entity.create içindeki üst öğenin varsayılan değeri null olarak güncellendi. (Ic3145)
  • Entity, arayüz yerine sınıf olacak şekilde güncellendi ve artık tüm Varlık türleri için temel sınıf olarak kullanılıyor. Bu değişiklik kapsamında BaseEntity kaldırıldı. (I7fbc9)
  • GltfModel, ExrImage ve ImageBasedLightingAsset, Kotlin'in use bloğunu kullanarak deyimsel kaynak yönetimine olanak tanımak için artık AutoCloseable'ü uyguluyor. (I1ac79)
  • Mekansal ortam ışığını tanımlamak için ExrImage yerine ImageBasedLightingAsset sınıfı kullanıma sunuldu. ExrImage kullanımdan kaldırıldı ve genel API'den kaldırıldı. SpatialEnvironmentPreference, ImageBasedLightingAsset kullanacak şekilde güncellendi. (I6c92a)
  • skybox parametresinin adını, amacını daha iyi yansıtması için SpatialEnvironment içinde imageBasedLightingAsset olarak değiştirdik ve görsel gökyüzü kutusu dokularının geometri parametresine dahil edilmesi gerektiğini netleştirdik. (I24d4a)
  • Mekansal öğeler artık Mekansal API düzeyleri 1 ve 2'de pikselden metreye hesaplamalar için sabit bir cihaz yoğunluğu kullanıyor. Bu sayede, sistem ekran yoğunluğu değişikliklerinden bağımsız olarak tutarlı boyutlandırma sağlanıyor. (I37051)

Sürüm 1.0.0-alpha15

19 Mayıs 2026

androidx.xr.scenecore:scenecore-*:1.0.0-alpha15 iptal edilir. 1.0.0-alpha15 sürümü bu commit'leri içerir.

API Değişiklikleri

  • Entity.dispose() artık genel API olarak kaldırıldı. Uygulamalar, dispose() öğesini Entity örneklerinde çağırmak yerine parent öğesini null olarak ayarlayarak ve bu örneklere yönelik tüm güçlü referansları temizleyerek örnekleri temizlenebilir hale getirebilir. (I396c9)
  • SoundEffectPool adlı kullanıcının set/clearOnLoadCompleteListener yöntemleri silindi. Bunun yerine add/removeLoadCompleteListener politikasını kullanın. (Iae78d)
  • Sahnenin set/clearSpatialVisibilityChangedListener öğesi add/removeSpatialVisibilityChangedListener ile değiştirildi. (I67dff)
  • Tüm SceneCore add/removeOnFooListener yöntemlerinin adı add/removeFooListener olarak değiştirildi ve adlardan On kaldırıldı. (Ibe50b)
  • Aynı anda birden fazla işleyiciyi desteklemek için AnchorEntity.setOnOriginChangedListener ve AnchorEntity.setOnStateChangedListener yöntemleri add/removeFooListener yöntemleriyle değiştirildi. (I13749)
  • AnchorEntity.State.TIMEDOUT, State.TIMED_OUT olarak yeniden adlandırıldı. (Id2b8d)
  • Component API, güvenliği ve genişletilebilirliği artırmak için yeniden düzenlendi. Component artık soyut bir sınıf. Doğrudan aramaları önlemek için onAttach() ve onDetach() yöntemleri artık protected. Bileşen yaşam döngülerini yönetmek için lütfen Entity.addComponent() ve Entity.removeComponent() kullanın. (Id04e8)
  • SceneCore'un PlaneSemanticType PlaneOrientation sabitleri, Ints'den özel türlere taşındı. Bu sabitlerin ANY kaldırılacak. Bunun yerine, istemciler istenen tüm sabitleri açıkça numaralandırmalı veya yeni .ALL değiştirilemez sabitleri kullanmalıdır. AnchorEntity fabrika yöntemi artık tek bir değer yerine bu türlerin bir kümesini kabul ediyor. (Ib1033)
  • Deneysel Custom Mesh API'ye iskelet animasyonu (kaplama) desteği eklendi. Geliştiriciler artık MeshEntity oluştururken boneCount belirterek özel örgüleri canlandırabilir ve MeshEntity.setBoneTransforms() kullanarak animasyonu gerçek zamanlı olarak güncelleyebilir. (Id8ba2, b/496692490)
  • Deneysel CustomMesh API'si kullanıma sunuldu. Geliştiriciler artık CustomMesh, MeshBuffer ve MeshEntity kullanarak sahnelerinde programatik olarak 3D geometri oluşturup işleyebilir. (I94617)
  • androidx.xr.scenecore.SpatializerConstants.SourceType.SOURCE_TYPE_SOUND_FIELD kaldırıldı. Bunun yerine SourceType.SOUND_FIELD politikasını kullanın. (Ia68b9)
  • Üç boyutlu ses bileşenleri ekleme: PositionalAudioComponent, SoundEffectPoolComponent ve SoundFieldAudioComponent (Ieda89)
  • AnchorEntity.getAnchor, AnchorEntity.anchor ile değiştirildi ve artık AnchorEntity, ARCore Anchor'den (I5c7c8) oluşturulduğunda Anchor döndürecek.
  • ActivityPanelEntity, GltfModelEntity, GroupEntity, PanelEntity ve SurfaceEntity fabrika yöntemlerindeki parent parametresinin varsayılan değeri ActivitySpace'dan null'ye değiştirildi. Bir öğeyi sahne grafiğine eklemek ve görünür hale getirmek için geliştiricilerin artık örnek oluşturma sırasında veya Entity.parent = ... (Ie7cc1) aracılığıyla üst öğesini açıkça ayarlaması gerekir.

Hata Düzeltmeleri

  • SceneCore artık Entity örnekleri hayalet olarak erişilebilir hale geldiğinde otomatik olarak geri alır. Böylece geliştiricilerin kaynakları boşaltmak için dispose()'ı açıkça çağırmasına gerek kalmaz. Bir [Entity] örneğinin düzgün şekilde geri alınmasını sağlamak için geliştiriciler:
    • parent özelliğini null olarak ayarlayarak sahne grafiğinden ayırın.
    • Kodlarındaki örneğe yönelik tüm güçlü referansları bırakın.
    • Özel varlık türleriyle ilgili not: Üst öğe oluşturulamayan varlıklar (ör. AnchorEntity) için geliştiriciler, örnek kullanımdayken güçlü bir referans sağlamalıdır. Tüm referanslar serbest bırakılırsa bu örnekler hayalet olarak erişilebilir hale gelir ve otomatik olarak geri alınır. (I83fe4)
  • Tüm SceneCore kitaplıkları için ProGuard keep kuralları daraltıldı. (I98447)

Bilinen Sorunlar

  • Etkin olmayan bir ExoPlayer örneği içeren bir Entity'ye PositionalAudioComponent eklemek kilitlenmeye neden olur. ExoPlayer durdurulmuşken setPointSourceParams cihazını aramayın veya üç boyutlu ses bileşenlerini takıp çıkarmayın. Bu sorun, sonraki sürümde düzeltilecektir.

Sürüm 1.0.0-alpha14

6 Mayıs 2026

androidx.xr.scenecore:scenecore-*:1.0.0-alpha14 iptal edilir. 1.0.0-alpha14 sürümü bu commit'leri içerir.

API Değişiklikleri

  • TrackingState ve VpsAvailabilityResult, androidx.xr.arcore package'a taşındı. androidx.xr.runtime'daki türler artık kullanımdan kaldırıldı. (Ic7930, b/480462213)
  • Plane.Type, PlaneType olarak yeniden adlandırıldı. (I8c90c, b/482675376)
  • Plane.Label, PlaneLabel olarak yeniden adlandırıldı. (Ic6b67, b/482675376)
  • androidx.xr.runtime.FieldOfView desteği sonlandırıldı. Bunun yerine androidx.xr.runtime.math.FieldOfView politikasını kullanın. (Ia01a0, b/480233045)
  • Matrix4.pose, Matrix4.toPose() olarak yeniden adlandırıldı. Poz özelliği artık kullanımdan kaldırıldı. (I329b4, b/493383490)
  • HandJointType enum değerleri yeniden adlandırıldı. (Ifbc83, b/482670596)
  • Özel Component uygulamalarına izin vermek için Component.onAttach ve onDetach'yi herkese açık API olarak kullanıma sunun. (I0ca1f)
  • Üç boyutlu ses bileşenleri ekleme (I39ddd, b/489421980, b/436642086, b/436642499)
  • Varlığı PointSourceParams hesabından kaldırın. Bunun yerine, öğe doğrudan SpatialAudioTrack, SpatialSoundPool ve SpatialMediaPlayer ile birlikte kullanılır (Ib3685, b/489421980, b/436634048).
  • DeviceTrackingMode.LAST_KNOWN, SPATIAL_LAST_KNOWN olarak yeniden adlandırıldı (kullanımdan kaldırılmış bir geri dönüşle), 3DoF izleme için INERTIAL_LAST_KNOWN eklendi ve TRACKING_DEGRADED, TrackingState'ye eklendi. (Ie661c, b/445466590)
  • GroupEntity desteği sonlandırıldı. Yalnızca temel Entity işlevine sahip bir Entity oluşturmak için Entity.create işlevini çağırın. Bu işlev, bir Entity arayüzü döndürür. (I4c450, b/473867483)
  • XrLog API'si eklendi. JetpackXR'de günlük kaydını etkinleştirmek için XrLog.isEnabled değerini true olarak ayarlayın ve günlük düzeyini ayarlamak için XrLog.Level değerini kullanın. (I76a1f, b/463460895, b/487378441)

Hata Düzeltmeleri

  • Scene.keyEntity artık varsayılan olarak mainPanelEntity değerine ayarlanıyor. (I6a3ef)

Sürüm 1.0.0-alpha13

25 Mart 2026

androidx.xr.scenecore:scenecore-*:1.0.0-alpha13 iptal edilir. 1.0.0-alpha13 sürümü bu commit'leri içerir.

API Değişiklikleri

  • Session.create öğesinden unscaledGravityAlignedActivitySpace işareti kaldırıldı. ActivitySpace artık her zaman ölçeklendirilmemiş ve yer çekimiyle hizalanmış durumda. (If6f11, b/458173423)
  • Kullanımdan kaldırılan setMaterialOverride ve clearMaterialOverride işlevleri, artık ayrı ayrı GltfModelNode olarak adlandırılan GltfModelEntity'den kaldırıldı. (I2e5d2)
  • PanelEntity'ye transformPixelCoordinatesToLocalPosition ve transformNormalizedCoordinatesToLocalPosition eklendi. Ayrıca, Vector3 konumları yerine pozlar döndüren eşdeğer deneysel yöntemler kaldırıldı. (Ib6960, b/460123106, b/458333591)
  • GltfAnimation içindeki glTF animasyonlarını kontrol etmek için GltfAnimation API'leri eklendi.SceneCore (I2c172, b/466065486, b/465819070, b/465818617)
  • ScenePose.activitySpacePose, ScenePose.poseInActivitySpace olarak yeniden adlandırıldı (I8f175, b/427822261)
  • Scenecore Projected Runtime Implementation eklendi (I9c4ab, b/476440158)
  • Ana paneldeki öğe yeniden boyutlandırılırken ActivitySpace başlangıç noktasına yeniden konumlandırılabilir. Paneli manuel olarak veya programatik olarak orijinal konumuna geri yerleştirmek dışında bir geçici çözüm yoktur. Bu hata, gelecekteki bir sürümde düzeltilecektir. (b/489427007).
  • Bazı durumlarda, MovableComponent için sunulan özellik, SurfaceEntity ve Panel dışı diğer öğe türleri için görünmeyebilir. MovableComponent.size açıkça ayarlandığında, affordance görünür. Bu hata, gelecekteki bir sürümde düzeltilecektir (b/490983469).

Sürüm 1.0.0-alpha12

25 Şubat 2026

androidx.xr.scenecore:scenecore-*:1.0.0-alpha12 iptal edilir. 1.0.0-alpha12 sürümü bu commit'leri içerir.

Bilinen Sorunlar

  • Sabitlenmiş öğeler, birkaç saniye sonra sabitlenmiş konumlarından etkinlik alanı başlangıcına geçebilir.
  • SurfaceEntity örnekleri oluşturulurken uygulamalar kilitlenebilir. Bu sorun, androidx.xr.scenecore:scenecore-*:1.0.0-alpha13 ve sonraki sürümlerde düzeltilmiştir. Etkilenen uygulamalar en son sürümlere güncellenmelidir.

API Değişiklikleri

  • ActivitySpace.addOnSpaceUpdatedListener ve ActivitySpace.removeOnSpaceUpdatedListener, addOnOriginChangedListener ve removeOnOriginChangedListener olarak yeniden adlandırıldı. AnchorEntity.setOnSpaceUpdatedListener, setOnOriginChangedListener olarak yeniden adlandırıldı. (I5d8fb)
  • FakeEntity öğesine herkese açık ad özelliği eklendi ve FakePanelEntity üzerinde herkese açık olarak görüntüleme özelliği etkinleştirildi. (Ifa1f9)

Hata Düzeltmeleri

  • Daha yeni sistem görüntülerinde (I57d04) sabit piksel yoğunluğu hesaplamaları

Sürüm 1.0.0-alpha11

28 Ocak 2026

androidx.xr.scenecore:scenecore-*:1.0.0-alpha11 iptal edilir. 1.0.0-alpha11 sürümü bu commit'leri içerir.

API Değişiklikleri

  • PerceivedResolutionResult.InvalidCameraView, PerceivedResolutionResult.InvalidRenderViewpoint olarak yeniden adlandırıldı. getPerceivedResolution API'leri artık CameraViewScenePose yerine ARCore'un RenderViewpoint API'sini kullanıyor. Bu ad, yeni uygulamayı daha iyi yansıtmaktadır. (I8c967, b/446989745, b/419311998)
  • PanelEntity/SurfaceEntity.getPerceivedResolution yöntemleri artık geliştirici tarafından sağlanan bir RenderViewpoint değerini bağımsız değişken olarak alıyor. Daha önce, çalışma zamanı algılanan çözünürlük hesaplamasında kullanılan RenderViewpoint değerini rastgele seçiyordu. (I8c967, b/446989745, b/419311998)
  • SpatialUser, ScenePose.Head ve ScenePose.CameraView kaldırıldı. Bu API'lerin işlevselliği, Jetpack XR için ARCore'daki ArDevice ve RenderViewpoint API'leri tarafından sağlanır. Geliştiriciler, kullanıcının kafasına veya sol ya da sağ gözüne karşılık gelen bir ScenePose elde etmek için ARCore API'leri kullanılarak elde edilen uygun pozla birlikte PerceptionSpace.getScenePoseFromPerceptionPose kullanabilir. (I2f69c, b/446989745)

Sürüm 1.0.0-alpha10

3 Aralık 2025

androidx.xr.scenecore:scenecore-*:1.0.0-alpha10 iptal edilir. 1.0.0-alpha10 sürümü bu commit'leri içerir.

API Değişiklikleri

  • PanelEntity için transformPixelCoordinatesToPose ve transformNormalizedCoordinatesToPose eklendi (I462b3)
  • SceneCore içindeki mantığa dayalı olarak SceneCore Runtime'a yardımcı sınıf (Utils) eklendi (I570b9).

Hata Düzeltmeleri

  • Oturum yok edildiğinde ve SpatialModeChangeEvent alındığında meydana gelebilecek olası kilitlenme sorunu düzeltildi (If44e8).
  • Bir Etkinlikten ayrılırken veya Etkinliğe yeniden girerken IllegalStateException atılmasına neden olabilen hata düzeltildi. (Ibff1c)

Sürüm 1.0.0-alpha09

19 Kasım 2025

androidx.xr.scenecore:scenecore-*:1.0.0-alpha09 iptal edilir. 1.0.0-alpha09 sürümü bu commit'leri içerir.

Yeni Özellikler

  • Algı alanı kaynak pozunun ve algı alanı kaynağına göre bir pozun bileşimini temsil eden bir ScenePose öğesini almak için bir API ekler. (I5b50a)
  • getGravityAlignedPose işlevi eklendi. Yer çekimiyle hizalanmış poz, dönme eğimini ve yuvarlanmasını yoksayar. (I5ae21)
  • AnchorEntity.State sabit türü, Ints'den State alt türlerine değiştirildi. (Ib0c49)
  • Varlık arayüzüne getChildren() eklendi. MainPanelEntity yaşam döngüsü güncellendi. (Ia69d6)

API Değişiklikleri

  • PointerCaptureComponent.PointerCaptureState sabit türü, Ints'den PointerCaptureState alt türlerine değiştirildi. (Ic888a)
  • Scene.spatialCapabilities artık Int alanı yerine Set<SpatialCapability> türünde. SpatialCapability sabitlerinin adı değiştirildi. (I9c109)
  • SurfaceEntity sabit türleri yeniden adlandırıldı ve Ints'den SurfaceEntity alt türlerine değiştirildi. (I419ed)
  • SpatializerConstant sabit türleri yeniden adlandırıldı ve Ints'den SpatializerConstant alt türlerine değiştirildi. (Ia0e18)
  • TextureSampler sabit türleri yeniden adlandırıldı ve Ints'den TextureSampler alt türlerine değiştirildi. (I44078)
  • SpatialVisibility sabit türleri, Ints'den SpatialVisibility alt türlerine değiştirildi. (I70739)
  • ResizeEvent.ResizeState sabit türleri yeniden adlandırıldı ve Ints'den ResizeState alt türlerine değiştirildi. (I384d5)
  • InputEvent sabit türlerinin adı değiştirildi ve türleri, kapsayan türlerinden devralınacak şekilde Ints'ten değiştirildi. (I82817)
  • GltfModelEntity.AnimationState sabit türü, Ints'den AnimationState alt türlerine değiştirildi. (I24f4e)
  • AlphaMode sabit türleri yeniden adlandırıldı ve Ints'den AlphaMode alt türlerine değiştirildi. (I27b56)
  • Space sabit türü, tam sayıdan alan alt türüne değiştirildi. (I9255b)
  • ScenePose.hitTest ve ilgili yöntemler artık kesişim bulunamadığında boş hitPosition içeren bir HitTestResult yerine null döndürüyor. HitTestResult.hitPosition artık boş değer içerebilir değil. (I1400a)
  • ActivityPose referansları ScenePose olarak değiştirildi. (I7fe43)

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, transferActivity olarak yeniden adlandırıldı (I273c5, b/430332856)

Hata Düzeltmeleri

  • :xr:scenecore:scenecore-spatial-rendering ve :xr:scenecore:scenecore-spatial-core, :xr:scenecore:scenecore'nin (I6ab65, b/447000520) uygulama bağımlılığı olarak eklendi.
  • Oturum yok edildikten sonra session.scene eriş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 yayınlandı. 1.0.0-alpha07 sürümü bu commit'leri içerir.

API Değişiklikleri

  • fixedAspectRatio, isFixedAspectRatioEnabled olarak yeniden adlandırıldı ve Boole özelliği haline getirildi (I5c4e8, b/440588971)
  • Scenecore Sahteler artık xr:scenecore:scenecore-testing modülünde yer alıyor. (Idd951)
  • shouldAutoHideContent, isAutoHideContentWhileResizingEnabled, shouldAlwaysShowOverlay ve isAlwaysShowOverlayEnabled olarak yeniden adlandırıldı (I97c36, b/432335421)
  • Okunabilirlik için SceneCore TextureSampler sabitleri güncellendi. Örneğin, TextureSampler.MinFilter.LINEAR artık TextureSampler.MIN_FILTER_LINEAR (Ib159c) olarak kullanılıyor.
  • Sahnenin setKeyEntity belirleyicisi, keyEntity değişkeniyle birleştirildi. keyEntity öğesini AnchorEntity gibi taşınamayan bir öğeye ayarlamak, boole yanlış değeri döndürmek yerine IllegalArgumentException hatası verir. (I62080, b/428721695, b/422215745)
  • Sahnenin SpatialModeChangeListener değişkeni, setSpatialModeChangedListener ile değiştirildi. SpatialModeChangedListener yerine Consumer<SpatialModeChangeEvent> alır. setSpatialModeChangedListener artık isteğe bağlı olarak bir Executor alabilir. (I62080, b/428721695, b/422215745)
  • bundle parametresi ActivityPanelEntity.startActivity öğesinden kaldırıldı (I64344, b/430332856, b/430333040)
  • SpatializerConstants.SOURCE_TYPE_BYPASS, SpatializerConstants.SOURCE_TYPE_DEFAULT olarak yeniden adlandırıldı. (Ifc7fe, b/422215565)
  • SpatialSoundPool.PLAY_FAILED sabiti eklendi. (Ifc7fe, b/422215565)
  • SpatialSoundPool.play yöntemlerine varsayılan bağımsız değişkenler eklendi. (Ifc7fe, b/422215565)
  • SpatialAudioTrackBuilder içindeki ayarlayıcıların döndürülen değeri kaldırıldı. (Ifc7fe, b/422215565)
  • SurfaceEntity değişiklikleri
    • SurfaceEntity.CanvasShape, Shape olarak yeniden adlandırıldı
    • SurfaceEntity.CanvasShape.Vr180Hemisphere, Hemisphere olarak yeniden adlandırıldı
    • SurfaceEntity.CanvasShape.Vr360Sphere, Sphere olarak yeniden adlandırıldı
    • SurfaceEntity.EdgeFeatheringParams.SmoothFeather, RectangleFeather olarak yeniden adlandırıldı
    • SurfaceEntity.EdgeFeathingParams.SolidEdge, NoFeathering olarak yeniden adlandırıldı
    • SurfaceEntity.ContentSecurityLevel, SurfaceProtection olarak yeniden adlandırıldı
    • SurfaceEntity.ContentSecurityLevel.{values}, SURFACE_PROTECTION_ önekini ekledi.
    • SurfaceEntity.SuperSampling.{$values}, SUPER_SAMPLING_ önekini ekledi
    • SurfaceEntity.StereoMode.{values}, STEREO_MODE_ önekini ekledi
    • SurfaceEntity.ContentColorMetadata.maxCLL yeniden adlandırıldı maxContentLightLevel (I7eb5f, b/422216050, b/427529950)
  • launchActivity, startActivity olarak yeniden adlandırıldı (I7db90, b/430332856)
  • Scene.activitySpaceRoot kaldırıldı. Bunun yerine Scene.activitySpace politikasını kullanın. (I05ee8, b/378706624, b/422215745)
  • configureBundleForFullSpaceModeLaunch ve configureBundleForFullSpaceModeLaunchWithEnvironmentInherited sırasıyla createBundleForFullSpaceModeLaunch ve createBundleForFullSpaceModeLaunchWithEnvironmentInherited olarak 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).
  • GroupEntity fabrikası artık Entity yerine GroupEntity türünü döndürüyor. (I66042)

Hata Düzeltmeleri

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 yayınlandı. 1.0.0-alpha06 sürümü bu commit'leri içerir.

API Değişiklikleri

  • SceneCore'nın BaseEntity ve BaseScenePose API'lerinin kısıtlamasını 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 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)
  • ActivitySpace listesine recommendedContentBoxInFullSpace özelliği eklendi. Tam Ekran 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ı. Ayrıca ç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ını değiştirdik ve/veya bunları taşıdık: 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ştirilmesi amaçlanmadığı için gizli hale getirildi: activitySpace, activitySpaceRoot, mainPanelEntity, perceptionSpace, spatialCapabilities, spatialEnvironment ve spatialUser. (I2f506)
  • Varlık: get/setParent(), setContentDescription özellikleri değiştirildi. Entity.is/setHidden() özelliği kullanımdan kaldırıldı, bunun yerine Entity.is/setEnabled özelliği kullanılıyor. (Ibc4c6)
  • androidx.xr.scenecore.BasePanelEntity sınıfı kaldırıldı. Bunun yerine doğrudan PanelEntity sınıfını kullanın. PanelEntity için alıcılar ve ayarlayıcılar özelliklerle değiştirildi. PanelEntity.size özelliği, Float3dSize olan önceki değerden Float2dSize olarak değiştirildi. Desteği sonlandırılan androidx.xr.scenecore.PanelEntity.getPixelDimensions yöntemi kaldırıldı. Bunun yerine getSizeInPixels 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 ve GltfModel: için create yöntemleri askıya alma işlevleri olarak değiştirildi; oluşturma parametreleri, String yerine Uri veya Path kabul edecek şekilde değiştirildi. (Id8883) (I0d247), (I25706)
  • SpatialEnvironment.requestFullSpaceMode ve SpatialEnvironment.requestHomeSpaceMode, Sahne'ye taşındı. Örneğin, session.scene.spatialEnvironment.requestFullSpaceMode() yerine session.scene.requestFullSpaceMode() kullanın. addOnPassthroughOpacityChangedListener ve addOnSpatialEnvironmentChangedListener artık isteğe bağlı Executor'ları kabul eden geçersiz kılma işlemlerine sahip. (I12fe0) (I6b21e)
  • Aşağıdaki desteği sonlandırılan SpatialEnvironment yöntemleri kaldırıldı: togglePassthrough, setPassthrough, setPassthroughOpacity, getPassthroughMode, getPassthroughOpacity, setSkybox ve setGeometry. Ayrıca, kullanımdan kaldırılan SpatialEnvironment.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ğerleri kabul etmiyor. Bunun yerine, opaklık tercihi olmadığını belirtmek için SpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCE kullanılır. (I40107)
  • Oluşturma yönteminde windowBoundsPx parametresi pixelDimensions olarak, türü ise Rect'ten IntSize2d olarak güncellendi. (I1926e)
  • SpatialEnvironment oluşturucusu artık dahili (I75a51)
  • SpatialPointerIconNone ve SpatialPointerIconCircle sınıfları, yardımcı nesneler SpatialPointerIcon.NONE ve SpatialPointerIcon.CIRCLE ile değiştirildi (I416d2).
  • SpatialPointerComponent içindeki SpatialPointerIcon artık boş değer içermeyebilir. Sistem varsayılanı işaretçi simgesinin kullanılması gerektiğini belirtmek için null yerine SpatialPointerIcon.DEFAULT değerini kullanın. (I416d2)
  • androidx.xr.scenecore.AnchorEntity.getState(), salt okunur bir özellik ile değiştirildi. AnchorEntity.create() yöntemindeki parametrelerin adı, daha anlaşılır olması için değiştirildi. 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ı. androidx.xr.scenecore.OnStateChangedListener, AnchorEntity için Consumer<AnchorEntity.State> ile değiştirildi. (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, ekleme/kaldırma yöntemleriyle değiştirildi. (I4c956)
  • AnchorPlacement: planeTypeFilter, anchorablePlaneOrientations olarak, planeSemanticFilter ise anchorablePlaneSemanticTypes olarak yeniden adlandırıldı. AnchorEntity veya ActivitySpace işlevine MovableComponent eklenmesi "yanlış" değerini döndürür, MoveListener işlevinin adı EntityMoveListener shouldDisposeParentAnchor olarak değiştirildi, disposeParentOnReAnchor systemMovable işlevi creeateCustomMovable, createSystemMovable ve createAnchorable işlevleri lehine create işlevinden kaldırıldı (If11c4)
  • SurfaceEntity.featherRadiusX/Y kaldırılır ve EdgeFeatheringParams sınıfı kavramı eklenir. (Ic78fc)
  • PanelEntity.enablePanelDepthTest() yöntemi, panelClippingConfig özelliğiyle değiştirildi. Derinlik testini etkinleştirmek için Scene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true), devre dışı bırakmak için PanelClippingConfig(isDepthTestEnabled = false) olarak ayarlayın. (I0cbe0)
  • Scene.mainPanelEntity artık PanelEntity yerine MainPanelEntity türünde (I7125a)
  • Scene'in setFullSpaceMode yöntemi configureBundleForFullSpaceModeLaunch, setFullSpaceModeWithEnvironmentInherited yöntemi ise configureBundleForFullSpaceModeLaunchWithEnvironmentInherited 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ık Consumer<SpatialVisibility> yerine Consumer<Int> kabul ediyor (Ie7e8c)
  • PointerCaptureComponent sabiti yeniden adlandırıldı ve PointerCaptureComponent.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ından SpatialWindow nesnesine taşındı ve ilk parametre olarak Session'ı alıyor. (I7b717)
  • Entity.setHidden(), Entity.setEnabled() ile, Entity.isHidden() ise Entity.isEnabled() ile değiştirildi. setHidden(false), setEnabled(true) ve isHidden() == !isEnabled() değerine eşittir. (Icf0de)
  • Entity.contentDescription türü, String'den CharSequence olarak değiştirildi. (Ie59be)
  • Session.create ve Session.configure artık SessionCreatePermissionsNotGranted veya SessionConfigurePermissionsNotGranted döndürmek yerine yeterli izin verilmediğinde SecurityException hatası veriyor. (I7c488)
  • ResizableComponent.create artık Consumer<ResizeEvent> ResizeEventListener yerine Consumer<ResizeEvent> ResizableComponent.size, ResizableComponent.affordanceSize ResizableComponent.minimumSize yerine ResizableComponent.minimumEntitySize ResizableComponent.maximumSize, ResizableComponent.maximumEntitySize yerine ResizableComponent.autoHideContent, ResizableComponent.shouldAutoHideContent yerine ResizableComponent.forceShowResizeOverlay, ResizableComponent.shouldAlwaysShowOverlay yerine gerektiriyor (I97a2d)
  • minSDK, androidx.xr.scenecore ve androidx.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çin xr: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 şu 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 eş zamansız yöntemler, Kotlin'in askıya alma işlevleriyle değiştirildi. Kotlin'in askıya alma işlevleri yerine ListenableFuture tabanlı eş zamansız 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'daki ScenePose eşdeğeri olan eş zamansız işlevleri, GuavaGltfModel ise Guava-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'nin önlenmesi için güncellenen Jetpack XR Scenecore ProGuard 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'daki hitPosition değerinin InteractableComponent çö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)
  • SceneCore TestApp'te FOV ve HitTest 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 doğru 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 iki yeni StereoMode değeri (MULTIVIEW_LEFT_PRIMARY ve MULTIVIEW_RIGHT_PRIMARY) aracılığıyla MV-HEVC oynatmayı destekliyor.
  • PanelEntity.setSize ve PanelEntity.getSize artık üst alandaki boyutları döndürüyor.
  • Entity.setPose, Entity.getPose, Entity.setScale, Entity.getScale, Entity.setAlpha ve Entity.getAlpha artık farklı alanlara göre değerleri alma/ayarlama işlemlerine olanak tanıyan yeni bir parametre relativeTo alı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, SpatialAudioTrack öğesine 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 uygulanabilir.
  • 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ızca PanelEntity ö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 eski PanelEntity 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 kullanımdan kaldırıldı.
  • PanelEntity.setPixelDimensions ve PanelEntity.getPixelDimension kaldırıldı, yerlerine setSizeInPixels ve getSizeInPixels eklendi.
  • 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 Session sınıfı, XR Runtime'daki Session sınıfı lehine silindi.
  • StereoSurfaceEntity, SurfaceEntity olarak yeniden adlandırıldı.
  • Entity.setSize ve Entity.getSize kaldırıldı ve aynı yöntemler PanelEntity'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ık Session.configure() içinde PlaneTrackingMode yapılandırılmasını gerektiriyor.
  • SpatialUser API'leri artık Session.configure() içinde HeadTrackingMode yapılandırılmasını gerektiriyor.
  • ResizableComponent eklenmediğinde ERROR düzeyinde günlük yerine INFO 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 ayırın.
  • Yeni bir PanelEntity oluştururken çoğu görünüm FrameLayout öğesine yeniden üst öğe olarak atanır. Bu, Spatial Panels ile LayoutInspector 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 ve AnchorPlacement içeren bir PanelEntity taşındığında oluşabilecek kilitlenmeyi önlemek için düzeltme eklendi.
  • ResizableComponent öğesinin onResizeStart geri çağırmasında eski boyutlar sağlamasıyla ilgili sorun düzeltildi.
  • JxrPlatformAdapterAxr'nın dispose() 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üçültmeyi destekleyen ek düzeltmeler (I4f47e)
  • Küçültülmüş istemcilerde AbstractMethodError'nin önlenmesi için güncellenen Jetpack XR Scenecore ProGuard 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 ilgili her türdeki yardımcı yönteme taşındı:
    • Session.createActivityPanelEntity(Dimensions, String, Activity, Pose) silindi ve ActivityPanelEntity.create(Session, Dimensions, String, Pose) ile değiştirildi
    • Session.createAnchorEntity(Anchor) silindi ve AnchorEntity.create(Session, Anchor) ile değiştirildi
    • Session.createAnchorEntity(Dimensions, Int, Int, Duration) silindi ve AnchorEntity.create(Session, Dimensions, Int, Int, Duration) ile değiştirildi
    • Session.createEntity(String, Pose) silindi ve ContentlessEntity.create(Session, String, Pose) ile değiştirildi
    • Session.createExrImageResource(String) silindi ve ExrImage.create(Session, String) ile değiştirildi
    • Session.createGltfEntity(GltfModel, Pose) silindi ve GltfModelEntity.create(Session, GltfModel, Pose) ile değiştirildi
    • Session.createGltfModelResource(String) silindi ve GltfModel.create(Session, String) ile değiştirildi
    • Session.createInteractableComponent(Executor, InputEventListener) silindi ve InteractableComponent.create(Session, Executor, InputEventListener) ile değiştirildi
    • Session.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean) silindi ve MovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean) ile değiştirildi
    • Session.createPanelEntity(View, Dimensions, Dimensions, String, Pose) silindi ve PanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose) ile değiştirildi
    • Session.createResizableComponent(Dimensions, Dimensions) silindi ve ResizableComponent.create(Session, Dimensions, Dimensions) ile değiştirildi
    • Session.createStereoSurfaceEntity(Int, Dimensions, Pose) silindi ve StereoSurface.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 yerine getSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY) politikasını kullanın.
    • Session.hasSpatialCapability(Int) silindi. getSpatialCapabilities(), SpatialCapabilities nesnesi döndürdüğünden, getSpatialCapabilities().hasCapability()'nın mekansal özelliklerin varlığını kontrol etmek için daha bölümlere ayrılmış bir yol olarak kullanılması tercih edilerek bu işlevin yerini almıştır.
    • Session.requestFullSpaceMode() silindi ve SpatialEnvironment.requestFullSpaceMode() ile değiştirildi
    • Session.requestHomeSpaceMode() silindi ve SpatialEnvironment.requestHomeSpaceMode() ile değiştirildi
  • Session.setFullSpaceMode(Bundle) ve Session.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>) ve Session.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) silindi
  • Session.createPersistedAnchorEntity(UUID) silindi

Bilinen sorunlar

  • PanelEntity.setCornerRadius() ve ActivityPanelEntity.setCornerRadius(), panel bir sonraki taşınma işlemine kadar geçerli olmayabilir. Bu durum, paneli mevcut konumuna taşıyarak giderilebilir.
  • BoundsChanged, ActivitySpace üzerinde çağrıldığında bazı ActivityPose'ler doğru şekilde güncellenmemiş olabilir. ActivitySpace tarihinde yapılacak OnSpaceUpdated gö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 PanelEntity ve ActivityPanelEntity 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çin Spherical ve Hemispherical kanvaslarının oluşturulmasına olanak tanır.
  • StereoSurfaceEntity.create() artık CanvasShape parametresini kabul ediyor. (Bu parametre şu anda yoksayılmaktadır ancak gelecekteki bir sürümde kullanılacaktır)
  • StereoSurfaceEntity.create() artık Dimensions parametresini kullanmıyor. Uygulamalar, CanvasShape ayarını yaparak tuvalin boyutunu kontrol etmelidir.
  • StereoSurfaceEntity, dinamik olarak ayarlanabilen CanvasShape üyesine sahiptir.
  • StereoSurfaceEntity.dimensions artık salt okunur bir özelliktir. Uygulamalar, boyutları değiştirmek için CanvasShape değerini ayarlamalıdır.
  • StereoSurfaceEntity artık StereoMode'nin oluşturulduktan 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ık SCENE_UNDERSTANDING iznini almak için bir amaç başlatmıyor. Bunun yerine, istemci uygulaması, bağlantı oluşturmaya çalışmadan önce kullanıcının izinlerini 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 döndürmek yerine çeviri değerlerini ölçeklendirilmiş metreler olarak döndürerek ActivitySpace ölçeğini hesaba katacak şekilde düzeltildi. transformPoseTo artık kaynak veya hedefte ActivitySpace 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çin setSpatialEnvironmentPreference(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 yoğun içerik deneyimleri 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 sürükleyici ve uzamsallaştırılmış ses için 3D sahnenize ortam ve nokta ses kaynakları ekleyin.
  • StereoSurfaceEntity: SceneCore, Android Surface'te oluşturulan içeriğin sol/sağ göz yönlendirmesini destekler. Bu, stereo fotoğraflar, 3D video veya dinamik olarak oluşturulan diğer kullanıcı arayüzleri gibi stereoskopik içerikleri yan yana veya üst-alt biçimde 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 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 sağlam 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 kullanıcının sanal sahnedeki 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'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 alırsınız.
  • `SpatialEnvironment.setSpatialEnvironmentPreference()` ile gökyüzü kutusunu null olarak ayarlamak, belgelendiği gibi tamamen siyah bir gökyüzü kutusuyla sonuçlanmıyor. Bu işlem, sistemin varsayılan gökyüzü kutusunu kullanmasına veya mevcut gökyüzü kutusunda değişiklik yapılmamasına neden olabilir.
  • 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 ve com.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 çö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.