Jetpack SceneCore

สร้างและจัดการกราฟฉาก Android XR ด้วยเนื้อหา 3 มิติ
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า รุ่นอัลฟ่า
9 กันยายน 2026 - 1.0.0-rc01 - -

การประกาศทรัพยากร Dependency

หากต้องการเพิ่มทรัพยากร Dependency ใน XR SceneCore คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google

เพิ่มทรัพยากร Dependency สำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle สำหรับ แอปหรือโมดูล

ดึงดูด

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")
}

ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์

ความคิดเห็น

ความคิดเห็นของคุณช่วยให้ Jetpack ทำงานได้ดีขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว

สร้างปัญหาใหม่

ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของ Issue Tracker

รุ่น 1.0

เวอร์ชัน 1.0.0-rc01

9 กันยายน 2026

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 สิงหาคม 2026

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

  • เราได้ทำเครื่องหมาย API GltfAnimation และ SpatialGltfModelAnimation ว่าเป็น API ที่อยู่ในขั้นทดลอง เปลี่ยนพร็อพเพอร์ตี้บางรายการเป็นตัวรับ (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 เป็นแบบสาธารณะ ตอนนี้ นักพัฒนาแอปสามารถระบุรัศมีมุมเมื่อสร้างรูปร่าง Quad เพื่อแสดงผล SurfaceEntity Canvas ที่มีมุมโค้งมน และค้นหารัศมีของ Quad ที่มีอยู่ได้แล้ว (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 Mode" และ "Full Space Mode" ในลักษณะเดียวกันด้วย (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)
  • เราได้อัปเดต VertexLayout API ให้ใช้รายการ VertexBufferLayout โดยที่ VertexBufferLayout แต่ละรายการจะอธิบายแอตทริบิวต์ภายในบัฟเฟอร์จุดยอดเดียว ซึ่งช่วยให้การจัดเรียงข้อมูลจุดยอดมีความยืดหยุ่นมากขึ้น รวมถึงแอตทริบิวต์ที่สอดแทรกที่มีระยะก้าวกระโดดและออฟเซ็ตที่กำหนดเอง (Ic426b)
  • ระบุ MovableComponent.createTrackingMovable เพื่อเปลี่ยนวัตถุที่ติดตามได้ของ ARCore เป็นท่าทางที่สัมพันธ์กับพื้นที่กิจกรรม (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 เป็นคลาสแบบนามธรรมแล้ว ตอนนี้เราได้เปลี่ยนวิธีการ onAttach() และ onDetach() เป็น protected เพื่อป้องกันการโทรโดยตรง โปรดใช้ Entity.addComponent() และ Entity.removeComponent() เพื่อจัดการวงจรของคอมโพเนนต์ (Id04e8)
  • ค่าคงที่ PlaneSemanticType PlaneOrientation ของ SceneCore ได้รับการย้ายข้อมูลจาก Ints ไปยังประเภทที่กำหนดเองแล้ว ระบบจะนำค่าคงที่ ANY ออก ลูกค้าควรระบุค่าคงที่ที่ต้องการทั้งหมดอย่างชัดเจนแทน หรือใช้ค่าคงที่ .ALL ใหม่ที่เปลี่ยนแปลงไม่ได้ ตอนนี้เมธอด AnchorEntity ของ Factory ยอมรับชุดประเภทเหล่านี้แทนค่าเดียวแล้ว (Ib1033)
  • เพิ่มการรองรับภาพเคลื่อนไหวแบบโครงกระดูก (การสกิน) ลงใน Custom Mesh API เวอร์ชันทดลอง ตอนนี้ นักพัฒนาแอปสามารถสร้างภาพเคลื่อนไหวให้กับตาข่ายที่กำหนดเองได้โดยการระบุ boneCount เมื่อสร้าง MeshEntity และอัปเดตภาพเคลื่อนไหวแบบเรียลไทม์โดยใช้ MeshEntity.setBoneTransforms() (Id8ba2, b/496692490)
  • เปิดตัว CustomMesh API เวอร์ชันทดลอง ตอนนี้ นักพัฒนาแอปสามารถสร้างและแสดงผลเรขาคณิต 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 ในเมธอด Factory ActivityPanelEntity, GltfModelEntity, GroupEntity, PanelEntity และ SurfaceEntity มีการเปลี่ยนแปลงจาก ActivitySpace เป็น null หากต้องการแนบเอนทิตีกับกราฟฉากและแสดงผลให้มองเห็นได้ ตอนนี้นักพัฒนาแอปต้องตั้งค่าระดับบนสุดอย่างชัดเจนในระหว่างการสร้างอินสแตนซ์หรือผ่าน Entity.parent = ... (Ie7cc1)

การแก้ไขข้อบกพร่อง

  • SceneCore จะเรียกคืนอินสแตนซ์ Entity โดยอัตโนมัติเมื่ออินสแตนซ์ดังกล่าวกลายเป็นอินสแตนซ์ที่เข้าถึงได้แบบแฟนทอม ซึ่งช่วยให้นักพัฒนาแอปไม่ต้องเรียกใช้ dispose() อย่างชัดเจนเพื่อปล่อยทรัพยากร นักพัฒนาแอปควรทำดังนี้เพื่อให้มั่นใจว่ามีการอ้างสิทธิ์อินสแตนซ์ [Entity] อย่างถูกต้อง
    • ถอดออกจากกราฟฉากโดยตั้งค่า 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)
  • เพิ่ม GltfAnimation API สำหรับควบคุมภาพเคลื่อนไหว 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 เนื่องจากตอนนี้ getPerceivedResolution API ใช้ RenderViewpoint API ของ ARCore แทน CameraViewScenePose แล้ว ชื่อนี้สะท้อนถึงการติดตั้งใช้งานใหม่ได้ดียิ่งขึ้น (I8c967, b/446989745, b/419311998)
  • ตอนนี้เมธอด PanelEntity/SurfaceEntity.getPerceivedResolution จะใช้ RenderViewpoint ที่นักพัฒนาแอปให้ไว้เป็นอาร์กิวเมนต์ ก่อนหน้านี้ รันไทม์จะเลือก RenderViewpoint ที่ใช้ในการคำนวณความละเอียดที่รับรู้โดยพลการ (I8c967, b/446989745, b/419311998)
  • นำ SpatialUser, ScenePose.Head และ ScenePose.CameraView ออกแล้ว ฟังก์ชันการทำงานของ API เหล่านี้ครอบคลุมโดย API ArDevice และ 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 ไปยัง SceneCore Runtime ตามตรรกะใน 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 เป็น null HitTestResult.hitPosition จะไม่ใช่ค่าที่กำหนดให้เป็น Null ได้อีกต่อไป (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)
  • อัปเดตค่าคงที่ SceneCore TextureSampler เพื่อให้อ่านง่ายขึ้น เช่น ตอนนี้ 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 เป็น Shape แล้ว
    • เปลี่ยนชื่อ SurfaceEntity.CanvasShape.Vr180Hemisphere เป็น Hemisphere แล้ว
    • เปลี่ยนชื่อ SurfaceEntity.CanvasShape.Vr360Sphere เป็น Sphere แล้ว
    • เปลี่ยนชื่อ SurfaceEntity.EdgeFeatheringParams.SmoothFeather เป็น RectangleFeather แล้ว
    • เปลี่ยนชื่อ SurfaceEntity.EdgeFeathingParams.SolidEdge เป็น NoFeathering แล้ว
    • เปลี่ยนชื่อ SurfaceEntity.ContentSecurityLevel เป็น SurfaceProtection แล้ว
    • SurfaceEntity.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)
  • ตอนนี้ GroupEntity Factory จะแสดงผลประเภท GroupEntity แทน เอนทิตี (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

  • ยกเลิกการจำกัด API ของ SceneCoreBaseEntity และ 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 - เพิ่มการรองรับแอปพลิเคชันเพื่อขอการสุ่มตัวอย่างขั้นสูงในเวลาที่สร้าง ซึ่งจะช่วยให้แอปพลิเคชันใช้ตัวกรองการสุ่มตัวอย่างแบบซูเปอร์เพื่อการป้องกันรอยหยักได้ (I06913)
  • เพิ่มพร็อพเพอร์ตี้ recommendedContentBoxInFullSpace ลงใน ActivitySpace แล้ว โดยจะแสดงช่องแนะนำสำหรับวางเนื้อหาเมื่ออยู่ในโหมด Full Space (I4cd6f)
  • มีตัวสร้างที่โอเวอร์โหลดสำหรับตัวแก้ไขที่เคลื่อนย้ายได้ซึ่งอนุญาตการยึด (Ic0c70)

การเปลี่ยนแปลง API

เราได้ทำการเปลี่ยนแปลง API อย่างครอบคลุมใน SceneCore สำหรับรุ่นนี้ มีการเปลี่ยนชื่อและ/หรือย้ายคลาสหลายคลาสไปยังโมดูลต่างๆ และมีการแทนที่เมธอด Getter/Setter ส่วนใหญ่ด้วยพร็อพเพอร์ตี้ Kotlin แม้ว่าเราจะคาดการณ์การเปลี่ยนแปลง API ที่ทำให้เกิดข้อขัดข้องในอนาคตจนกว่าจะมีการเปิดตัวเวอร์ชันเบต้าแรก แต่การเปลี่ยนแปลงดังกล่าวจะไม่ทำให้เกิดการหยุดชะงักหรือมีจำนวนมากเท่า

  • เปลี่ยนชื่อและ/หรือย้ายคลาสและอินเทอร์เฟซต่อไปนี้ 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 เป็นแบบส่วนตัว เนื่องจากไม่ได้มีไว้ให้ไคลเอ็นต์ 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's สำหรับการตั้งค่าและเพิ่ม 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 จะแสดงผลเป็น false, 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)
  • SpatialVisibility class ถูกแทนที่ด้วยออบเจ็กต์สาธารณะที่มีค่า const Int ตอนนี้ 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.shouldAutoHideContent ResizableComponent.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 ที่ระบบส่งคืนเป็น Null (I7a695)
  • เปลี่ยนชื่อค่าโหมดการกำหนดค่าเพื่อแสดงลักษณะการทำงาน (I6d247)
  • แก้ไขปัญหาเกี่ยวกับ FOV และ HitTest ใน SceneCore TestApp (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 พร้อมการอ้างอิงถึง Scenecore API โดยจะเข้าถึงฉากได้ในฐานะพร็อพเพอร์ตี้ส่วนขยายของเซสชัน ฟังก์ชันภายใน SessionExt ได้รับการย้ายไปยัง Scene แล้ว ดังนั้นจึงต้องปรับการนำเข้า เช่น SessionExt.getScene(session)addSpatialCapababilitiesChangedListener พบกับ SessionExt.addSpatialCapabilitiesChangedListener
  • ActivityPose.hitTestAsync ได้รับการเพิ่มเข้ามา ซึ่งช่วยให้hitTestกับเนื้อหาเสมือนได้
  • เพิ่มประเภทคอมโพเนนต์ใหม่ SpatialPointerComponent ซึ่งช่วยให้ไคลเอ็นต์ระบุไอคอนที่แสดงสำหรับเคอร์เซอร์ หรือปิดใช้ไอคอนได้ ปัจจุบันแนบคอมโพเนนต์นี้กับอินสแตนซ์ PanelEntity ได้เท่านั้น
  • ขอแนะนำ PanelEntity ใหม่ ซึ่งใช้ขนาดแผงเป็นเมตรหรือพิกเซล นำPanelEntity Factory รุ่นเก่าที่ใช้พารามิเตอร์ประเภทขนาด 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)
  • เราได้ลบคลาส Session ใน SceneCore ออกแล้วเพื่อใช้ Session ใน 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.setFullSpaceMode
    • import 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.getEntitiesOfType
    • import androidx.xr.scenecore.getEntityForRtEntity
  • ลบ Session.unpersistAnchor(Anchor) แล้ว
  • ลบ Session.createPersistedAnchorEntity(UUID) แล้ว

ปัญหาที่ทราบ

  • PanelEntity.setCornerRadius() และ ActivityPanelEntity.setCornerRadius() อาจไม่มีผลจนกว่าจะมีการย้ายแผงในครั้งถัดไป ซึ่งสามารถแก้ไขได้โดยการย้ายแผงไปยังตำแหน่งปัจจุบัน
  • เมื่อมีการเรียกใช้ BoundsChanged ใน ActivitySpace ActivityPose บางรายการอาจไม่อัปเดตอย่างถูกต้อง โดยจะมีการอัปเดตในการโทร OnSpaceUpdated ครั้งถัดไปในวันที่ ActivitySpace

การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบและพฤติกรรม

  • PanelEntity และ ActivityPanelEntity จะมีรัศมีมุมเริ่มต้นที่ 32dp หรือเล็กกว่า หากแผงมีความกว้างหรือความสูงน้อยกว่า 32dp

API และความสามารถใหม่ๆ

  • แนะนํา StereoSurface.CanvasShape ซึ่งช่วยให้สร้าง Canvas Spherical และ Hemispherical เพื่อแสดงผลสื่อที่สมจริงได้
  • ตอนนี้ StereoSurfaceEntity.create() ยอมรับพารามิเตอร์ CanvasShape แล้ว (ปัจจุบันระบบจะไม่สนใจพารามิเตอร์นี้ แต่จะนำไปใช้ในรุ่นต่อๆ ไป)
  • StereoSurfaceEntity.create() ไม่รับพารามิเตอร์ Dimensions อีกต่อไป แอปพลิเคชันควรควบคุมขนาดของ Canvas ผ่านการตั้งค่า CanvasShape
  • StereoSurfaceEntity มีสมาชิก CanvasShape ซึ่งตั้งค่าแบบไดนามิกได้
  • StereoSurfaceEntity.dimensions เป็นพร็อพเพอร์ตี้แบบอ่านอย่างเดียวแล้ว ตอนนี้แอปพลิเคชันควรตั้งค่า CanvasShape เพื่อเปลี่ยนมิติข้อมูล
  • StereoSurfaceEntity อนุญาตให้StereoMode รีเซ็ตได้หลังจากการก่อสร้าง

การเปลี่ยนแปลงอื่นๆ

  • ลด minSDK ในเวลาคอมไพล์เป็น 24 API ของ Jetpack XR ทั้งหมดจะยังคงต้องใช้ API 34 ในรันไทม์
  • โรงงานเซสชันของ SceneCore (Session.create) จะไม่เปิดใช้ Intent เพื่อขอสิทธิ์ SCENE_UNDERSTANDING อีกต่อไป แต่แอปพลิเคชันไคลเอ็นต์ต้องขอสิทธิ์จากผู้ใช้อย่างชัดเจนก่อนที่จะพยายามสร้าง Anchor การสร้าง 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 ที่ไม่ใช่ Android คุณจะได้รับ RuntimeException
  • การตั้งค่ากล่องท้องฟ้าเป็น null ผ่าน `SpatialEnvironment.setSpatialEnvironmentPreference()` จะไม่ทำให้กล่องท้องฟ้าเป็นสีดำทึบตามที่ระบุไว้ในเอกสาร ซึ่งอาจส่งผลให้ระบบใช้สกายบ็อกซ์เริ่มต้นหรือไม่มีการเปลี่ยนแปลงสกายบ็อกซ์ปัจจุบัน
  • ไคลเอ็นต์ SceneCore ควรเพิ่ม implementation(“com.google.guava:listenablefuture-1.0”) ลงในการกำหนดค่า Gradle สำหรับการอ้างอิงของแอป ในรุ่นต่อๆ ไป scenecore จะรวมไลบรารีนี้เป็นapi Dependency เพื่อให้ไคลเอ็นต์ไม่ต้องประกาศอย่างชัดเจน
  • SceneCore มี com.google.guava:guava-31.1-android และ com.google.protobuf:protobuf-javalite เป็นการขึ้นต่อกันแบบทรานซิทีฟโดยไม่ถูกต้อง หากการดำเนินการนี้ทำให้เกิดข้อผิดพลาดเกี่ยวกับคลาสที่ซ้ำกันในการสร้าง คุณสามารถยกเว้นการขึ้นต่อกันทั้ง 2 รายการนี้ได้อย่างปลอดภัย
  • หากแอปใช้ SceneCore และเปิดใช้ ProGuard แอปจะขัดข้องเมื่อคุณ สร้างเซสชัน คุณสามารถปิดใช้ ProGuard เพื่อแก้ปัญหานี้ได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีเปิดใช้ ProGuard ได้ที่คำแนะนำ นี้