Jetpack Compose สำหรับ XR

สร้างเลย์เอาต์ UI เชิงพื้นที่แบบประกาศที่ใช้ประโยชน์จากความสามารถเชิงพื้นที่ของ Android XR
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า รุ่นอัลฟ่า
28 มกราคม 2026 - - - 1.0.0-alpha10

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

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

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

ดึงดูด

dependencies {
    implementation "androidx.xr.compose:compose:1.0.0-alpha10"

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

Kotlin

dependencies {
    implementation("androidx.xr.compose:compose:1.0.0-alpha10")

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

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

ความคิดเห็น

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

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

ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของเครื่องมือติดตามปัญหา

รุ่น 1.0

เวอร์ชัน 1.0.0-alpha10

28 มกราคม 2026

androidx.xr.compose:compose:1.0.0-alpha10 และ androidx.xr.compose:compose-testing:1.0.0-alpha10 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha10 มีการคอมมิตเหล่านี้

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

  • การนำ API ที่เลิกใช้งานแล้วออก - ApplicationSubspace (Ia6596, b/468345186)
  • อัปเดต SpatialShape เป็นอินเทอร์เฟซที่ปิดผนึก (I7e3f5, b/460426800)
  • การนำ API ที่เลิกใช้งานแล้วออกใน SpatialAlignment (Ib0b61, b/468011887)
  • เลิกใช้งาน SpatialLayoutSpacer และเปิดตัว SpatialSpacer (I2ebf3, b/466071383)
  • อัปเดต API ของ UserSubspace เพื่อแทนที่คำศัพท์ "การล็อกแบบเลื่อน" ด้วย "การล็อกแบบยืดหยุ่น" (I9ded1, b/464035984)

เวอร์ชัน 1.0.0-alpha09

3 ธันวาคม 2025

androidx.xr.compose:compose:1.0.0-alpha09 และ androidx.xr.compose:compose-testing:1.0.0-alpha09 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha09 มีการเปลี่ยนแปลงเหล่านี้

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

  • การเพิ่มตัวแก้ไข LookAtUser และป้ายโฆษณาซึ่งช่วยให้เนื้อหันหน้าเข้าหาผู้ใช้เสมอ (I49b99)
  • เพิ่มความสามารถในการตั้งค่า InteractionPolicy เป็น SpatialExternalSurfaces และ SpatialPanels ซึ่งช่วยให้ตรวจจับการคลิกและเหตุการณ์อินพุต 3 มิติอื่นๆ ได้ (Iae155)
  • เพิ่มขนาดและrequiredSizeตัวแก้ไขโอเวอร์โหลดที่มีความกว้าง ความสูง และความลึกเป็นค่า Dp (I92f79)
  • ตอนนี้อินเทอร์เฟซ ParentLayoutParamsModifier ขยายเวลาเป็น DelegatableSubspaceNode แล้ว (I1a6d4)
  • ApplicationSubspace เลิกใช้งานแล้วเพื่อใช้ Subspace API แทน
    • มีการเปลี่ยนแปลงลักษณะการทำงานของ Subspace API เพื่อให้มีเพียง Subspace ระดับแอปพลิเคชันที่ท่าทางและสเกลที่แนะนำเท่านั้น
    • เราขอแนะนำ PlanarEmbeddedSubspace API เพื่อให้มีพื้นที่ย่อยแบบฝังในบริบท 2 มิติ (Id3343)
  • เพิ่มฟีเจอร์shouldAutoInvalidateไปยัง API ของ SubspaceModifier.Node (I93902)
  • เพิ่มrequired(Size|Width|Depth|Height)ใน API ที่อนุญาตให้นักพัฒนาแอปจำกัด@SubspaceComposableขนาดขององค์ประกอบให้อยู่ในช่วงที่เฉพาะเจาะจง โดยไม่คำนึงถึงข้อจำกัดด้านการวัดที่เข้ามาขององค์ประกอบระดับบนสุด (Ifaa78)
  • เพิ่ม SubspaceModifier.onSizeChanged ที่ให้การเรียกกลับที่เรียบง่ายและมุ่งเน้นสำหรับนักพัฒนาแอปเพื่อตอบสนองเมื่อขนาดของ @SubspaceComposable เปลี่ยนแปลง (I994f9)
  • นำ Volume API ออกแล้ว SceneCoreEntity API ควรใช้แทน Volume API (I4162b)
  • แยก SubspaceLayoutModifierNode.requestRelayout เป็น invalidateMeasurement/invalidatePlacement (I14805)
  • เพิ่ม SpatialGltfModel API ที่ช่วยให้นักพัฒนาซอฟต์แวร์แสดงผล glTF ใน Compose ได้ (Icc91f)
  • เปิดตัว SpatialGltfModel composable API สำหรับการแสดงผล glTF ได้อย่างง่ายดาย (Iade67)

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

  • แก้ไขข้อบกพร่องของเลย์เอาต์ใน SceneCoreEntity ตอนนี้ควรปฏิบัติตามข้อจำกัดอย่างถูกต้องแล้ว (I11bb8)
  • ลดระดับโมดูล jxr-compose เป็น Compile sdk = 34 (I2d5db)

เวอร์ชัน 1.0.0-alpha08

22 ตุลาคม 2025

androidx.xr.compose:compose:1.0.0-alpha08 และ androidx.xr.compose:compose-testing:1.0.0-alpha08 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha08 มีการคอมมิตเหล่านี้

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

  • เปลี่ยน ResizePolicy เพื่อยอมรับ onResizeStart, onResizeUpdate และ onResizeEnd (I7e21f)

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

  • ป้องกันไม่ให้เกิดข้อขัดข้องเมื่อทำลายกิจกรรมด้วย Subspace (I595a1)

เวอร์ชัน 1.0.0-alpha07

24 กันยายน 2025

androidx.xr.compose:compose:1.0.0-alpha07 และ androidx.xr.compose:compose-testing:1.0.0-alpha07 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha07 มีการคอมมิตเหล่านี้

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

  • ปรับปรุงเอกสารประกอบของ Kotlin สำหรับ SpatialMainPanel (I27b70, b/444467891)
  • เปิดตัว SpatialArrangement สำหรับจัดเรียงองค์ประกอบย่อยตามแกนหลักในเลย์เอาต์ 3 มิติ เช่น SpatialRow และ SpatialColumn API ใหม่นี้มีตัวเลือกการจัดเรียงที่คุ้นเคยจาก Compose 2 มิติ ซึ่งรวมถึง Start, End, Center, SpaceBetween, SpaceAround และ SpaceEvenly โดยรองรับทั้งทิศทางการจัดวางจากซ้ายไปขวาและจากขวาไปซ้ายอย่างเต็มรูปแบบ (I7db38, b/436289959)
  • เพิ่มอินเทอร์เฟซพื้นฐานสำหรับ SubspaceModifier.Node เพื่อปรับปรุงความปลอดภัยของประเภทและความสามารถในการใช้งานของอินเทอร์เฟซส่วนขยาย เช่น
    • CompositionLocalConsumerSubspaceModifierNode
    • LayoutCoordinatesAwareModifierNode
    • SubspaceLayoutModifierNode
    • CoreEntityNode (ภายใน) (Iede00, b/440599394, b/440599394)
  • ยกเลิกการจำกัด SpatialExternalSurface (I33315, b/439646773)
  • แนะนำ SubspaceModifier ให้กับ Subspace composables และแทนที่พารามิเตอร์ข้อจำกัดด้วย SubspaceModifier ที่มี SubspaceModifiers ที่เกี่ยวข้องกับขนาด หาก allowUnboundedSubspace เป็นจริง Subspaces จะยังมีข้อจำกัดที่ไม่จำกัดได้ (Ib06e6, b/433331675)
  • เลิกใช้งาน SubspaceModifiers ที่ย้ายและปรับขนาดได้เนื่องจาก DragPolicy() และ ResizePolicy() เป็นส่วนหนึ่งของ SpatialPanel และ SpatialExternalSurface API แล้ว (I397bf, b/437924639)
  • เพิ่มการรองรับ LayoutDirection ในเลย์เอาต์เชิงพื้นที่ ตอนนี้ Composable ที่ใช้ SpatialAlignment จะวางตำแหน่งองค์ประกอบอย่างถูกต้องในบริบท LTR และ RTL (I964bb, b/436300273)
  • เพิ่มพารามิเตอร์ Resizable และ Movable ลงใน Panel API เพื่อให้มั่นใจว่าลักษณะการทำงานเหล่านี้จะใช้ได้กับคอนเทนเนอร์ที่รองรับเท่านั้น (Id491c)
  • เพิ่ม sizeIn, widthIn, heightIn, depthIn SubspaceModifiers ที่ช่วยให้คุณกำหนดข้อจำกัดขั้นต่ำและสูงสุดที่แน่นอนสำหรับความกว้าง ความสูง และความลึกได้ (I1af09, b/433330761)

เวอร์ชัน 1.0.0-alpha06

13 สิงหาคม 2025

androidx.xr.compose:compose:1.0.0-alpha06 และ androidx.xr.compose:compose-testing:1.0.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha06 มีการเปลี่ยนแปลงเหล่านี้

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

  • สร้าง ComposeXrOwnerLocals ใหม่เมื่อทำลายเจ้าของวงจรชีวิต (9123ce1)

เวอร์ชัน 1.0.0-alpha05

30 กรกฎาคม 2025

androidx.xr.compose:compose:1.0.0-alpha05 และ androidx.xr.compose:compose-testing:1.0.0-alpha05 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • ทำให้คลาสคำอธิบายประกอบ SubspaceComposable เป็นแบบสาธารณะ (Ic2a34, b/399432430)
  • Composables SpatialExternalSurface ใหม่ 2 รายการที่แสดงทรงกลม 180 และ 360 องศา (I40ef2, b/391705799)
  • เพิ่ม SubspaceModifier.aspectRatio (Ide5ab, b/399729509, b/414762147)
  • เพิ่ม SceneCoreEntity API เพื่อปรับปรุงความสามารถในการทำงานร่วมกันระหว่าง SceneCore กับ Compose for XR (I50bb3, b/423020989)
  • จัดเตรียม GravityAlignedsubspace API เพื่อรองรับฟีเจอร์ GravityAligned ที่ไม่มีการปรับขนาด (I07359)

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

  • SpatialDialog() จะทำตามการกำหนดค่าการกดของ SpatialDialogProperties.dismissOnBack (Ib453b, b/416797132)
  • อัปเดต minimumPanelDimension เป็นขนาดมิติข้อมูลเริ่มต้นใหม่ที่ Dimensions(0.1f, 0.1f, 0.1f) เนื่องจากมีการแสดงผลเป็นเมตร (Ib852a)
  • ตอนนี้ Subspace และ Orbiter จะยังคงสถานะภายในไว้ในพื้นที่บ้านและเมื่อแอปทำงานในเบื้องหลัง ในโหมดพื้นที่หน้าหลัก Subspace จะยังคงตั้งค่าฉากเพื่อเตรียมพร้อมสำหรับการเปลี่ยนไปใช้โหมดพื้นที่เต็ม (I40317, b/416037751)
  • ตอนนี้ SpatialDialogs จะยังคงสถานะไว้เมื่อแอปทำงานในเบื้องหลัง (I6aa56)
  • ตอนนี้ ApplicationSubspace จะรับช่วงขนาดและตำแหน่งที่แนะนำจากระบบ (I4565f, b/418834194)
  • เพิ่มข้อความแสดงข้อผิดพลาดที่ดีขึ้นและทริกเกอร์ข้อผิดพลาดก่อนหน้านี้เมื่อใช้ SubspaceComposable ในบริบทที่ไม่ใช่ SubspaceComposable (Iee2ae, b/416484684)
  • อัปเดตExperimentalSubspaceVolumeApiจากคำเตือนเป็นข้อผิดพลาดเนื่องจากมักจะมองข้ามคำเตือนเมื่อใช้ API ที่ประกอบได้ในทางที่ผิด (I427aa, b/424864286)
  • ตอนนี้ Subspace และ ApplicationSubspace ถูกจำกัดโดย recommendedContentBoxInFullSpace ก่อนหน้านี้จะถูกจำกัดด้วยมุมมองของ SpatialUser (I41015, b/423074142)
  • อัปเดต SpatialElevation เพื่อใช้ขนาดขั้นต่ำเพื่อไม่ให้ใช้ขนาดที่ฮาร์ดโค้ดอีกต่อไป (I2dbe6, b/427785338)
  • อัปเดตวิธีที่เราใช้การทดสอบ SpatialAcitivityPanel เพื่ออัปเดตเมื่อมีการแก้ไขตัวแปรสำคัญ (I0f64d, b/427999029)
  • นำ VolumeConstraints.Unbounded ออกเพื่อตั้งค่าข้อจำกัดเริ่มต้นให้เทียบเท่ากัน (Ie24ec, b/407938414)
  • SpatialFeatheringSize ไม่ได้เผยแพร่ต่อสาธารณะอีกต่อไป (I1c15b, b/399432430)
  • เปลี่ยนชื่อ XR Placeable เป็น SubspacePlaceable เพื่อให้แตกต่างจาก Placeable ของ Compose (I74874)
  • นำการตั้งค่า Orbiter ออกและเพิ่ม shouldRenderInNonSpatial เป็นพารามิเตอร์ใหม่ นอกจากนี้ ยังนำคลาส EdgeOffset ออกและเพิ่ม orbiterOffsetType เป็นพารามิเตอร์ใหม่เพื่อรวมฟังก์ชัน Orbiter() รวมถึงเปลี่ยนชื่อ OrbiterEdge เป็น ContentEdge (Iebf3d)
  • เปลี่ยนชื่อ Measurable เป็น SubspaceMeasurable เพื่อแยกความแตกต่างของประเภทจากประเภท Measurable ของ Compose (I9726c)
  • เปลี่ยนชื่อ MeasureResult เป็น SubspaceMeasureResult (I9f34d)
  • นำ setSubspaceContent API ออกเพื่อใช้ setContent ของ Compose กับ Composable Subspace (Ifff4c, b/421427391, b/421427391)
  • เปลี่ยนชื่อ MeasurePolicy เป็น SubspaceMeasurePolicy (I37a9b, b/422553904)
  • เปลี่ยน SubspaceSemanticsInfo เป็นอินเทอร์เฟซที่ปิดสนิทเนื่องจากเราจะเพิ่มสมาชิกไม่ได้หากไม่มีค่าเริ่มต้น (I372f9, b/423704068)
  • อัปเดตเอกสาร SpatialExternalSurface เปลี่ยนชื่อ ContentSecurityLevel เป็น SurfaceProtection (I3c460, b/420982808)
  • มีตัวสร้างที่โอเวอร์โหลดสำหรับตัวแก้ไขที่เคลื่อนย้ายได้ซึ่งอนุญาตการยึด (Ic0c70)
  • เพิ่มผู้ให้บริการตำแหน่งสำหรับเคล็ดลับเครื่องมือ เพื่อให้นักพัฒนาแอปควบคุมได้ว่าเคล็ดลับเครื่องมือจะอยู่เหนือ ใต้ ซ้าย หรือขวาของจุดยึด เพิ่ม API ที่รับ Shape สำหรับแคร์เร็ต เพื่อให้ระบุรูปร่างที่กำหนดเองได้มากขึ้น (Ie513c, b/374766087, b/418854637)
  • นำ CoreEntity ออกจาก PublishedApi (Ifee05)

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

  • แก้ไขปัญหาที่ SpatialDialog จะกะพริบเมื่อแสดงผล (Ife73c, b/401619909)
  • แก้ไขปัญหาที่SpatialDialog ไม่สามารถปิดบังแผงกิจกรรมได้ (I8ca6c, b/367442109)
  • แก้ไขกล่องโต้ตอบ XR ที่ไม่แสดงเนื้อหาบางอย่าง (I17cd5, b/418062437)
  • แก้ปัญหาที่ระบบปิด SpatialPopup เมื่อคลิกภายในเนื้อหา (If262c, b/417245722)
  • แก้ไขปัญหาที่เมื่อต่อเชน resizable().movable() SpatialPanel จะปรับขนาดเป็นขนาดใหม่ไม่ถูกต้อง (I02ee3, b/422264230)
  • แก้ไขปัญหา topBar ทับซ้อนกับเมนูใน SpatialComposeVideoPlayer (Id33bc, b/427168167)
  • รัศมีมุมคงที่แสดงผลไม่ถูกต้อง (I975fe, b/428261830)

เวอร์ชัน 1.0.0-alpha04

7 พฤษภาคม 2025

androidx.xr.compose:compose:1.0.0-alpha04 และ androidx.xr.compose:compose-testing:1.0.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มอินเทอร์เฟซ CompositionLocalConsumerSubspaceModifierNode เพื่อให้ประเภท SubspaceModifier ที่กำหนดเองเข้าถึงค่าในเครื่องขององค์ประกอบได้
  • เพิ่ม SpatialPanel API ใหม่ที่ใช้รูปแบบการติดตั้งใช้งานของ Compose AndroidView และเลิกใช้งาน ViewBased SpatialPanel ก่อนหน้า
  • เพิ่มออบเจ็กต์เสริม VolumeConstraints.Unbounded ซึ่งแสดงข้อจำกัดที่ไม่จำกัด
  • เพิ่ม SubspaceModifier.onPointSourceParams เพื่ออนุญาตแหล่งเสียงเชิงพื้นที่
  • มีการเพิ่ม ApplicationSubspace สาธารณะ ซึ่งมี VolumeConstraints ที่ไม่บังคับเพื่อกำหนดพื้นที่ 3 มิติที่แอปแสดงเนื้อหาเชิงพื้นที่ได้ โดยค่าเริ่มต้น หากไม่ได้ระบุข้อจำกัดใดๆ Subspace จะถูกจำกัดด้วยมุมมองปัจจุบันของ SpatialUser ในด้านความกว้างและความสูง ผู้ใช้สามารถระบุข้อจำกัดที่จะใช้ได้หากไม่สามารถกำหนดขอบเขตการมองเห็นได้ ไม่เช่นนั้น ระบบจะใช้ค่าความกว้างและความสูงของมุมมองเริ่มต้น
  • เพิ่ม SpatialExternalSurface ซึ่งใช้ในการแสดงเนื้อหาสเตอริโอสโคปิกได้ SpatialExternalSurface ปรับแต่งได้ด้วยตัวแก้ไข (ยกเว้นอัลฟ่า) และเอฟเฟกต์ขนนกที่ขอบ
  • เพิ่มpointerHoverIconตัวปรับเปลี่ยนพื้นที่ย่อยใหม่ที่ช่วยให้ผู้ใช้ตั้งค่าไอคอนสำหรับเคอร์เซอร์เชิงพื้นที่ได้

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

  • นำข้อจำกัด RequiresApi(34) ออกจากแพ็กเกจ Jetpack XR ทั้งหมด การจำกัดนี้ซ้ำซ้อนเนื่องจากปัจจุบัน Jetpack XR ใช้ได้เฉพาะในอุปกรณ์ที่มี API ระดับ 34 ขึ้นไป (Iae0f8)
  • โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไป (Idb6b5)
  • ตอนนี้การจัดการย้อนกลับจะทำงานในแผงเชิงพื้นที่โดยไม่มีกิจกรรมที่ฝังไว้ หากต้องการให้การจัดการย้อนกลับทำงาน คุณต้องระบุ android:enableOnBackInvokedCallback="true" ใน Android Manifest
  • ตอนนี้การจัดการย้อนกลับจะใช้ได้กับกล่องโต้ตอบเชิงพื้นที่แล้ว หากต้องการให้การจัดการย้อนกลับทำงาน คุณต้องระบุ android:enableOnBackInvokedCallback="true" ในไฟล์ Manifest ของ Android
  • ตอนนี้ SpatialPanel ที่อิงตาม Compose และอิงตาม View สามารถปรับขนาดได้ตามเนื้อหา
  • ตอนนี้ นักพัฒนาแอปสามารถตั้งค่า SpatialElevationLevel ที่กำหนดเองได้แล้ว และไม่จำกัดเฉพาะระดับที่กำหนดไว้ล่วงหน้า
  • ตอนนี้คุณปรับแต่งระดับความสูงของ Orbiter ได้แล้วผ่านพารามิเตอร์ elevation
  • ตอนนี้คุณสามารถกำหนดขอบเขตของพื้นที่ย่อยตามขอบเขตการมองเห็นของSpatialUser ในแนวกว้างและแนวสูงได้โดยค่าเริ่มต้น หากกำหนดขอบเขตการมองเห็นไม่ได้ ระบบจะใช้ค่าความกว้างและความสูงของขอบเขตการมองเห็นเริ่มต้น
  • เพิ่มการเรียกกลับ onMoveStart และ onMoveEnd ใหม่ลงในตัวแก้ไข Movable ระบบจะเรียกใช้การเรียกกลับ onMoveStart และ onMoveEnd เมื่อผู้ใช้เริ่มและหยุดการย้ายองค์ประกอบย่อยที่ประกอบได้ด้วยตัวแก้ไขที่เคลื่อนย้ายได้
  • พารามิเตอร์ name ถูกนำออกจาก Spatial API เช่น SpatialRow และ SpatialPanel หากต้องการแก้ไขข้อบกพร่องของโครงสร้างต้นไม้การจัดองค์ประกอบเชิงพื้นที่ ให้ใช้ SubspaceModifier.testTag แทน
  • นำการโอเวอร์โหลดที่ไม่รองรับของ SpatialPopup ที่มีเฉพาะ spatialElevationLevel และ content ออก โปรดใช้อินเทอร์เฟซที่รองรับ onDimissRequest
  • ระบบได้นำการเรียกกลับ onPoseChange จากตัวแก้ไขที่เคลื่อนย้ายได้ออกแล้ว โปรดใช้ onMove แทน
  • SubspaceModifiers จะไม่มีผลอีกต่อไปหากมีการแยกออกหรือกำลังแยกออก
  • เราได้แบ่ง SpatialRow API ที่มีอยู่เป็น SpatialRow และ SpatialCurvedRow หากก่อนหน้านี้ใช้พารามิเตอร์ SpatialRowcurveRadius ให้ใช้ SpatialCurvedRow แทน ซึ่งมีลักษณะการทำงานเหมือนกัน
  • MainPanel และ ActivityPanel จะไม่มีแถบชื่ออีกต่อไปเมื่อเรียกใช้ในอิมเมจระบบที่เพิ่งเปิดตัวในลักษณะเดียวกัน
  • ตอนนี้ตัวปรับอัลฟ่าและตัวปรับสเกลสามารถซ้อนกันได้ และจะคูณค่าของตัวปรับเหล่านั้นเพื่อให้ได้ค่าอัลฟ่าหรือค่าสเกลสุดท้ายที่ใช้
  • onPoseChange การเรียกกลับจากตัวแก้ไขที่เคลื่อนย้ายได้ได้รับการเพิ่มประสิทธิภาพเพื่อให้การเคลื่อนไหวของท่าทางราบรื่นยิ่งขึ้น
  • ตอนนี้ตัวแก้ไขที่ย้ายและปรับขนาดได้จะเรียกใช้ฟังก์ชันเรียกกลับในเทรดหลักเพื่อให้มั่นใจว่าการเปลี่ยนแปลงสถานะจะทริกเกอร์การจัดองค์ประกอบใหม่
  • เพิ่มการสังเกตสถานะในเลย์เอาต์และเฟสการวัดเพื่อให้แน่ใจว่าการเปลี่ยนแปลงสถานะใน SubspaceLayout จะทริกเกอร์การจัดเลย์เอาต์ใหม่
  • อัปเดตเชนตัวแก้ไขที่เพิ่มประสิทธิภาพเพื่อนำตัวแก้ไขที่มีอยู่กลับมาใช้ซ้ำได้ดียิ่งขึ้น

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

  • หยุดการแสดงเลเยอร์ทึบเมื่อแสดง SpatialDialog (Ic4594)
  • ตอนนี้ระบบจะไม่สนใจคำขอเลย์เอาต์ใหม่ที่ส่งขณะที่โหนดตัวแก้ไขถูกแยกออก
  • นำเฟสการจัดเลย์เอาต์ใหม่ที่ทริกเกอร์โดยตัวแก้ไขที่ย้ายและปรับขนาดได้ออก
  • แก้ไขข้อขัดข้องใน MainPanel() ที่ประกอบได้ซึ่งเกิดขึ้นเมื่อตั้งค่ามิติข้อมูลใดมิติข้อมูลหนึ่งเป็น 0 ไม่ว่าจะโดยตรงหรือระหว่างการคำนวณเลย์เอาต์ เช่น การคำนวณ SpatialRow/SpatialColumn ตอนนี้ระบบจะซ่อนแผงแทน โปรดทราบว่าการแก้ไขนี้จะแก้ปัญหาการขัดข้องในระหว่างขั้นตอนการจัดวางโดยเฉพาะ ส่วนการปรับขนาดแผงเป็น 0 ผ่านการโต้ตอบของผู้ใช้จะได้รับการจัดการแยกต่างหาก แผงที่ซ่อนอยู่ไม่มีความสามารถในการใช้งาน UI
  • แก้ไขปัญหาเกี่ยวกับ maintainAspectRatio จากตัวแก้ไขที่ปรับขนาดได้ ตอนนี้สัดส่วนภาพควรจะคงเดิม
  • แก้ไขปัญหาเกี่ยวกับพื้นที่ย่อยที่ซ้อนกันซึ่งจะวางตำแหน่งไม่ถูกต้องสำหรับเฟรมเดียว
  • แก้ไขปัญหาที่บางครั้งระบบไม่ใช้มุมโค้งเมื่อควรใช้
  • NestedSubspaces จะไม่ปรากฏในเฟรมเดียวในตำแหน่งที่ไม่ถูกต้องอีกต่อไป

เวอร์ชัน 1.0.0-alpha03

26 กุมภาพันธ์ 2025

androidx.xr.compose:compose:1.0.0-alpha03 และ androidx.xr.compose:compose-testing:1.0.0-alpha03 จะเปิดตัวโดยไม่มีการเปลี่ยนแปลงที่สำคัญนับตั้งแต่เวอร์ชันอัลฟ่าล่าสุด เวอร์ชัน 1.0.0-alpha03 มีการคอมมิตเหล่านี้

เวอร์ชัน 1.0.0-alpha02

12 กุมภาพันธ์ 2025

androidx.xr.compose:compose:1.0.0-alpha02 และ androidx.xr.compose:compose-testing:1.0.0-alpha02 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้แผงกิจกรรมสามารถปิดทึบเนื้อหาเมื่อเปิดใช้งานกล่องโต้ตอบเชิงพื้นที่ได้แล้ว
  • ตอนนี้คุณใช้ Orbiter API ในบริบท SubspaceComposable ได้แล้ว และจะแนบ Orbiter กับองค์ประกอบหลักที่ใช้ SubspaceLayout ที่ใกล้ที่สุด
  • เปิดตัว LayoutCoordinatesAwareModifierNode เพื่ออนุญาตตัวแก้ไขตามตำแหน่งที่กำหนดเอง
  • เพิ่มวิธีการวงจรการแนบ/ถอดออกไปยัง SubspaceModifier.Node
  • เพิ่ม scaleWithDistance ลงในตัวแก้ไขที่เคลื่อนย้ายได้ เมื่อเปิดใช้ scaleWithDistance องค์ประกอบของพื้นที่ย่อยที่ย้ายจะขยายหรือหด นอกจากนี้ยังคงรักษาสเกลที่ชัดเจนซึ่งมีอยู่ก่อนการเคลื่อนไหวด้วย

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

  • นำ SessionCallbackProvider ออกเพื่อใช้ SpatialCapabilities แทน

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

  • ลด minSDK เหลือ 24 API ของ Jetpack XR ทั้งหมดจะยังคงต้องใช้ API 34 ในรันไทม์
  • Orbiter EdgeOffset.inner, EdgeOffset.outer และ EdgeOffset.overlap ไม่ใช่@Composableเมธอดอีกต่อไป ซึ่งทำให้ใช้ในบริบทที่ไม่สามารถคอมโพสได้
  • อัปเดตระดับความสูงเชิงพื้นที่ให้ตรงกับข้อกำหนด UX ล่าสุด
  • ติดตั้งใช้งานอินเทอร์เฟซ SubspaceSemanticsInfo ใน MeasurableLayout
  • เปลี่ยนชื่อ SubspaceModifierElement เป็น SubspaceModifierNodeElement แล้ว

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

  • แก้ไขเพื่อทำให้การสั่งซื้อ SubspaceModifier มีเสถียรภาพ SubspaceModifier ควรทำงานได้อย่างน่าเชื่อถือมากขึ้น ตอนนี้คุณควรใช้ตัวแก้ไขออฟเซ็ต หมุน ปรับขนาด เคลื่อนย้ายได้ และปรับขนาดได้ในลำดับใดก็ได้

เวอร์ชัน 1.0.0-alpha01

12 ธันวาคม 2024

ระบบจะถอนการอ้างสิทธิ์androidx.xr.compose:compose-*1.0.0-alpha01

ฟีเจอร์ของรุ่นแรก

  • การเปิดตัว Jetpack Compose สำหรับ XR เวอร์ชันนักพัฒนาครั้งแรก ใช้แนวคิด Compose ที่คุ้นเคย เช่น แถวและคอลัมน์ เพื่อสร้างเลย์เอาต์ UI เชิงพื้นที่ใน XR ไม่ว่าคุณจะพอร์ตแอป 2 มิติที่มีอยู่ไปยัง XR หรือสร้างแอป XR ใหม่ตั้งแต่ต้น ไลบรารีนี้มี Subspace และ Spatial Composables เช่น แผงเชิงพื้นที่และ Orbiter ซึ่งช่วยให้คุณวาง UI ที่มีอยู่ซึ่งอิงตาม Compose หรือ Views ในเลย์เอาต์เชิงพื้นที่ได้ โดยจะแนะนำ Volume subspace composable ซึ่งช่วยให้คุณวางเอนทิตี SceneCore เช่น โมเดล 3 มิติ ไว้สัมพันธ์กับ UI ได้ ดูข้อมูลเพิ่มเติมได้ในคู่มือนักพัฒนาซอฟต์แวร์นี้

    • Subspace: วาง Composable นี้ได้ทุกที่ภายในลําดับชั้น UI ของแอป ซึ่งช่วยให้คุณรักษาเลย์เอาต์สําหรับ UI 2 มิติและเชิงพื้นที่ได้โดยไม่สูญเสียบริบทระหว่างไฟล์ ซึ่งจะช่วยให้แชร์สิ่งต่างๆ เช่น สถาปัตยกรรมของแอปที่มีอยู่ระหว่าง XR กับอุปกรณ์รูปแบบอื่นๆ ได้ง่ายขึ้นโดยไม่ต้องยกสถานะผ่านทั้งโครงสร้าง UI หรือปรับโครงสร้างแอปใหม่

    • SpatialPanel: SpatialPanel เป็น Subspace Compositable ที่ให้คุณแสดงเนื้อหาแอปได้ เช่น คุณอาจแสดงการเล่นวิดีโอ ภาพนิ่ง หรือเนื้อหาอื่นๆ ใน SpatialPanel

    • Orbiter: Orbiter คือคอมโพเนนต์ UI เชิงพื้นที่ โดยออกแบบมาให้แนบกับแผงเชิงพื้นที่ที่เกี่ยวข้อง และมีรายการการนำทางและการดำเนินการตามบริบทที่เกี่ยวข้องกับแผงเชิงพื้นที่นั้น เช่น หากคุณสร้างแผงเชิงพื้นที่เพื่อแสดงเนื้อหาวิดีโอ คุณจะเพิ่มตัวควบคุมการเล่นวิดีโอภายในออบิเตอร์ได้

    • ปริมาณ: วางเอนทิตี SceneCore เช่น โมเดล 3 มิติ เทียบกับ UI

  • เลย์เอาต์เชิงพื้นที่ คุณสร้างแผงเชิงพื้นที่หลายแผงและวางไว้ภายในเลย์เอาต์เชิงพื้นที่ได้โดยใช้ SpatialRow, SpatialColumn, SpatialBox และ SpatialLayoutSpacer ใช้ SubspaceModifier เพื่อปรับแต่งเลย์เอาต์

  • คอมโพเนนต์ UI เชิงพื้นที่: องค์ประกอบเหล่านี้สามารถนำกลับมาใช้ซ้ำใน UI 2 มิติได้ และแอตทริบิวต์เชิงพื้นที่จะมองเห็นได้เมื่อเปิดใช้ความสามารถเชิงพื้นที่เท่านั้น

    • SpatialDialog: แผงจะเลื่อนกลับไปเล็กน้อยในแนวลึก z เพื่อแสดงกล่องโต้ตอบที่ยกระดับ
    • SpatialPopUp: แผงจะเลื่อนกลับไปเล็กน้อยในความลึกของแกน Z เพื่อแสดงป๊อปอัปที่เลื่อนขึ้น
    • SpatialElevation: ตั้งค่า SpatialElevationLevel เพื่อเพิ่มระดับความสูงได้
  • SpatialCapabilities: ความสามารถเชิงพื้นที่อาจเปลี่ยนแปลงได้เมื่อผู้ใช้โต้ตอบกับแอปหรือระบบ หรือแม้แต่แอปของคุณเองก็สามารถเปลี่ยนแปลงได้ เช่น การย้ายไปยัง Home Space หรือ Full Space แอปของคุณต้องตรวจสอบ LocalSpatialCapabilities.current เพื่อพิจารณาว่า API ใดบ้างที่รองรับในสภาพแวดล้อมปัจจุบัน เพื่อหลีกเลี่ยงปัญหา isSpatialUiEnabled: องค์ประกอบ UI เชิงพื้นที่ (เช่น SpatialPanel) isContent3dEnabled: ออบเจ็กต์ 3 มิติ isAppEnvironmentEnabled: สภาพแวดล้อม isPassthroughControlEnabled: แอปพลิเคชันควบคุมสถานะการส่งผ่านได้หรือไม่ isSpatialAudioEnabled: เสียงรอบทิศทาง

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

  • ปัจจุบันต้องใช้ minSDK 30 เพื่อใช้ Jetpack Compose สำหรับ XR วิธีแก้ปัญหาชั่วคราวคือคุณอาจเพิ่มรายการไฟล์ Manifest ต่อไปนี้ <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> เพื่อให้สามารถสร้างและเรียกใช้ด้วย minSDK 23 ได้
  • ปัจจุบันแอป Jetpack XR ต้องขอสิทธิ์ android.permission.SCENE_UNDERSTANDING ใน AndroidManifest
  • เมื่อแอปเปิดตัวใน Full Space โดยตรงโดยใช้พร็อพเพอร์ตี้ PROPERTY_XR_ACTIVITY_START_MODE ในไฟล์ Manifest ระบบจะเปิดกิจกรรม/แอปพลิเคชันใน Home Space ก่อน จากนั้นจึงเปลี่ยนไปเป็น Full Space
  • glTF ใน Volume Composables อาจกะพริบในตำแหน่งที่ไม่ถูกต้องในตอนแรก
  • การใช้ SpatialDialog ในแผงที่ย้ายไปไกลมากจะทำให้เนื้อหาไปในทิศทางที่ไม่ถูกต้อง