Jetpack Compose สำหรับ XR
อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
---|---|---|---|---|
30 กรกฎาคม 2025 | - | - | - | 1.0.0-alpha05 |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ใน XR Compose คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google
เพิ่มการอ้างอิงสำหรับอาร์ติแฟกต์ที่คุณต้องการในไฟล์ build.gradle
สำหรับแอปหรือโมดูลของคุณ
ดึงดูด
dependencies { implementation "androidx.xr.compose:compose:1.0.0-alpha05" // Use to write unit tests testImplementation "androidx.xr.compose:compose-testing:1.0.0-alpha05" }
Kotlin
dependencies { implementation("androidx.xr.compose:compose:1.0.0-alpha05") // Use to write unit tests testImplementation("androidx.xr.compose:compose-testing:1.0.0-alpha05") }
ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยเราปรับปรุง Jetpack ให้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของเครื่องมือติดตามปัญหา
รุ่น 1.0
เวอร์ชัน 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) - Composable
SpatialExternalSurface
ใหม่ 2 รายการที่แสดงทรงกลม 180 และ 360 องศา (I40ef2, b/391705799) - เพิ่ม
SubspaceModifier.aspectRatio
(Ide5ab, b/399729509, b/414762147) - เพิ่ม
SceneCoreEntity
API เพื่อปรับปรุงความสามารถในการทำงานร่วมกันระหว่างSceneCore
กับ Compose สำหรับ 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 กับ ComposableSubspace
(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 ใหม่ที่ใช้รูปแบบการติดตั้งใช้งานของ ComposeAndroidView
และเลิกใช้งาน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
- ตอนนี้ Subspace สามารถจำกัดด้วยฟิลด์ของมุมมองของ
SpatialUser
ในความกว้างและความสูงได้โดยค่าเริ่มต้น หากกำหนดขอบเขตการมองเห็นไม่ได้ ระบบจะใช้ค่าความกว้างและความสูงของขอบเขตการมองเห็นเริ่มต้น - เพิ่มการเรียกกลับใหม่
onMoveStart
และonMoveEnd
ลงในตัวแก้ไขMovable
ระบบจะเรียกใช้การเรียกกลับonMoveStart
และonMoveEnd
เมื่อผู้ใช้เริ่มและหยุดการย้ายองค์ประกอบย่อยที่ใช้ร่วมกันได้ด้วยตัวแก้ไขที่เคลื่อนย้ายได้ - พารามิเตอร์
name
ถูกนำออกจาก Spatial API เช่นSpatialRow
และSpatialPanel
หากต้องการแก้ไขข้อบกพร่องของทรีการจัดองค์ประกอบเชิงพื้นที่ ให้ใช้SubspaceModifier.testTag
แทน - นำการโอเวอร์โหลดที่ไม่รองรับของ
SpatialPopup
ที่มีเพียงspatialElevationLevel
และcontent
ออกแล้ว โปรดใช้อินเทอร์เฟซที่รองรับonDimissRequest
- ระบบได้นำการเรียกกลับ
onPoseChange
จากตัวแก้ไขที่เคลื่อนย้ายได้ออกแล้ว โปรดใช้onMove
แทน SubspaceModifiers
จะไม่มีผลอีกต่อไปหากมีการยกเลิกการเชื่อมต่อหรือกำลังยกเลิกการเชื่อมต่อ- เราได้แบ่ง
SpatialRow
API ที่มีอยู่เป็นSpatialRow
และSpatialCurvedRow
หากก่อนหน้านี้ใช้พารามิเตอร์SpatialRow
curveRadius
ให้ใช้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 เช่น แผงเชิงพื้นที่และ Orbiters ซึ่งช่วยให้คุณวาง UI ที่มีอยู่แบบ 2D Compose หรือ UI ที่อิงตาม View ในเลย์เอาต์เชิงพื้นที่ได้ โดยจะแนะนำ 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
s เพื่อปรับแต่งเลย์เอาต์คอมโพเนนต์ UI เชิงพื้นที่: องค์ประกอบเหล่านี้สามารถนำกลับมาใช้ซ้ำใน UI 2 มิติได้ และจะมองเห็นแอตทริบิวต์เชิงพื้นที่ได้ก็ต่อเมื่อเปิดใช้ความสามารถเชิงพื้นที่เท่านั้น
SpatialDialog
: แผงจะเลื่อนกลับไปเล็กน้อยในแนวลึก z เพื่อแสดงกล่องโต้ตอบที่ยกระดับSpatialPopUp
: แผงจะเลื่อนกลับไปเล็กน้อยในความลึกของแกน Z เพื่อแสดงป๊อปอัปที่เลื่อนขึ้นSpatialElevation
: ตั้งค่าSpatialElevationLevel
เพื่อเพิ่มระดับความสูง
SpatialCapabilities: ความสามารถเชิงพื้นที่อาจเปลี่ยนแปลงได้เมื่อผู้ใช้โต้ตอบกับแอปหรือระบบ หรือแม้แต่แอปของคุณเองก็อาจเปลี่ยนแปลงได้ เช่น การย้ายไปยังพื้นที่บ้านหรือพื้นที่เต็ม แอปของคุณต้องตรวจสอบ
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 ในแผงที่ย้ายไปไกลมากจะทำให้เนื้อหาไปในทิศทางที่ไม่ถูกต้อง