Jetpack Compose สำหรับ XR
อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | เวอร์ชันอัลฟ่า |
---|---|---|---|---|
12 กุมภาพันธ์ 2025 | - | - | - | 1.0.0-alpha02 |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ของ XR Compose คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมในที่เก็บ Maven ของ Google
เพิ่มการอ้างอิงสำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle
สำหรับแอปหรือโมดูล
ดึงดูด
dependencies { implementation "androidx.xr.compose:compose:1.0.0-alpha01" // Use to write unit tests testImplementation "androidx.xr.compose:compose-testing:1.0.0-alpha01" }
Kotlin
dependencies { implementation("androidx.xr.compose:compose:1.0.0-alpha01") // Use to write unit tests testImplementation("androidx.xr.compose:compose-testing:1.0.0-alpha01") }
ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพิงบิวด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยปรับปรุง Jetpack ได้ โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมีแนวคิดในการปรับปรุงคลังนี้ โปรดดูปัญหาที่มีอยู่ในคลังนี้ก่อนสร้างปัญหาใหม่ คุณสามารถเพิ่มการโหวตให้กับปัญหาที่มีอยู่ได้โดยคลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของเครื่องมือติดตามปัญหา
รุ่น 1.0
เวอร์ชัน 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 ใหม่ตั้งแต่ต้น ไลบรารีนี้มีองค์ประกอบย่อยและองค์ประกอบเชิงพื้นที่ เช่น แผงเชิงพื้นที่และออบิเตอร์ ซึ่งช่วยให้คุณวาง UI ของ Compose 2 มิติหรือ UI ที่อิงตาม Views ที่มีอยู่ลงในเลย์เอาต์เชิงพื้นที่ได้ โดยมีการเปิดตัวองค์ประกอบย่อยของ Volume ซึ่งช่วยให้คุณวางเอนทิตี SceneCore เช่น โมเดล 3 มิติ เทียบกับ UI ได้ ดูข้อมูลเพิ่มเติมในคู่มือนักพัฒนาซอฟต์แวร์นี้
Subspace
: คอมโพสิชันนี้สามารถวางไว้ที่ใดก็ได้ภายในลําดับชั้น UI ของแอป ซึ่งช่วยให้คุณคงเลย์เอาต์สําหรับ UI 2 มิติและ UI เชิงพื้นที่ไว้ได้โดยไม่สูญเสียบริบทระหว่างไฟล์ วิธีนี้ช่วยให้แชร์สิ่งต่างๆ เช่น สถาปัตยกรรมแอปที่มีอยู่ระหว่าง XR กับอุปกรณ์รูปแบบอื่นๆ ได้ง่ายขึ้นโดยไม่ต้องยกสถานะผ่านทั้งต้นไม้ UI หรือปรับโครงสร้างแอปใหม่SpatialPanel: แผงเชิงพื้นที่คือคอมโพสิชันย่อยที่ให้คุณแสดงเนื้อหาแอป เช่น คุณสามารถแสดงการเล่นวิดีโอ ภาพนิ่ง หรือเนื้อหาอื่นๆ ในแผงเชิงพื้นที่
Orbiter: Orbiter คือคอมโพเนนต์ UI เชิงพื้นที่ ออกแบบมาเพื่อแนบกับแผงเชิงพื้นที่ที่เกี่ยวข้อง และมีรายการการนำทางและการดำเนินการตามบริบทที่เกี่ยวข้องกับแผงเชิงพื้นที่นั้น เช่น หากสร้างแผงเชิงพื้นที่เพื่อแสดงเนื้อหาวิดีโอ คุณสามารถเพิ่มตัวควบคุมการเล่นวิดีโอไว้ในภาพโคจร
ปริมาตร: วางเอนทิตี SceneCore เช่น โมเดล 3 มิติ โดยสัมพันธ์กับ UI
เลย์เอาต์พื้นที่ทำงาน: คุณสร้างแผงพื้นที่ทำงานหลายรายการและวางไว้ในเลย์เอาต์พื้นที่ทำงานได้โดยใช้
SpatialRow
,SpatialColumn
,SpatialBox
และSpatialLayoutSpacer
ใช้SubspaceModifier
เพื่อปรับแต่งเลย์เอาต์คอมโพเนนต์ UI เชิงพื้นที่: คุณนําองค์ประกอบเหล่านี้มาใช้ซ้ำใน UI 2 มิติได้ และแอตทริบิวต์เชิงพื้นที่จะปรากฏขึ้นก็ต่อเมื่อเปิดใช้ความสามารถเชิงพื้นที่เท่านั้น
SpatialDialog
: แผงจะดันกลับเล็กน้อยในเชิงลึกเพื่อแสดงกล่องโต้ตอบที่ยกระดับSpatialPopUp
: แผงจะดันกลับเล็กน้อยใน Z-depth เพื่อแสดงป๊อปอัปที่ยกสูงขึ้นSpatialElevation
:SpatialElevationLevel
สามารถตั้งค่าเพื่อเพิ่มระดับความสูงได้
SpatialCapabilities: ความสามารถเชิงพื้นที่อาจเปลี่ยนแปลงเมื่อผู้ใช้โต้ตอบกับแอปหรือระบบ หรือแอปของคุณเองก็อาจเปลี่ยนแปลงความสามารถเชิงพื้นที่ได้ เช่น การเปลี่ยนเป็นโหมดพื้นที่ในบ้านหรือพื้นที่เต็ม แอปของคุณต้องตรวจสอบ
LocalSpatialCapabilities.current
เพื่อดูว่าระบบรองรับ API ใดบ้างในสภาพแวดล้อมปัจจุบัน เพื่อหลีกเลี่ยงปัญหาisSpatialUiEnabled
: องค์ประกอบ UI แบบ 3 มิติ (เช่น 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 - เมื่อแอปเปิดในโหมดเต็มหน้าจอโดยตรงโดยใช้พร็อพเพอร์ตี้
PROPERTY_XR_ACTIVITY_START_MODE
ในไฟล์ Manifest กิจกรรม/แอปพลิเคชันจะเปิดในโฮมสเปซก่อน จากนั้นจึงเปลี่ยนไปเป็นโหมดเต็มหน้าจอ - ในตอนแรก glTF ใน Volume Composables อาจกะพริบในตำแหน่งที่ไม่ถูกต้อง
- การใช้ SpatialDialog ในแผงที่มีการย้ายไปมากจะดันเนื้อหาไปในทิศทางที่ไม่ถูกต้อง