Jetpack SceneCore
| อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
|---|---|---|---|---|
| 7 ตุลาคม 2026 | - | 1.0.0-rc02 | - | - |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ใน XR SceneCore คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google
เพิ่มทรัพยากร Dependency สำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle สำหรับ
แอปหรือโมดูล
ดึงดูด
dependencies { implementation "androidx.xr.scenecore:scenecore:1.0.0-rc02" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-rc02" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.0.0-rc02") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-rc02") }
ดูข้อมูลเพิ่มเติมเกี่ยวกับทรัพยากร Dependency ได้ที่เพิ่มทรัพยากร Dependency ของบิลด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยให้ Jetpack ทำงานได้ดีขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของ Issue Tracker
รุ่น 1.0
เวอร์ชัน 1.0.0-rc02
7 ตุลาคม 2026
androidx.xr.scenecore:scenecore-*:1.0.0-rc02 เปิดตัวแล้ว เวอร์ชัน 1.0.0-rc02 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาหน่วยความจำรั่วที่อาจเกิดขึ้นโดยการนำ
perceptionRuntimeCacheในSessionExtออก และปรับโครงสร้างใหม่เพื่อดึงPerceptionRuntimeจากอินสแตนซ์Sessionโดยตรง (Ie35b1) - แก้ไขการรั่วไหลของบริบทที่อาจเกิดขึ้นโดยใช้
applicationContextสำหรับแฮนเดิลเนทีฟOpenXRเพื่อให้แน่ใจว่ารันไทม์เนทีฟจะไม่เก็บการอ้างอิงไปยังบริบทActivity(Ie35b1) - แก้ไขเงื่อนไขการแข่งขันใน
XrInstanceManagerโดยการนำการซิงโครไนซ์และการล็อกการเริ่มต้นที่เหมาะสมมาใช้ (Ie35b1) - แก้ไข
ReferenceCleanerเพื่อรองรับการยกเลิกการลงทะเบียนการดำเนินการล้างข้อมูล และตรวจสอบว่าการดำเนินการล้างข้อมูลEntityจะทำงานอย่างชัดเจนในระหว่างdispose()เพื่อป้องกันการดำเนินการซ้ำเมื่อมีการเก็บขยะ (Ie35b1) - แก้ไขปัญหาหน่วยความจำรั่วใน
SceneโดยการนำsceneCacheออกในSessionExtและปรับโครงสร้างSceneใหม่เพื่อดึงข้อมูลอินสแตนซ์จากsessionConnectorsโดยตรง (Ie35b1)
เวอร์ชัน 1.0.0-rc01
9 กันยายน 2569
androidx.xr.scenecore:scenecore-*:1.0.0-rc01 เปิดตัวแล้ว เวอร์ชัน 1.0.0-rc01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มคลัง
xr:scenecore:scenecore-openxrแล้ว (Ic49f2) - นำ API ที่เลิกใช้งานแล้วหลายรายการออกก่อนการเปิดตัวเวอร์ชันเสถียร 1.0.0
การแก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องหน่วยความจำรั่วไหลที่ระบบอาจเก็บการอ้างอิงกิจกรรมไว้เมื่อมีการทำลายกิจกรรม (I6dcd7)
การเปลี่ยนแปลงพฤติกรรม
- นำเอาต์พุต Logcat ออกจาก SceneCore (I10c3c)
เวอร์ชัน 1.0.0-beta02
12 สิงหาคม 2569
androidx.xr.scenecore:scenecore-*:1.0.0-beta02 เปิดตัวแล้ว เวอร์ชัน 1.0.0-beta02 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
toMoveEvent()จะแสดงnullหากมีการล้างข้อมูลขยะของเอนทิตีหลัก (Ia7a1b)
เวอร์ชัน 1.0.0-beta01
15 กรกฎาคม 2026
androidx.xr.scenecore:scenecore-*:1.0.0-beta01 เปิดตัวแล้ว เวอร์ชัน 1.0.0-beta01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
GltfAnimationและSpatialGltfModelAnimationAPI ได้รับการทำเครื่องหมายว่าอยู่ในขั้นทดลอง มีการเปลี่ยนพร็อพเพอร์ตี้บางรายการเป็นตัวรับ (I8d689, b/524771027)- นำเมธอดจากโรงงาน
MovableComponent.createTrackingMovableสาธารณะออก (I00912, b/477169015) - เปลี่ยน Session.create เป็นฟังก์ชันระงับ (I5d27f)
- ตอนนี้
ActivitySpaceและAnchorSpaceได้ขยายSpaceEntityคลาสทั่วไปซึ่งมีลักษณะการทำงานทั่วไปสำหรับเอนทิตีที่ระบบควบคุมตำแหน่ง (I506ec, b/513619219) - อัปเดต
AnchorEntityเป็นAnchorSpace(Ifa95e, b/513619219) - มี API ทดสอบแบบสาธารณะ
SoundEffectPoolComponentTester(I87df7, b/498104417) - เพิ่มพารามิเตอร์
cornerRadiusที่ไม่บังคับลงในตัวสร้างSurfaceEntity.Shape.Quadและทำให้พร็อพเพอร์ตี้cornerRadiusเป็นแบบสาธารณะ ตอนนี้ นักพัฒนาแอปสามารถระบุรัศมีมุมเมื่อสร้างรูปร่างสี่เหลี่ยมเพื่อแสดงผลSurfaceEntityCanvas ที่มีมุมโค้งมน และค้นหารัศมีของสี่เหลี่ยมที่มีอยู่ได้แล้ว (Ia7809, b/474681085) - มี API ทดสอบสาธารณะ
SpatialAudioTrackBuilderTester,SpatialAudioTrackTesterและSceneCoreTestRule.getTesterโอเวอร์โหลด (I378c6, b/496333938) - เพิ่มการลบล้างเฉพาะของ
toString()สำหรับประเภท ARCore จำนวนหนึ่ง ประเภทเหล่านี้มีไว้เพื่อให้ข้อมูลเพิ่มเติมแก่นักพัฒนาแอปเพื่อวัตถุประสงค์ในการแก้ไขข้อบกพร่อง และไม่ได้มีไว้เพื่อใช้ในแอปพลิเคชันที่ใช้งานจริงหรือแอปพลิเคชันที่เผยแพร่
เวอร์ชัน 1.0.0-alpha16
17 มิถุนายน 2026
androidx.xr.scenecore:scenecore-*:1.0.0-alpha16 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha16 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการโอเวอร์โหลดสำหรับ
addVertexData,setIndexDataและaddSubsetไปยังCustomMesh.BuilderFromMeshDataและCustomMesh.BuilderFromMeshBufferการโอเวอร์โหลดเหล่านี้ช่วยให้นักพัฒนาซอฟต์แวร์ส่งข้อมูลดิบและพารามิเตอร์ได้โดยตรง (เช่นByteBuffer,offset,size,topology,indexOffset,indexCount) โดยไม่ต้องห่อไว้ในออบเจ็กต์ตัวกลาง เช่นByteBufferRegionหรือMeshSubset(I84d5c) Scene.requestFullSpaceMode()และScene.requestHomeSpaceMode()เปลี่ยนชื่อเป็นrequestFullSpace()และrequestHomeSpace()ตามลำดับ นอกจากนี้ เรายังได้อัปเดตวิธีการและเอกสารอื่นๆ ที่อ้างอิงถึง "โหมด Home Space" และ "โหมด Full Space" ในลักษณะเดียวกันด้วย (I45751)- จัดเตรียม API ทดสอบสาธารณะ
PanelEntityTesterและMainPanelEntityTester(I961e4) - การเพิ่มพร็อพเพอร์ตี้
pointSourceParamsลงในSoundEffectPoolComponent(I4a750) - จัดเตรียม API สำหรับการทดสอบสาธารณะ
MovableComponentTester(I0c972) - จัดเตรียม API ทดสอบสาธารณะ
PointerCaptureComponentTester(Ic0d4f) - จัดเตรียม API ทดสอบสาธารณะ
ActivityPanelEntityTester(I837c4) - มี API ทดสอบสาธารณะ
ResizableComponentTester(I0a3a4) - จัดเตรียม API สำหรับการทดสอบสาธารณะ
BoundsComponentTester.(Iefd53) - จัดเตรียม API สำหรับการทดสอบสาธารณะ
SpatialMediaPlayerTester(Ia3e09) - จัดเตรียม API สำหรับการทดสอบสาธารณะ
SpatialEnvironmentTester(Icf60f) - มี API ทดสอบสาธารณะ
GltfModelTesterและSceneCoreTestRule.getGltfModelTester(I33fcb) - มี API ทดสอบแบบสาธารณะ
InteractableComponentTester(Ia7096) - มี API ทดสอบแบบสาธารณะ
SurfaceEntityTester(Ic0740) - มี API ทดสอบสาธารณะ
GltfModelEntityTester,TestGltfModelNodeและTestGltfAnimation(I72c4d) - มี API ทดสอบสาธารณะ
SceneTesterและSceneCoreTestRule.sceneTester(Ib4ec5) - มี API ทดสอบสาธารณะ
PerceptionSpaceTesterและSceneCoreTestRule.perceptionSpaceTester(Icf739) - มี API ทดสอบแบบสาธารณะ
MeshEntityTester(I63801) - มี API ทดสอบสาธารณะ
ImageBasedLightingAssetTesterและSceneCoreTestRule.getTesterที่โอเวอร์โหลด (I57ec4) - จัดเตรียม API ทดสอบสาธารณะ
TextureTester(Ia865b) - มี API ทดสอบสาธารณะ
PositionalAudioComponentTester(Icd96e) - จัดเตรียม API สำหรับการทดสอบสาธารณะ
SpatialSoundPoolTester(Ia3531) - มี API ทดสอบแบบสาธารณะ
SoundEffectPoolTester(If349a) - มี API ทดสอบสาธารณะ
ActivitySpaceTesterและSceneCoreTestRule.activitySpaceTester(I2d5c2) - จัดเตรียม API สำหรับการทดสอบสาธารณะ
SpatialWindowTester(I41837) - จัดเตรียม API สำหรับการทดสอบแบบสาธารณะ
AnchorEntityTester(I68404) - มีอินเทอร์เฟซ API สำหรับการทดสอบแบบสาธารณะ
SceneCoreTestRule(Ic72d3) - เพิ่มคลาส
PixelDensityและแสดงผ่านScene#virtualPixelDensityเพื่อให้สัดส่วนพิกเซลต่อเมตรตามฮาร์ดแวร์สำหรับการแมปขนาดทางกายภาพที่แม่นยำในActivitySpace(I0e3ac) - เพิ่ม API สาธารณะสำหรับการสร้างและแสดงผลตาข่ายที่กำหนดเอง (I7ad2f)
- เราได้อัปเดต
VertexLayoutAPI ให้ใช้รายการVertexBufferLayoutโดยที่แต่ละVertexBufferLayoutจะอธิบายแอตทริบิวต์ภายใน Vertex Buffer เดียว ซึ่งช่วยให้การจัดเรียงข้อมูลจุดยอดมีความยืดหยุ่นมากขึ้น รวมถึงแอตทริบิวต์ที่สลับกันด้วยระยะก้าวกระโดดและออฟเซ็ตที่กำหนดเอง (Ic426b) - ระบุ
MovableComponent.createTrackingMovableเพื่อเปลี่ยน ARCore Trackable เป็นท่าทางที่สัมพันธ์กับ Activity Space (I12249) - ค่าเริ่มต้นสำหรับผู้ปกครองใน
Entity.createได้รับการอัปเดตเป็นค่า Null แล้ว (Ic3145) Entityได้รับการอัปเดตให้เป็นคลาสแทนที่จะเป็นอินเทอร์เฟซ และตอนนี้เป็นคลาสพื้นฐานสำหรับประเภทเอนทิตีทั้งหมดแล้ว เราได้นำBaseEntityออกจากการเปลี่ยนแปลงนี้ (I7fbc9)- ตอนนี้
GltfModel,ExrImageและImageBasedLightingAssetใช้AutoCloseableเพื่อให้จัดการทรัพยากรได้อย่างเหมาะสมโดยใช้บล็อกuseของ Kotlin (I1ac79) - เปิดตัวคลาส
ImageBasedLightingAssetเพื่อแทนที่ExrImageสำหรับการกำหนดแสงสภาพแวดล้อมเชิงพื้นที่ExrImageเลิกใช้งานแล้วและถูกนำออกจาก API สาธารณะ อัปเดตSpatialEnvironmentPreferenceให้ใช้ImageBasedLightingAssetแล้ว (I6c92a) - เปลี่ยนชื่อพารามิเตอร์
skyboxในSpatialEnvironmentเป็นimageBasedLightingAssetเพื่อให้สะท้อนวัตถุประสงค์ได้ดียิ่งขึ้น และชี้แจงว่าควรใส่พื้นผิวสกายบ็อกซ์ภาพไว้ในพารามิเตอร์เรขาคณิต (I24d4a) - ตอนนี้เอนทิตีเชิงพื้นที่ใช้ความหนาแน่นของอุปกรณ์ที่เสถียรสำหรับการคำนวณจากพิกเซลเป็นเมตรใน Spatial API ระดับ 1 และ 2 เพื่อให้มั่นใจว่าการปรับขนาดจะสอดคล้องกันโดยไม่คำนึงถึงการเปลี่ยนแปลงความหนาแน่นในการแสดงผลของระบบ (I37051)
เวอร์ชัน 1.0.0-alpha15
19 พฤษภาคม 2026
androidx.xr.scenecore:scenecore-*:1.0.0-alpha15 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha15 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้เราได้นำ
Entity.dispose()ออกจาก API สาธารณะแล้ว แทนที่จะเรียกใช้dispose()ในอินสแตนซ์ของเอนทิตี แอปสามารถทำให้อินสแตนซ์ล้างได้โดยตั้งค่าparentเป็นnullและล้างการอ้างอิงที่รัดกุมไปยังอินสแตนซ์เหล่านั้น (I396c9) - ระบบได้ลบวิธีการ
set/clearOnLoadCompleteListenerของSoundEffectPoolแล้ว โปรดใช้add/removeLoadCompleteListenerแทน (Iae78d) set/clearSpatialVisibilityChangedListenerของฉากถูกแทนที่ด้วยadd/removeSpatialVisibilityChangedListener(I67dff)- เราได้เปลี่ยนชื่อวิธีการ SceneCore
add/removeOnFooListenerทั้งหมดเป็นadd/removeFooListenerโดยนำOnออกจากชื่อ (Ibe50b) - เราได้แทนที่เมธอด
AnchorEntity.setOnOriginChangedListenerและAnchorEntity.setOnStateChangedListenerด้วยเมธอดadd/removeFooListenerเพื่อรองรับผู้ฟังหลายคนพร้อมกัน (I13749) - เปลี่ยนชื่อ
AnchorEntity.State.TIMEDOUTเป็นState.TIMED_OUTแล้ว (Id2b8d) - เราได้ปรับโครงสร้าง Component API ใหม่เพื่อเพิ่มความปลอดภัยและความสามารถในการขยาย ตอนนี้
Componentเป็นคลาสแบบนามธรรมแล้ว ตอนนี้เราได้protectedวิธีการonAttach()และonDetach()เพื่อป้องกันการโทรโดยตรง โปรดใช้Entity.addComponent()และEntity.removeComponent()เพื่อจัดการวงจรของคอมโพเนนต์ (Id04e8) - ระบบได้ย้ายข้อมูลค่าคงที่
PlaneSemanticTypePlaneOrientationของ SceneCore จาก Ints ไปยังประเภทที่กำหนดเองแล้ว ระบบจะนำค่าคงที่ANYออก ลูกค้าควรระบุค่าคงที่ที่ต้องการทั้งหมดอย่างชัดเจนแทน หรือใช้ค่าคงที่.ALLSet ใหม่ที่ไม่เปลี่ยนแปลง ตอนนี้เมธอดAnchorEntityของ Factory ยอมรับชุดประเภทเหล่านี้แทนค่าเดียวแล้ว (Ib1033) - เพิ่มการรองรับภาพเคลื่อนไหวโครงกระดูก (การปรับสกิน) ลงใน Custom Mesh API เวอร์ชันทดลอง ตอนนี้ นักพัฒนาแอปสามารถเคลื่อนไหวตาข่ายที่กำหนดเองได้โดยการระบุ
boneCountเมื่อสร้างMeshEntityและอัปเดตภาพเคลื่อนไหวแบบเรียลไทม์โดยใช้MeshEntity.setBoneTransforms()(Id8ba2, b/496692490) - เปิดตัว
CustomMeshAPI เวอร์ชันทดลอง ตอนนี้ นักพัฒนาแอปสามารถสร้างและแสดงผลเรขาคณิต 3 มิติในฉากของตนเองโดยใช้CustomMesh,MeshBufferและMeshEntityได้แล้ว (I94617) - นำ
androidx.xr.scenecore.SpatializerConstants.SourceType.SOURCE_TYPE_SOUND_FIELDออกแล้ว โปรดใช้SourceType.SOUND_FIELDแทน (Ia68b9) - เพิ่มคอมโพเนนต์เสียงรอบทิศทาง:
PositionalAudioComponent,SoundEffectPoolComponentและSoundFieldAudioComponent(Ieda89) AnchorEntity.getAnchorถูกแทนที่ด้วยAnchorEntity.anchorและตอนนี้จะแสดงAnchorเมื่อสร้างAnchorEntityจากAnchorของ ARCore (I5c7c8)- ค่าเริ่มต้นสำหรับพารามิเตอร์
parentในเมธอด FactoryActivityPanelEntity,GltfModelEntity,GroupEntity,PanelEntityและSurfaceEntityเปลี่ยนจากActivitySpaceเป็นnullหากต้องการแนบเอนทิตีกับกราฟฉากและแสดงผลให้มองเห็นได้ ตอนนี้นักพัฒนาแอปต้องตั้งค่าองค์ประกอบหลักอย่างชัดเจนในระหว่างการสร้างอินสแตนซ์หรือผ่านEntity.parent = ...(Ie7cc1)
การแก้ไขข้อบกพร่อง
SceneCoreจะเรียกคืนอินสแตนซ์Entityโดยอัตโนมัติเมื่ออินสแตนซ์ดังกล่าวกลายเป็นอินสแตนซ์ที่เข้าถึงได้แบบแฟนทอม ซึ่งช่วยให้นักพัฒนาแอปไม่ต้องเรียกใช้dispose()อย่างชัดเจนเพื่อปล่อยทรัพยากร นักพัฒนาแอปควรทำดังนี้เพื่อให้มั่นใจว่าระบบจะอ้างสิทธิ์อินสแตนซ์ [เอนทิตี] อย่างถูกต้อง- ถอดออกจากกราฟฉากโดยตั้งค่า
parentเป็นnull - เลิกใช้การอ้างอิงที่ชัดเจนทั้งหมดไปยังอินสแตนซ์ในโค้ด
- หมายเหตุเกี่ยวกับประเภทเอนทิตีพิเศษ: สำหรับเอนทิตีที่กำหนดให้เป็นเอนทิตีหลักไม่ได้ (เช่น
AnchorEntity) นักพัฒนาแอปต้องรักษาการอ้างอิงที่ชัดเจนขณะที่ใช้อินสแตนซ์ หากมีการเผยแพร่ข้อมูลอ้างอิงทั้งหมด อินสแตนซ์เหล่านี้จะกลายเป็นอินสแตนซ์ที่เข้าถึงได้แบบแฟนทอมและจะได้รับการอ้างสิทธิ์โดยอัตโนมัติ (I83fe4)
- ถอดออกจากกราฟฉากโดยตั้งค่า
- กฎการเก็บ Proguard ที่แคบลงสำหรับไลบรารี
SceneCoreทั้งหมด (I98447)
ปัญหาที่ทราบ
- การแนบ
PositionalAudioComponentกับEntityที่มีอินสแตนซ์ExoPlayerที่ไม่ได้ใช้งานจะทําให้เกิดข้อขัดข้อง อย่าโทรหาsetPointSourceParamsหรือแนบ/ถอดคอมโพเนนต์เสียงรอบทิศทางขณะที่ ExoPlayer หยุดทำงาน ปัญหานี้จะได้รับการแก้ไขในรุ่นถัดไป
เวอร์ชัน 1.0.0-alpha14
6 พฤษภาคม 2026
androidx.xr.scenecore:scenecore-*:1.0.0-alpha14 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha14 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
TrackingStateและVpsAvailabilityResultได้ย้ายไปที่androidx.xr.arcore packageแล้ว และตอนนี้ประเภทในandroidx.xr.runtimeเลิกใช้งานแล้ว (Ic7930, b/480462213)- เปลี่ยนชื่อ
Plane.Typeเป็นPlaneTypeแล้ว (I8c90c, b/482675376) - เปลี่ยนชื่อ
Plane.Labelเป็นPlaneLabelแล้ว (Ic6b67, b/482675376) androidx.xr.runtime.FieldOfViewเลิกใช้งานแล้ว โปรดใช้androidx.xr.runtime.math.FieldOfViewแทน (Ia01a0, b/480233045)Matrix4.poseเปลี่ยนชื่อเป็นMatrix4.toPose()แล้ว ตอนนี้เราเลิกใช้งานพร็อพเพอร์ตี้ท่าทางแล้ว (I329b4, b/493383490)- เปลี่ยนชื่อค่า enum
HandJointType(Ifbc83, b/482670596) - เปิดเผย
Component.onAttachและonDetachเป็น API สาธารณะเพื่อให้ใช้งานComponentที่กำหนดเองได้ (I0ca1f) - การเพิ่มคอมโพเนนต์เสียงรอบทิศทาง (I39ddd, b/489421980, b/436642086, b/436642499)
- นำเอนทิตีออกจาก
PointSourceParamsแต่จะใช้เอนทิตีโดยตรงกับSpatialAudioTrack,SpatialSoundPoolและSpatialMediaPlayer(Ib3685, b/489421980, b/436634048) แทน - เปลี่ยนชื่อ
DeviceTrackingMode.LAST_KNOWNเป็นSPATIAL_LAST_KNOWN(พร้อมการสำรองข้อมูลที่เลิกใช้งานแล้ว) เพิ่มINERTIAL_LAST_KNOWNสำหรับการติดตาม 3DoF และเพิ่มTRACKING_DEGRADEDลงในTrackingState(Ie661c, b/445466590) - เลิกใช้งานแล้ว
GroupEntityหากต้องการมีเอนทิตีที่มีเฉพาะฟังก์ชันการทำงานของเอนทิตีฐาน ให้เรียกใช้Entity.createซึ่งจะแสดงผลอินเทอร์เฟซเอนทิตี (I4c450, b/473867483) - เพิ่ม API ของ
XrLogตั้งค่าXrLog.isEnabledเป็นtrueเพื่อเปิดใช้การบันทึกใน JetpackXR และใช้XrLog.Levelเพื่อตั้งค่าระดับบันทึก (I76a1f, b/463460895, b/487378441)
การแก้ไขข้อบกพร่อง
Scene.keyEntityจะมีค่าเริ่มต้นเป็นmainPanelEntity(I6a3ef)
เวอร์ชัน 1.0.0-alpha13
25 มีนาคม 2026
androidx.xr.scenecore:scenecore-*:1.0.0-alpha13 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha13 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำธง
unscaledGravityAlignedActivitySpaceออกจากSession.createแล้ว ตอนนี้ActivitySpaceจะไม่ปรับขนาดและจัดแนวตามแรงโน้มถ่วงเสมอ (If6f11, b/458173423) - นำฟังก์ชัน
setMaterialOverrideและclearMaterialOverrideที่เลิกใช้งานแล้วออกจากGltfModelEntityซึ่งตอนนี้จะเรียกใช้ในGltfModelNodeแต่ละรายการ (I2e5d2) - เพิ่ม
transformPixelCoordinatesToLocalPositionและtransformNormalizedCoordinatesToLocalPositionลงในPanelEntityและนำวิธีการทดลองที่เทียบเท่าซึ่งเคยส่งคืนท่าทางแทนตำแหน่งVector3ออก (Ib6960, b/460123106, b/458333591) - เพิ่ม
GltfAnimationAPI สำหรับควบคุมภาพเคลื่อนไหว glTF ในSceneCore(I2c172, b/466065486, b/465819070, b/465818617) - เปลี่ยนชื่อ
ScenePose.activitySpacePoseเป็นScenePose.poseInActivitySpace(I8f175, b/427822261) - เพิ่มการใช้งานระยะเวลาการทำงานที่คาดการณ์ของ Scenecore (I9c4ab, b/476440158)
- เมื่อปรับขนาดเอนทิตีในแผงหลัก ระบบอาจเปลี่ยนตำแหน่งของเอนทิตีไปยังต้นทาง
ActivitySpaceไม่มีวิธีแก้ปัญหาอื่นนอกจากการย้ายแผงกลับไปยังตำแหน่งเดิมด้วยตนเองหรือโดยใช้โปรแกรม ข้อบกพร่องนี้จะได้รับการแก้ไขในรุ่นถัดไป (b/489427007) - ในบางกรณี ความสามารถในการ
MovableComponentอาจไม่ปรากฏสำหรับSurfaceEntityและเอนทิตีประเภทอื่นๆ ที่ไม่ใช่แผง การตั้งค่าMovableComponent.sizeอย่างชัดเจนจะทําให้ความสามารถในการโต้ตอบปรากฏขึ้น ข้อบกพร่องนี้จะได้รับการแก้ไขในรุ่นต่อๆ ไป (b/490983469)
เวอร์ชัน 1.0.0-alpha12
25 กุมภาพันธ์ 2026
androidx.xr.scenecore:scenecore-*:1.0.0-alpha12 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha12 มีการคอมมิตเหล่านี้
ปัญหาที่ทราบ
- เอนทิตีที่ยึดอาจดีดตัวจากตำแหน่งที่ยึดไปยังต้นทางของพื้นที่กิจกรรมหลังจากผ่านไปหลายวินาที
- แอปอาจขัดข้องเมื่อสร้างอินสแตนซ์
SurfaceEntityปัญหานี้ได้รับการแก้ไขแล้วในandroidx.xr.scenecore:scenecore-*:1.0.0-alpha13และรุ่นต่อๆ ไป แอปที่ได้รับผลกระทบควรได้รับการอัปเดตเป็นเวอร์ชันล่าสุด
การเปลี่ยนแปลง API
ActivitySpace.addOnSpaceUpdatedListenerและActivitySpace.removeOnSpaceUpdatedListenerเปลี่ยนชื่อเป็นaddOnOriginChangedListenerและremoveOnOriginChangedListenerแล้วAnchorEntity.setOnSpaceUpdatedListenerเปลี่ยนชื่อเป็นsetOnOriginChangedListenerแล้ว (I5d8fb)- เพิ่มพร็อพเพอร์ตี้ชื่อสาธารณะใน
FakeEntityและทําให้มุมมองเป็นแบบสาธารณะในFakePanelEntity(Ifa1f9)
การแก้ไขข้อบกพร่อง
- แก้ไขการคำนวณความหนาแน่นพิกเซลในอิมเมจระบบเวอร์ชันใหม่ (I57d04)
เวอร์ชัน 1.0.0-alpha11
28 มกราคม 2026
androidx.xr.scenecore:scenecore-*:1.0.0-alpha11 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha11 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ
PerceivedResolutionResult.InvalidCameraViewเป็นPerceivedResolutionResult.InvalidRenderViewpointเนื่องจากตอนนี้getPerceivedResolutionAPI ใช้RenderViewpointAPI ของ ARCore แทนCameraViewScenePoseชื่อนี้สะท้อนถึงการติดตั้งใช้งานใหม่ได้ดียิ่งขึ้น (I8c967, b/446989745, b/419311998) - ตอนนี้เมธอด
PanelEntity/SurfaceEntity.getPerceivedResolutionจะใช้RenderViewpointที่นักพัฒนาแอปให้ไว้เป็นอาร์กิวเมนต์ ก่อนหน้านี้ รันไทม์จะเลือกRenderViewpointที่ใช้ในการคำนวณความละเอียดที่รับรู้โดยพลการ (I8c967, b/446989745, b/419311998) - นำ
SpatialUser,ScenePose.HeadและScenePose.CameraViewออกแล้ว ฟังก์ชันการทำงานของ API เหล่านี้ครอบคลุมโดย APIArDeviceและRenderViewpointภายใน ARCore สำหรับ Jetpack XR หากต้องการรับScenePoseที่สอดคล้องกับศีรษะหรือตาซ้ายหรือตาขวาของผู้ใช้ นักพัฒนาแอปสามารถใช้PerceptionSpace.getScenePoseFromPerceptionPoseกับท่าทางที่เหมาะสมซึ่งได้จาก ARCore API (I2f69c, b/446989745)
เวอร์ชัน 1.0.0-alpha10
3 ธันวาคม 2025
androidx.xr.scenecore:scenecore-*:1.0.0-alpha10 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha10 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
transformPixelCoordinatesToPoseและtransformNormalizedCoordinatesToPoseไปยังPanelEntity(I462b3) - เพิ่มคลาสตัวช่วย Utils ไปยัง
SceneCoreRuntime ตามตรรกะในSceneCore(I570b9)
การแก้ไขข้อบกพร่อง
- แก้ไขการทำงานล้มเหลวที่อาจเกิดขึ้นเมื่อทำลายเซสชันและได้รับ
SpatialModeChangeEvent(If44e8) - แก้ไขข้อบกพร่องที่อาจทำให้เกิด
IllegalStateExceptionเมื่อออกจากหรือกลับเข้าไปในกิจกรรม (Ibff1c)
เวอร์ชัน 1.0.0-alpha09
19 พฤศจิกายน 2025
androidx.xr.scenecore:scenecore-*:1.0.0-alpha09 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha09 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่ม API สำหรับดึงข้อมูล
ScenePoseที่แสดงถึงองค์ประกอบของท่าทางต้นทางของพื้นที่การรับรู้และท่าทางที่เกี่ยวข้อง กับต้นทางของพื้นที่การรับรู้ (I5b50a) - เพิ่มฟังก์ชัน
getGravityAlignedPoseแล้ว ท่าทางที่ปรับแนวแรงโน้มถ่วงจะไม่สนใจการหมุน Pitch และ Roll (I5ae21) - เปลี่ยนประเภทค่าคงที่
AnchorEntity.Stateจาก Ints เป็นประเภทย่อยของ State (Ib0c49) - เพิ่ม
getChildren()ลงในอินเทอร์เฟซเอนทิตี อัปเดตวงจรลูกค้าMainPanelEntity(Ia69d6)
การเปลี่ยนแปลง API
- เปลี่ยนประเภทค่าคงที่
PointerCaptureComponent.PointerCaptureStateจาก Ints เป็นประเภทย่อยPointerCaptureState(Ic888a) - ตอนนี้
Scene.spatialCapabilitiesมีประเภทเป็นSet<SpatialCapability>แทนที่จะเป็นฟิลด์ Int เปลี่ยนชื่อค่าคงที่SpatialCapabilityแล้ว (I9c109) SurfaceEntityประเภทค่าคงที่ได้รับการเปลี่ยนชื่อและเปลี่ยนจาก Ints เป็นประเภทย่อยSurfaceEntity(I419ed)SpatializerConstantประเภทค่าคงที่ได้รับการเปลี่ยนชื่อและเปลี่ยนจาก Ints เป็นประเภทย่อยSpatializerConstant(Ia0e18)TextureSamplerประเภทค่าคงที่ได้รับการเปลี่ยนชื่อและเปลี่ยนจาก Ints เป็นประเภทย่อยTextureSampler(I44078)- เปลี่ยนประเภทค่าคงที่
SpatialVisibilityจาก Ints เป็นประเภทย่อยSpatialVisibility(I70739) ResizeEvent.ResizeStateประเภทค่าคงที่ได้รับการเปลี่ยนชื่อและเปลี่ยนจาก Ints เป็นประเภทย่อยResizeState(I384d5)InputEventมีการเปลี่ยนชื่อประเภทค่าคงที่และเปลี่ยนจาก Ints เป็นการรับค่าจากประเภทที่ครอบคลุมที่เกี่ยวข้อง (I82817)- เปลี่ยนประเภทค่าคงที่
GltfModelEntity.AnimationStateจาก Ints เป็นประเภทย่อยAnimationState(I24f4e) AlphaModeประเภทค่าคงที่ได้รับการเปลี่ยนชื่อและเปลี่ยนจาก Ints เป็นประเภทย่อยAlphaMode(I27b56)Spaceประเภทค่าคงที่เปลี่ยนจาก Ints เป็นประเภทย่อยของ Space แล้ว (I9255b)ScenePose.hitTestและเมธอดที่เกี่ยวข้องจะแสดงผลnullหากไม่พบการตัดกัน แทนที่จะแสดงผลHitTestResultที่มีhitPositionเป็น nullHitTestResult.hitPositionไม่สามารถเป็นค่าว่างได้อีกต่อไป (I1400a)- เปลี่ยนการอ้างอิงของ
ActivityPoseเป็นScenePose(I7fe43)
เวอร์ชัน 1.0.0-alpha08
22 ตุลาคม 2025
androidx.xr.scenecore:scenecore-*:1.0.0-alpha08 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha08 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ
ActivityPanelEntity.moveActivityเป็นtransferActivity(I273c5, b/430332856) แล้ว
การแก้ไขข้อบกพร่อง
- เพิ่ม
:xr:scenecore:scenecore-spatial-renderingและ:xr:scenecore:scenecore-spatial-coreเป็นการขึ้นต่อกันในการติดตั้งใช้งานของ:xr:scenecore:scenecore(I6ab65, b/447000520) - ระบบจะแสดงข้อยกเว้นหากมีการเข้าถึง
session.sceneหลังจากทำลายเซสชัน (I77e6f)
เวอร์ชัน 1.0.0-alpha07
24 กันยายน 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha07, androidx.xr.scenecore:scenecore-guava:1.0.0-alpha07 และ androidx.xr.scenecore:scenecore-testing:1.0.0-alpha07 เวอร์ชัน 1.0.0-alpha07 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ
fixedAspectRatioเป็นisFixedAspectRatioEnabledและทำให้เป็นพร็อพเพอร์ตี้บูลีน (I5c4e8, b/440588971) Scenecoreตอนนี้อยู่ในโมดูลxr:scenecore:scenecore-testingแล้ว (Idd951)- เปลี่ยนชื่อ
shouldAutoHideContentเป็นisAutoHideContentWhileResizingEnabledและshouldAlwaysShowOverlayเป็นisAlwaysShowOverlayEnabled(I97c36, b/432335421) - อัปเดตค่าคงที่
SceneCoreTextureSamplerเพื่อให้อ่านง่ายขึ้น เช่น ตอนนี้TextureSampler.MinFilter.LINEARคือTextureSampler.MIN_FILTER_LINEAR(Ib159c) - ระบบได้ผสานรวมตัวตั้งค่า
setKeyEntityของฉากเข้ากับตัวแปรkeyEntityแล้ว การตั้งค่าkeyEntityเป็นเอนทิตีที่ย้ายไม่ได้ เช่นAnchorEntityจะทำให้เกิดIllegalArgumentExceptionแทนที่จะส่งคืนค่าบูลีนเป็นเท็จ (I62080, b/428721695, b/422215745) - ตัวแปร
SpatialModeChangeListenerของฉากถูกแทนที่ด้วยsetSpatialModeChangedListenerโดยจะรับConsumer<SpatialModeChangeEvent>แทนSpatialModeChangedListenerตอนนี้setSpatialModeChangedListenerสามารถรับ Executor ได้แล้ว (ไม่บังคับ) (I62080, b/428721695, b/422215745) - นำพารามิเตอร์
bundleออกจากActivityPanelEntity.startActivity(I64344, b/430332856, b/430333040) - เปลี่ยนชื่อ
SpatializerConstants.SOURCE_TYPE_BYPASSเป็นSpatializerConstants.SOURCE_TYPE_DEFAULTแล้ว (Ifc7fe, b/422215565) - เพิ่มค่าคงที่
SpatialSoundPool.PLAY_FAILED(Ifc7fe, b/422215565) - เพิ่มอาร์กิวเมนต์เริ่มต้นให้กับเมธอด
SpatialSoundPool.play(Ifc7fe, b/422215565) - นำค่าที่ส่งคืนของตัวตั้งค่าใน
SpatialAudioTrackBuilderออกแล้ว (Ifc7fe, b/422215565) - การเปลี่ยนแปลง SurfaceEntity
SurfaceEntity.CanvasShapeเปลี่ยนชื่อเป็นShapeSurfaceEntity.CanvasShape.Vr180Hemisphereเปลี่ยนชื่อเป็นHemisphereSurfaceEntity.CanvasShape.Vr360Sphereเปลี่ยนชื่อเป็นSphereSurfaceEntity.EdgeFeatheringParams.SmoothFeatherเปลี่ยนชื่อเป็นRectangleFeatherSurfaceEntity.EdgeFeathingParams.SolidEdgeเปลี่ยนชื่อเป็นNoFeatheringSurfaceEntity.ContentSecurityLevelเปลี่ยนชื่อเป็นSurfaceProtectionSurfaceEntity.ContentSecurityLevel.{values}เพิ่มคำนำหน้าSURFACE_PROTECTION_SurfaceEntity.SuperSampling.{$values}เพิ่มคำนำหน้าSUPER_SAMPLING_SurfaceEntity.StereoMode.{values}เพิ่มคำนำหน้าSTEREO_MODE_SurfaceEntity.ContentColorMetadata.maxCLLเปลี่ยนชื่อmaxContentLightLevel(I7eb5f, b/422216050, b/427529950)
- เปลี่ยนชื่อ
launchActivityเป็นstartActivity(I7db90, b/430332856) - นำ
Scene.activitySpaceRootออกแล้ว โปรดใช้Scene.activitySpaceแทน (I05ee8, b/378706624, b/422215745) configureBundleForFullSpaceModeLaunchและconfigureBundleForFullSpaceModeLaunchWithEnvironmentInheritedเปลี่ยนชื่อเป็นcreateBundleForFullSpaceModeLaunchและcreateBundleForFullSpaceModeLaunchWithEnvironmentInheritedตามลำดับ และย้ายไปที่ไฟล์ LaunchUtils.kt เป็นเมธอดระดับบนสุดและใช้ Session เป็นพารามิเตอร์แรก (I64a2c, b/437186050)- ตอนนี้
GroupEntityfactory จะแสดงผลประเภทGroupEntityแทน Entity (I66042)
การแก้ไขข้อบกพร่อง
- ส่ง
IllegalStateExceptionเมื่อใช้อินสแตนซ์ของเอนทิตีหลังจากทิ้ง (I90990, b/427314036, b/432063442)
เวอร์ชัน 1.0.0-alpha06
13 สิงหาคม 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha06, androidx.xr.scenecore:scenecore-guava:1.0.0-alpha06 และ androidx.xr.scenecore:scenecore-testing:1.0.0-alpha06 เวอร์ชัน 1.0.0-alpha06 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ยกเลิกการจำกัด
SceneCoreและBaseEntityAPI ของBaseScenePose(88c0ff6)
เวอร์ชัน 1.0.0-alpha05
30 กรกฎาคม 2025
androidx.xr.scenecore:scenecore-guava:1.0.0-alpha05, androidx.xr.scenecore:scenecore-testing:1.0.0-alpha05 และ androidx.xr.scenecore:scenecore:1.0.0-alpha05 เวอร์ชัน 1.0.0-alpha05 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่ม API ความละเอียดที่รับรู้ลงในเอนทิตีแผงและ
SurfaceEntities(I118f6) PerceivedResolutionเพิ่มเมธอดเรียกกลับไปยัง Scene.kt เพื่อตรวจสอบความละเอียดที่รับรู้ของแผงหลักของกิจกรรมใน HSM (I58084)SurfaceEntity- เพิ่มการรองรับแอปพลิเคชันเพื่อขอการสุ่มตัวอย่างขั้นสูงในเวลาที่สร้าง ซึ่งจะช่วยให้แอปพลิเคชันใช้ตัวกรองการสุ่มตัวอย่างแบบ Super Sampling เพื่อการป้องกันรอยหยักได้ (I06913)- เพิ่มพร็อพเพอร์ตี้
recommendedContentBoxInFullSpaceไปยังActivitySpaceโดยจะแสดงช่องแนะนำสำหรับวางเนื้อหาเมื่ออยู่ในโหมด Full Space (I4cd6f) - มีตัวสร้างที่โอเวอร์โหลดสำหรับตัวแก้ไขที่เคลื่อนย้ายได้ซึ่งอนุญาตการยึด (Ic0c70)
การเปลี่ยนแปลง API
เราได้ทำการเปลี่ยนแปลง API อย่างกว้างขวางใน SceneCore สำหรับรุ่นนี้ มีการเปลี่ยนชื่อและ/หรือย้ายคลาสหลายคลาสไปยังโมดูลต่างๆ และมีการแทนที่เมธอด Getter/Setter ส่วนใหญ่ด้วยพร็อพเพอร์ตี้ Kotlin แม้ว่าเราจะคาดการณ์การเปลี่ยนแปลง API ที่ไม่เข้ากันในอนาคตจนกว่าจะมีการเปิดตัวเวอร์ชันเบต้าแรก แต่การเปลี่ยนแปลงเหล่านั้นจะไม่ส่งผลกระทบมากนักหรือมีจำนวนมาก
- เปลี่ยนชื่อและ/หรือย้ายคลาสและอินเทอร์เฟซต่อไปนี้
androidx.xr.scenecore.PixelDimensionsเป็นandroidx.xr.runtime.math.IntSize2dandroidx.xr.scenecore.Dimensionsเป็นandroidx.xr.runtime.math.FloatSize3dandroidx.xr.scenecore.ActivityPoseเป็นScenePoseandroidx.xr.scenecore.ContentlessEntityเป็นGroupEntityandroidx.xr.scenecore.PlaneTypeเป็นPlaneOrientationandroidx.xr.scenecore.PlaneSemanticเป็นPlaneSemanticType(Ifd405)(I3b622) (If534d) - เราได้ตั้งค่าตัวตั้งค่าจำนวนหนึ่งสำหรับพร็อพเพอร์ตี้ของ
Sceneให้เป็นแบบส่วนตัว เนื่องจากไม่ได้มีไว้ให้ไคลเอ็นต์SceneCoreเปลี่ยนแปลงค่า ได้แก่activitySpace,activitySpaceRoot,mainPanelEntity,perceptionSpace,spatialCapabilities,spatialEnvironmentและspatialUser(I2f506) - ในเอนทิตี: เปลี่ยนรายการต่อไปนี้เป็นพร็อพเพอร์ตี้:
get/setParent(),setContentDescription; เลิกใช้งานEntity.is/setHidden()แล้ว ให้ใช้Entity.is/setEnabledแทน (Ibc4c6) - นำคลาส
androidx.xr.scenecore.BasePanelEntityออกแล้ว โปรดใช้PanelEntityโดยตรงแทน แทนที่ Getter และ Setter สำหรับPanelEntityด้วยพร็อพเพอร์ตี้ เปลี่ยนพร็อพเพอร์ตี้PanelEntity.sizeจากFloat3dSizeเป็นFloat2dSizeนำวิธีการandroidx.xr.scenecore.PanelEntity.getPixelDimensionsที่เลิกใช้งานแล้วออก และใช้getSizeInPixelsแทน (Icc174) - แทนที่
androidx.xr.scenecore.OnSpaceUpdatedListenerด้วยRunnableแล้ว (I19308) - แทนที่
SpatialUser.getCameraViews()ด้วยพร็อพเพอร์ตี้ (Ib0cc5) สำหรับExrImageและGltfModel:เปลี่ยนเมธอดcreateให้เป็นฟังก์ชันระงับ แก้ไขพารามิเตอร์การสร้างเพื่อยอมรับUriหรือPathแทนString(Id8883) (I0d247), (I25706) - ย้าย
SpatialEnvironment.requestFullSpaceModeและSpatialEnvironment.requestHomeSpaceModeไปยังฉาก เช่น ใช้session.scene.requestFullSpaceMode()แทนsession.scene.spatialEnvironment.requestFullSpaceMode()addOnPassthroughOpacityChangedListenerและaddOnSpatialEnvironmentChangedListenerมีการลบล้างที่ยอมรับ Executor ที่ไม่บังคับแล้ว (I12fe0) (I6b21e) - นำวิธีการ
SpatialEnvironmentที่เลิกใช้งานแล้วต่อไปนี้ออก:togglePassthrough,setPassthrough,setPassthroughOpacity,getPassthroughMode,getPassthroughOpacity,setSkyboxและsetGeometryนอกจากนี้ เรายังได้นำคลาสSpatialEnvironment.PassthroughMode(I927bd) (I927bd) (I927bd) ที่เลิกใช้งานแล้วออกด้วย - แทนที่ Getter และ Setter ต่อไปนี้
SpatialEnvironmentด้วยพร็อพเพอร์ตี้ Kotlin:getCurrentPassthroughOpacity(),get/setPassthroughOpacityPreference(),get/setSpatialEnvironmentPreference(),isSpatialEnvironmentPreferenceActive()(I33a7b) (Ie06e2) (Ie06e2) - เปลี่ยนประเภท
SpatialEnvironmentPreference.preferredPassthroughOpacityจากFloat?เป็นFloatแล้ว โดยจะไม่รับค่า Null อีกต่อไป แต่จะใช้SpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCEเพื่อส่งสัญญาณว่าไม่มีค่ากำหนดความทึบแสง (I40107) - อัปเดตพารามิเตอร์
windowBoundsPxเป็นpixelDimensionsและประเภทจาก Rect เป็นIntSize2dในเมธอด create (I1926e) - ตอนนี้ตัวสร้าง
SpatialEnvironmentเป็นแบบภายในแล้ว (I75a51) - แทนที่คลาส
SpatialPointerIconNoneและคลาสSpatialPointerIconCircleด้วยออบเจ็กต์คู่SpatialPointerIcon.NONEและSpatialPointerIcon.CIRCLE(I416d2) SpatialPointerIconในSpatialPointerComponentจะไม่เป็นค่าว่างอีกต่อไป ใช้SpatialPointerIcon.DEFAULTแทนค่า Null เพื่อระบุว่าควรใช้ไอคอนเคอร์เซอร์เริ่มต้นของระบบ (I416d2)- แทนที่
androidx.xr.scenecore.AnchorEntity.getState()ด้วยพร็อพเพอร์ตี้แบบอ่านอย่างเดียว เปลี่ยนชื่อพารามิเตอร์ในเมธอดAnchorEntity.create()เพื่อความชัดเจน ในAnchorEntityวิธีการตั้งค่าและเพิ่ม Listener เราได้ย้าย Listener ไปยังอาร์กิวเมนต์สุดท้ายเพื่อเปิดใช้ Lambda ต่อท้าย แทนที่androidx.xr.scenecore.OnStateChangedListenerสำหรับAnchorEntityด้วยConsumer<AnchorEntity.State>(I472e0) - ตอนนี้
GltfModelEntity.getAnimationState()เป็นพร็อพเพอร์ตี้แล้ว (I10b29) - แทนที่
ActivitySpace.getBounds()ด้วยพร็อพเพอร์ตี้ เปลี่ยนชื่อActivitySpace.addBoundsChangedListenerเป็นActivitySpace.addOnBoundsChangedListenerแล้ว แทนที่ActivitySpace.setOnSpaceUpdatedListenerด้วยวิธีการเพิ่ม/นำออก (I4c956) - สำหรับ
AnchorPlacement: planeTypeFilterเปลี่ยนชื่อเป็นanchorablePlaneOrientationsและplaneSemanticFilterเปลี่ยนชื่อเป็นanchorablePlaneSemanticTypesการเพิ่มMovableComponentลงในAnchorEntityหรือActivitySpaceจะแสดงผลเป็นเท็จMoveListenerเปลี่ยนชื่อเป็นEntityMoveListener shouldDisposeParentAnchorเปลี่ยนชื่อเป็นdisposeParentOnReAnchor systemMovableถูกนำออกจากฟังก์ชันcreateเพื่อให้ใช้creeateCustomMovable,createSystemMovableและcreateAnchorableแทน (If11c4) - นำ
SurfaceEntity.featherRadiusX/Yออกและเพิ่มแนวคิดคลาสEdgeFeatheringParams(Ic78fc) - แทนที่เมธอด
PanelEntity.enablePanelDepthTest()ด้วยพร็อพเพอร์ตี้panelClippingConfigตั้งค่าScene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true)เพื่อเปิดใช้การทดสอบเชิงลึก หรือตั้งค่าเป็นPanelClippingConfig(isDepthTestEnabled = false)เพื่อปิดใช้ (I0cbe0) - ตอนนี้
Scene.mainPanelEntityมีประเภทเป็นMainPanelEntityแทนPanelEntity(I7125a) - เปลี่ยนชื่อเมธอด
setFullSpaceModeของ Scene เป็นconfigureBundleForFullSpaceModeLaunchและเมธอดsetFullSpaceModeWithEnvironmentInheritedเป็นconfigureBundleForFullSpaceModeLaunchWithEnvironmentInherited(I0cbe0) (I0cbe0) - เปลี่ยนชื่อค่า
SpatialVisibility's UNKNOWN, OUTSIDE_FOV, PARTIALLY_WITHIN_FOV และ WITHIN_FOV เป็น SPATIAL_VISIBILITY_UNKNOWN, SPATIAL_VISIBILITY_OUTSIDE_FIELD_OF_VIEW, SPATIAL_VISIBILITY_PARTIALLY_WITHIN_FIELD_OF_VIEW และ SPATIAL_VISIBILITY_WITHIN_FIELD_OF_VIEW ตามลำดับ (Ie7e8c) SpatialVisibilityclass ถูกแทนที่ด้วยออบเจ็กต์สาธารณะที่มีค่า Int แบบ const ตอนนี้setSpatialVisibilityChangedListenerยอมรับConsumer<Int>แทนConsumer<SpatialVisibility>(Ie7e8c) แล้ว- เปลี่ยนชื่อค่าคงที่
PointerCaptureComponentและย้ายไปยังออบเจ็กต์PointerCaptureComponent.PointerCaptureState(I9c7ac) - แทนที่
PointerCaptureComponents' StateListenerด้วยConsumer<Int>แล้ว (I9c7ac) - แทนที่
InputEventListenerด้วยConsumer<InputEvent>(I9c7ac) setPreferredAspectRatioย้ายจากคลาส Scene ไปยังออบเจ็กต์SpatialWindowและใช้ Session เป็นพารามิเตอร์แรก (I7b717)Entity.setHidden()ถูกแทนที่ด้วยEntity.setEnabled()และEntity.isHidden()ถูกแทนที่ด้วยEntity.isEnabled()setHidden(false)เท่ากับsetEnabled(true)และisHidden() == !isEnabled()(Icf0de)- เปลี่ยนประเภท
Entity.contentDescriptionจาก String เป็นCharSequence(Ie59be) - ตอนนี้
Session.createและSession.configureจะแสดงSecurityExceptionเมื่อไม่ได้รับสิทธิ์ที่เพียงพอแทนที่จะแสดงSessionCreatePermissionsNotGrantedหรือSessionConfigurePermissionsNotGranted(I7c488) - ตอนนี้
ResizableComponent.createกำหนดให้ต้องมีConsumer<ResizeEvent> ResizeEventListenerถูกแทนที่ด้วยConsumer<ResizeEvent> ResizableComponent.sizeเปลี่ยนชื่อเป็นResizableComponent.affordanceSize ResizableComponent.minimumSizeเปลี่ยนชื่อเป็นResizableComponent.minimumEntitySize ResizableComponent.maximumSizeเปลี่ยนชื่อเป็นResizableComponent.maximumEntitySize,ResizableComponent.autoHideContentเปลี่ยนชื่อเป็นResizableComponent.shouldAutoHideContentResizableComponent.forceShowResizeOverlayเปลี่ยนชื่อเป็นResizableComponent.shouldAlwaysShowOverlay(I97a2d) - ลด
minSDKเป็น 24 สำหรับandroidx.xr.scenecoreและandroidx.xr.composeแพ็กเกจ XR ยังคงต้องใช้ API 34 ในรันไทม์ (I17224) - นำข้อจำกัด
RequiresApi(34)ออกจากแพ็กเกจ Jetpack XR ทั้งหมด ข้อจำกัดนี้ซ้ำซ้อนเนื่องจากปัจจุบัน Jetpack XR ใช้ได้เฉพาะในอุปกรณ์ที่มีระดับ API 34 ขึ้นไป (Iae0f8) SceneCoreอาร์ติแฟกต์หลัก (xr:scenecore:scenecore) จะมีเฉพาะ API แบบไม่พร้อมกันในรูปแบบ Kotlin เท่านั้น นักพัฒนาซอฟต์แวร์ Java สามารถใช้xr:scenecore:scenecore-guavaไลบรารีเพื่อเข้าถึง API ที่เข้ากันได้ (If221b)- โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไปจึงจะใช้งานได้ (Idb6b5)
- ตอนนี้ไลบรารีนี้ใช้คำอธิบายประกอบเกี่ยวกับค่า Null ของ JSpecify ซึ่งเป็นการใช้งานประเภท นักพัฒนา Kotlin ควรใช้อาร์กิวเมนต์คอมไพเลอร์ต่อไปนี้เพื่อบังคับใช้การใช้งานที่ถูกต้อง
-Xjspecify-annotations=strict(นี่คือค่าเริ่มต้นที่เริ่มต้นด้วยคอมไพเลอร์ Kotlin เวอร์ชัน 2.1.0) (Ia8420) - เราได้แทนที่เมธอดแบบไม่พร้อมกันทั้งหมดที่แสดงผล
ListenableFutureด้วยฟังก์ชันระงับของ Kotlin นักพัฒนาซอฟต์แวร์ Java ที่ต้องการใช้วิธีการแบบไม่พร้อมกันที่อิงตามListenableFutureแทน Suspend Function ของ Kotlin จะต้องใช้ฟังก์ชันส่วนขยายใน:xr:scenecore-scenecore-guavaเช่นGuavaExrImageมีฟังก์ชันแบบไม่พร้อมกัน ExrImage ที่เทียบเท่ากับ Guava,GuavaScenePoseมีฟังก์ชันแบบไม่พร้อมกันScenePoseที่เทียบเท่ากับ Guava,GuavaGltfModelมีฟังก์ชันแบบไม่พร้อมกันGuava-equivalent GltfModelเป็นต้น (If7283) (I0af60) (If7283) (Ia8515) (I4efdf) (I54bbf) (I3467a) (I82a33)
การแก้ไขข้อบกพร่อง
- อัปเดตกฎ Jetpack XR Scenecore
ProGuardเพื่อป้องกันAbstractMethodErrorสำหรับไคลเอ็นต์ที่ย่อขนาด (I91a01) - การแก้ไขเพิ่มเติมเพื่อรองรับการลดขนาด Proguard สำหรับ Jetpack XR
SceneCore(I4f47e) - แก้ไขข้อบกพร่องที่
InteractableComponentอาจทำให้เกิดข้อขัดข้องหากhitPositionใน HitInfo ของInputEventอาจขัดข้องหากhitPositionที่ส่งคืนจากระบบเป็นค่าว่าง (I7a695) - เปลี่ยนชื่อค่า *Mode ของการกำหนดค่าเพื่อให้สอดคล้องกับลักษณะการทำงาน (I6d247)
- แก้ไขปัญหาเกี่ยวกับ FOV และ
HitTestในSceneCoreTestApp (I2c51e) - แก้ไขข้อบกพร่องใน
SpatialCapabilities.hasCapability()ซึ่งจะแสดงผลเป็น "จริง" หากความสามารถใดก็ตามที่ส่งผ่านด้วย OR แบบบิตเป็นจริง แทนที่จะแสดงผลเป็น "จริง" เฉพาะในกรณีที่ความสามารถทั้งหมดเป็นจริง (I2cd40) SurfaceEntity.StereoMode.TOP_BOTTOMอัปเดตให้มีแผนที่ด้านบนสำหรับตาซ้ายและแผนที่ด้านล่างสำหรับตาขวา (I4ae68)
เวอร์ชัน 1.0.0-alpha04
7 พฤษภาคม 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha04 และ androidx.xr.scenecore:scenecore-testing:1.0.0-alpha04 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- ตอนนี้การจัดการย้อนกลับจะใช้ได้กับเอนทิตีแผงโดยไม่มีกิจกรรมที่ฝังไว้ หากต้องการให้การจัดการย้อนกลับทำงาน คุณต้องระบุ
android:enableOnBackInvokedCallback= "true"ในไฟล์ Manifest ของ Android StereoSurfaceEntityตอนนี้รองรับการเล่น MV-HEVC ผ่านค่าStereoModeใหม่ 2 ค่า ได้แก่ MULTIVIEW_LEFT_PRIMARY และ MULTIVIEW_RIGHT_PRIMARY- ตอนนี้
PanelEntity.setSizeและPanelEntity.getSizeจะแสดงขนาดในพื้นที่ระดับบน - ตอนนี้
Entity.setPose,Entity.getPose,Entity.setScale,Entity.getScale,Entity.setAlphaและEntity.getAlphaใช้พารามิเตอร์ใหม่relativeToซึ่งช่วยให้รับ/ตั้งค่าที่เกี่ยวข้องกับพื้นที่ต่างๆ ได้ ค่าที่รองรับ ได้แก่ พื้นที่สำหรับผู้ปกครอง กิจกรรม และโลกแห่งความเป็นจริง และค่าเริ่มต้นสำหรับพารามิเตอร์นี้คือ Parent - เพิ่มเมธอดส่วนขยายของ Spatial Visibility Callback ลงใน
SessionExt.ktเพื่อตรวจสอบเมื่อเนื้อหาฉากเคลื่อนที่ภายในหรือภายนอกขอบเขตการมองเห็นของผู้ใช้ - เพิ่ม
setPointSourceParamsลงในSpatialAudioTrackแล้ว ซึ่งจะช่วยให้คุณอัปเดตพารามิเตอร์ได้หลังจากสร้างแทร็กแล้ว - เพิ่มคลาสใหม่ชื่อ Scene พร้อมการอ้างอิงถึง
ScenecoreAPI โดยจะเข้าถึงฉากได้ในฐานะพร็อพเพอร์ตี้ส่วนขยายของเซสชัน ฟังก์ชันภายในSessionExtได้ย้ายไปที่ Scene แล้ว ดังนั้นจึงต้องปรับการนำเข้า เช่นSessionExt.getScene(session)addSpatialCapababilitiesChangedListenerพบกับSessionExt.addSpatialCapabilitiesChangedListener ActivityPose.hitTestAsyncได้รับการเพิ่มเข้ามา ซึ่งช่วยให้สามารถhitTestกับเนื้อหาเสมือนได้- เพิ่มประเภทคอมโพเนนต์ใหม่
SpatialPointerComponentซึ่งช่วยให้ไคลเอ็นต์ระบุไอคอนที่แสดงสำหรับเคอร์เซอร์ หรือปิดใช้ไอคอนได้ ปัจจุบันคุณแนบคอมโพเนนต์นี้ได้กับอินสแตนซ์PanelEntityเท่านั้น - ขอแนะนำ
PanelEntityใหม่ ซึ่งใช้ขนาดแผงเป็นหน่วยเมตรหรือพิกเซล นำPanelEntityโรงงานรุ่นเก่าที่ใช้พารามิเตอร์ประเภทมิติข้อมูล 2 รายการสำหรับแผงออก
การเปลี่ยนแปลง API
- นำข้อจำกัด
RequiresApi(34)ออกจากแพ็กเกจ Jetpack XR ทั้งหมด ข้อจำกัดนี้ซ้ำซ้อนเนื่องจากปัจจุบัน Jetpack XR ใช้ได้เฉพาะในอุปกรณ์ที่มีระดับ API 34 ขึ้นไป (Iae0f8) - โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไปจึงจะใช้งานได้ (Idb6b5)
- ระบบได้นำชั้นเรียน
PermissionHelperออกแล้ว PanelEntity.getPixelDensityเลิกใช้งานแล้ว- ระบบจะนำ
PanelEntity.setPixelDimensionsและPanelEntity.getPixelDimensionออก และแทนที่ด้วยsetSizeInPixelsและgetSizeInPixels - นำ
Entity.getActivitySpaceAlphaออกแล้ว แทนที่ด้วยEntity.getAlpha(Space.Activity)ได้ - นำ
Entity.getWorldSpaceScaleออกแล้ว แทนที่ด้วยEntity.getScale(Space.REAL\_WORLD)ได้ - เราได้ลบคลาสเซสชันใน
SceneCoreออกแล้วเพื่อใช้เซสชันใน XR Runtime แทน StereoSurfaceEntityเปลี่ยนชื่อเป็นSurfaceEntityแล้ว- เราได้นำ
Entity.setSizeและEntity.getSizeออกแล้ว และเพิ่มวิธีการเดียวกันลงในPanelEntity PointSourceAttributesเปลี่ยนชื่อเป็นPointSourceParamsแล้วSpatializerConstants.SOURCE\_TYPE\_BYPASSเปลี่ยนชื่อเป็นSpatializerConstants.SOURCE\_TYPE\_DEFAULTแล้ว- มีการแก้ไขเอนทิตี
PointSourceParamsจากการเข้าถึงแบบสาธารณะเป็นการเข้าถึงภายใน - ตอนนี้
AnchorEntity.createกำหนดให้ต้องกำหนดค่าPlaneTrackingModeในSession.configure() SpatialUserตอนนี้ API ต้องกำหนดค่าHeadTrackingModeในSession.configure()- เมื่อไม่ได้แนบ
ResizableComponentระบบจะแสดงบันทึกระดับ INFO แทนบันทึกระดับ ERROR - ตอนนี้คลาส Fov เป็นคลาส Kotlin ปกติแล้ว
- แยก
Entity.ktเพื่อวางเอนทิตีประเภทคอนกรีตแต่ละประเภทลงในไฟล์ของตัวเอง - เมื่อสร้าง
PanelEntityใหม่ มุมมองส่วนใหญ่จะเปลี่ยนเป็นมุมมองย่อยของFrameLayoutซึ่งจะช่วยให้ใช้LayoutInspectorกับแผงเชิงพื้นที่ได้ - ตอนนี้เราได้ลงทะเบียนอินสแตนซ์
XrExtensionsที่ใช้อยู่กับแพลตฟอร์มแล้วอย่างเต็มความสามารถเพื่อช่วยในการแก้ไขข้อบกพร่องของแอป
การแก้ไขข้อบกพร่อง
- เพิ่มการแก้ไขเพื่อป้องกันการขัดข้องที่อาจเกิดขึ้นเมื่อย้าย
PanelEntityที่มีMovableComponentและAnchorPlacement - แก้ไขปัญหาที่
ResizableComponentแสดงขนาดที่ล้าสมัยในแฮนเดิลonResizeStart - แก้ไขข้อขัดข้องเมื่อมีการเรียกใช้
JxrPlatformAdapterAxrของdispose()หลายครั้ง
เวอร์ชัน 1.0.0-alpha03
26 กุมภาพันธ์ 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha03 และ androidx.xr.scenecore:scenecore-testing:1.0.0-alpha03 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha03 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตอนนี้โค้ด Jetpack XR รองรับการลดขนาด Proguard แล้ว
การแก้ไขข้อบกพร่อง
- แก้ไขเพิ่มเติมเพื่อรองรับการลดขนาด Proguard สำหรับ Jetpack XR SceneCore (I4f47e)
- อัปเดตกฎ Jetpack XR Scenecore
ProGuardเพื่อป้องกันAbstractMethodErrorสำหรับไคลเอ็นต์ที่ย่อขนาด (I91a01)
เวอร์ชัน 1.0.0-alpha02
12 กุมภาพันธ์ 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha02 และ androidx.xr.scenecore:scenecore-testing:1.0.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.0.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลงแบบไม่รองรับเวอร์ชันก่อนหน้าที่จะเกิดขึ้นซึ่งส่งผลต่อแอปที่สร้างก่อน 1.0.0-alpha02
- เราได้ย้ายเมธอดของ Factory จากคลาส
Sessionไปยังเมธอดคู่กันในแต่ละประเภทที่เกี่ยวข้องแล้ว- ระบบได้ลบ
Session.createActivityPanelEntity(Dimensions, String, Activity, Pose)และแทนที่ด้วยActivityPanelEntity.create(Session, Dimensions, String, Pose)แล้ว - ระบบได้ลบ
Session.createAnchorEntity(Anchor)และแทนที่ด้วยAnchorEntity.create(Session, Anchor)แล้ว - ระบบได้ลบ
Session.createAnchorEntity(Dimensions, Int, Int, Duration)และแทนที่ด้วยAnchorEntity.create(Session, Dimensions, Int, Int, Duration)แล้ว - ระบบได้ลบ
Session.createEntity(String, Pose)และแทนที่ด้วยContentlessEntity.create(Session, String, Pose)แล้ว - ระบบได้ลบ
Session.createExrImageResource(String)และแทนที่ด้วยExrImage.create(Session, String)แล้ว - ระบบได้ลบ
Session.createGltfEntity(GltfModel, Pose)และแทนที่ด้วยGltfModelEntity.create(Session, GltfModel, Pose)แล้ว - ระบบได้ลบ
Session.createGltfModelResource(String)และแทนที่ด้วยGltfModel.create(Session, String)แล้ว - ระบบได้ลบ
Session.createInteractableComponent(Executor, InputEventListener)และแทนที่ด้วยInteractableComponent.create(Session, Executor, InputEventListener)แล้ว - ระบบได้ลบ
Session.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean)และแทนที่ด้วยMovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean)แล้ว - ระบบได้ลบ
Session.createPanelEntity(View, Dimensions, Dimensions, String, Pose)และแทนที่ด้วยPanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose)แล้ว - ระบบได้ลบ
Session.createResizableComponent(Dimensions, Dimensions)และแทนที่ด้วยResizableComponent.create(Session, Dimensions, Dimensions)แล้ว - ระบบได้ลบ
Session.createStereoSurfaceEntity(Int, Dimensions, Pose)และแทนที่ด้วยStereoSurface.create(Session, Int, Dimensions, Pose)แล้ว
- ระบบได้ลบ
- ระบบได้นำวิธีการที่เลิกใช้งานแล้วต่อไปนี้ออก
- ลบ
Session.canEmbedActivityPanel(Activity)แล้ว โปรดใช้getSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY)แทน - ลบ
Session.hasSpatialCapability(Int)แล้ว เราได้แทนที่ด้วยการใช้getSpatialCapabilities().hasCapability()เพื่อเป็นวิธีที่แยกส่วนมากขึ้นในการตรวจสอบว่ามีฟีเจอร์เชิงพื้นที่หรือไม่ เนื่องจากgetSpatialCapabilities()จะแสดงผลออบเจ็กต์SpatialCapabilities - ระบบได้ลบ
Session.requestFullSpaceMode()และแทนที่ด้วยSpatialEnvironment.requestFullSpaceMode()แล้ว - ระบบได้ลบ
Session.requestHomeSpaceMode()และแทนที่ด้วยSpatialEnvironment.requestHomeSpaceMode()แล้ว
- ลบ
Session.setFullSpaceMode(Bundle)และSession.setFullSpaceModeWithEnvironmentInherited(Bundle)ได้ย้ายไปอยู่ในฟังก์ชันส่วนขยายแล้ว ไฟล์ของนักพัฒนาแอปจะต้องเพิ่มการนำเข้าใหม่สำหรับการเข้าถึง ดังนี้import androidx.xr.scenecore.setFullSpaceModeimport androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
Session.setPreferredAspectRatio(Activity, Float)ได้ย้ายไปเป็นฟังก์ชันส่วนขยายแล้ว ไฟล์ของนักพัฒนาแอปจะต้องเพิ่มการนำเข้าใหม่เพื่อเข้าถึง โดยทำดังนี้import androidx.xr.scenecore.setPreferredAspectRatio
Session.getEntitiesOfType(Class<out T>)และSession.getEntityForRtEntity(RtEntity)ได้ย้ายไปอยู่ในฟังก์ชันส่วนขยายแล้ว ไฟล์ของนักพัฒนาแอปจะต้องเพิ่มการนำเข้าใหม่สำหรับการเข้าถึง ดังนี้import androidx.xr.scenecore.getEntitiesOfTypeimport androidx.xr.scenecore.getEntityForRtEntity
- ลบ
Session.unpersistAnchor(Anchor)แล้ว - ลบ
Session.createPersistedAnchorEntity(UUID)แล้ว
ปัญหาที่ทราบ
PanelEntity.setCornerRadius()และActivityPanelEntity.setCornerRadius()อาจไม่มีผลจนกว่าจะมีการย้ายแผงในครั้งถัดไป ซึ่งสามารถแก้ไขได้โดยการย้ายแผงไปยังตำแหน่งปัจจุบัน- เมื่อเรียกใช้
BoundsChangedในActivitySpaceActivityPoseบางรายการอาจไม่อัปเดตอย่างถูกต้อง โดยจะมีการอัปเดตในการโทรOnSpaceUpdatedครั้งถัดไปในวันที่ActivitySpace
การเปลี่ยนแปลงด้านพฤติกรรมและนิสัย
PanelEntityและActivityPanelEntityจะมีรัศมีมุมเริ่มต้นที่ 32dp หรือเล็กกว่าหากแผงมีความกว้างหรือความสูงน้อยกว่า 32dp
API และความสามารถใหม่ๆ
- ขอแนะนำ
StereoSurface.CanvasShapeซึ่งช่วยให้สร้าง CanvasSphericalและHemisphericalเพื่อแสดงผลสื่อที่สมจริงได้ StereoSurfaceEntity.create()ตอนนี้ยอมรับพารามิเตอร์CanvasShapeแล้ว (ขณะนี้ระบบจะไม่สนใจพารามิเตอร์นี้ แต่จะนำไปใช้ในรุ่นที่จะออกในอนาคต)StereoSurfaceEntity.create()ไม่รับพารามิเตอร์Dimensionsอีกต่อไป แอปพลิเคชันควรควบคุมขนาดของ Canvas โดยการตั้งค่าCanvasShapeStereoSurfaceEntityมีสมาชิกCanvasShapeซึ่งตั้งค่าแบบไดนามิกได้StereoSurfaceEntity.dimensionsเป็นพร็อพเพอร์ตี้แบบอ่านอย่างเดียวแล้ว ตอนนี้แอปพลิเคชันควรตั้งค่าCanvasShapeเพื่อเปลี่ยนขนาดStereoSurfaceEntityอนุญาตให้StereoModeรีเซ็ตได้หลังการก่อสร้าง
การเปลี่ยนแปลงอื่นๆ
- ลด minSDK ในเวลาคอมไพล์เป็น 24 API ของ Jetpack XR ทั้งหมดจะยังคงต้องใช้ API 34 ในรันไทม์
- โรงงานเซสชันของ
SceneCore(Session.create) จะไม่เปิดใช้ Intent เพื่อขอสิทธิ์SCENE_UNDERSTANDINGอีกต่อไป แต่แอปพลิเคชันไคลเอ็นต์ต้องขอสิทธิ์จากผู้ใช้อย่างชัดเจนก่อนที่จะพยายามสร้าง Anchor การสร้างสมอจะล้มเหลวหากผู้ใช้ไม่ได้ให้สิทธิ์
การแก้ไขข้อบกพร่อง
getActivitySpacePose()ได้รับการแก้ไขเพื่อรองรับActivitySpaceสเกลโดยการแสดงค่าการแปลในหน่วยเมตรที่ปรับขนาดแล้วแทนที่จะแสดงหน่วยเมตรที่ไม่ปรับขนาดเสมอtransformPoseToยังใช้หน่วยที่ถูกต้องในการคำนวณการเปลี่ยนแปลงพิกัดเมื่อActivitySpaceเกี่ยวข้องกับแหล่งที่มาหรือปลายทางด้วย- ตอนนี้ระบบจะตั้งค่ากล่องท้องฟ้าเป็นกล่องท้องฟ้าสีดำทั้งหมดทุกครั้งที่มีการส่งค่ากำหนดกล่องท้องฟ้าเป็น Null โดยใช้
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom))หากต้องการเปลี่ยนกลับไปใช้กล่องท้องฟ้าและรูปทรงเรขาคณิตเริ่มต้นของระบบ ให้ใช้setSpatialEnvironmentPreference(null).
เวอร์ชัน 1.0.0-alpha01
12 ธันวาคม 2024
androidx.xr.scenecore:scenecore-* 1.0.0-alpha01 เปิดตัวแล้ว
ฟีเจอร์ของการเปิดตัวครั้งแรก การเปิดตัว Jetpack SceneCore สำหรับนักพัฒนาแอปครั้งแรก ซึ่งเป็นไลบรารีกราฟฉาก 3 มิติสำหรับสร้างและจัดการฉากและสภาพแวดล้อมที่สมจริง ไลบรารีนี้ช่วยให้คุณวางและจัดเรียงโมเดล 3 มิติและแผงเนื้อหาให้สัมพันธ์กันและสัมพันธ์กับสภาพแวดล้อมเสมือนจริงหรือโลกจริงได้
- SpatialEnvironment: สร้างประสบการณ์ที่สมจริงอย่างเต็มรูปแบบด้วยรูปภาพ Skybox และ/หรือรูปทรงเรขาคณิตของโมเดล 3 มิติเป็นฉากหลังสำหรับฉาก XR ของสภาพแวดล้อม หรือเปิดใช้การส่งผ่านเพื่อให้ฉากเสมือนผสานรวมกับสภาพแวดล้อมในโลกจริงของผู้ใช้ได้
- PanelEntity: เพิ่มเนื้อหา 2 มิติลงในฉาก 3 มิติโดยการฝังเลย์เอาต์และกิจกรรม Android มาตรฐานลงในแผงเชิงพื้นที่ที่ลอยหรือยึดกับพื้นผิวในโลกจริงได้
- GltfModelEntity: วาง สร้างภาพเคลื่อนไหว และโต้ตอบกับโมเดล 3 มิติในฉาก SceneCore รองรับรูปแบบไฟล์ glTF เพื่อให้ผสานรวมกับโมเดลที่มีอยู่ได้ง่าย
- SpatialAudio: เพิ่มแหล่งเสียงรอบข้างและแหล่งเสียงเฉพาะจุดลงในฉาก 3 มิติเพื่อให้ได้เสียงรอบทิศทางที่สมจริงอย่างเต็มที่
- StereoSurfaceEntity: SceneCore รองรับการกำหนดเส้นทางเนื้อหาที่แสดงผลบน Android Surface สำหรับตาซ้าย/ขวา ซึ่งใช้ในการแสดงเนื้อหาสามมิติในรูปแบบเคียงข้างกันหรือบน-ล่าง เช่น รูปภาพสามมิติ วิดีโอ 3 มิติ หรือ UI อื่นๆ ที่แสดงผลแบบไดนามิก แอปพลิเคชันควรใช้ MediaPlayer หรือ ExoPlayer สำหรับการถอดรหัสวิดีโอ
- ระบบคอมโพเนนต์: SceneCore มีระบบคอมโพเนนต์ที่แข็งแกร่งและยืดหยุ่นสำหรับการเพิ่มความสามารถให้กับเนื้อหา XR ซึ่งรวมถึงความสามารถที่ช่วยให้ผู้ใช้ย้าย ปรับขนาด และโต้ตอบกับโมเดลและแผง
- Anchor: เมื่อเปิดใช้การส่งผ่าน คุณจะติดแผงและโมเดลกับพื้นผิวจริงได้ ซึ่งช่วยให้ผู้ใช้ผสานรวมเนื้อหาเสมือนเข้ากับสภาพแวดล้อมในโลกแห่งความเป็นจริงได้อย่างราบรื่น
- ท่าทางของผู้ใช้: เข้าถึงตำแหน่งของผู้ใช้ในฉากเสมือนเพื่อปรับทิศทางเนื้อหาตามตำแหน่งของผู้ใช้
- SpatialCapabilities: สร้างแอปที่ปรับเปลี่ยนได้อย่างเต็มที่ซึ่งใช้ประโยชน์จากความสามารถเชิงพื้นที่เมื่อพร้อมใช้งาน เช่น การวางตำแหน่งเนื้อหา UI แบบ 3 มิติ นอกจากนี้ แอปยังตรวจสอบการเปลี่ยนแปลงความสามารถขณะที่แอปกำลังทำงานเพื่อปรับเปลี่ยนประสบการณ์การใช้งานตามวิธีที่ผู้ใช้ใช้อุปกรณ์ Android XR ได้ด้วย
ปัญหาที่ทราบ
- ปัจจุบันต้องใช้ minSDK 30 เพื่อใช้ Jetpack SceneCore วิธีแก้ปัญหาชั่วคราวคือเพิ่มรายการไฟล์ Manifest ต่อไปนี้
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>เพื่อให้สามารถสร้างและเรียกใช้ด้วย minSDK 23 ได้ - เซสชันอาจใช้ไม่ได้ในสถานการณ์ต่างๆ ที่สร้างกิจกรรมขึ้นมาใหม่โดยอัตโนมัติ ซึ่งรวมถึงการปรับขนาดแผงหลัก การเชื่อมต่ออุปกรณ์ต่อพ่วง และการเปลี่ยนระหว่างโหมดสว่างและโหมดมืด หากพบปัญหาการทำให้เซสชันไม่ถูกต้อง วิธีแก้ปัญหาชั่วคราว ได้แก่ การทำให้แผงหลักไม่สามารถปรับขนาดได้ การใช้เอนทิตีแผงแบบไดนามิก การปิดใช้การสร้างกิจกรรมใหม่สำหรับการเปลี่ยนแปลงการกำหนดค่าที่เฉพาะเจาะจง หรือการปิดใช้การเปลี่ยนธีมโหมดสว่าง/มืด
- GltfEntity ไม่รองรับคอมโพเนนต์ที่ย้ายและปรับขนาดได้
- GltfEntity ไม่รองรับ Entity.getSize()
- แอป Jetpack XR ต้องขอสิทธิ์
android.permission.SCENE_UNDERSTANDINGใน AndroidManifest - การสร้างเซสชันรองรับเฉพาะในอุปกรณ์ Android XR ในตอนนี้ หากคุณสร้างเซสชันและพยายามใช้ในอุปกรณ์ที่ไม่ใช่ Android XR คุณจะได้รับ RuntimeException
- การตั้งค่ากล่องท้องฟ้าเป็น null ผ่าน `SpatialEnvironment.setSpatialEnvironmentPreference()` จะไม่ทำให้กล่องท้องฟ้าเป็นสีดำทึบตามที่ระบุไว้ ซึ่งอาจส่งผลให้ใช้สกายบ็อกซ์เริ่มต้นของระบบหรือไม่มีการเปลี่ยนแปลงสกายบ็อกซ์ปัจจุบัน
- ไคลเอ็นต์ SceneCore ควรเพิ่ม
implementation(“com.google.guava:listenablefuture-1.0”)ลงในการกำหนดค่า Gradle สำหรับทรัพยากร Dependency ของแอป ในรุ่นต่อๆ ไป scenecore จะรวมไลบรารีนี้เป็นapiDependency เพื่อให้ไคลเอ็นต์ไม่ต้องประกาศอย่างชัดแจ้ง - SceneCore มี
com.google.guava:guava-31.1-androidและcom.google.protobuf:protobuf-javaliteเป็นการขึ้นต่อกันแบบทรานซิทีฟโดยไม่ถูกต้อง หากการดำเนินการนี้ทำให้เกิดข้อผิดพลาดเกี่ยวกับคลาสที่ซ้ำกันในการบิลด์ คุณสามารถยกเว้นทรัพยากร Dependency ทั้ง 2 รายการนี้ได้อย่างปลอดภัย - หากแอปใช้ SceneCore และเปิดใช้ ProGuard แอปจะขัดข้องเมื่อคุณ สร้างเซสชัน วิธีแก้ปัญหาชั่วคราวคือปิดใช้ ProGuard ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีเปิดใช้ ProGuard ได้ที่คำแนะนำ นี้