Jetpack Compose สำหรับ XR
| อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
|---|---|---|---|---|
| 21 ตุลาคม 2569 | - | - | 1.0.0-beta02 | - |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ใน XR Compose คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google
เพิ่มทรัพยากร Dependency สำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle สำหรับแอปหรือโมดูล ดังนี้
ดึงดูด
dependencies { implementation "androidx.xr.compose:compose:1.0.0-beta02" // Use to write unit tests testImplementation "androidx.xr.compose:compose-testing:1.0.0-beta02" }
Kotlin
dependencies { implementation("androidx.xr.compose:compose:1.0.0-beta02") // Use to write unit tests testImplementation("androidx.xr.compose:compose-testing:1.0.0-beta02") }
ดูข้อมูลเพิ่มเติมเกี่ยวกับการขึ้นต่อกันได้ที่เพิ่มการขึ้นต่อกันของบิลด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยเราปรับปรุง Jetpack ให้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากคุณพบปัญหาใหม่หรือมีแนวคิดในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ในคลังนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดยคลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของ Issue Tracker
รุ่น 1.0
เวอร์ชัน 1.0.0-beta02
21 ตุลาคม 2569
androidx.xr.compose:compose:1.0.0-beta02 และ androidx.xr.compose:compose-testing:1.0.0-beta02 เผยแพร่แล้ว เวอร์ชัน 1.0.0-beta02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ไลบรารีจะกำหนดเป้าหมายเป็น Kotlin 2.2 และต้องใช้ kotlinc 2.2 (I82396, b/498369605)
- เปลี่ยนชื่อพารามิเตอร์
halfLifeMsของFollowMode.soft()เป็นhalfLifeMillisแล้ว (I39187) - แปลง
PitchLimitsเป็น@JvmInline value classโดยรวม Float 2 รายการเป็นLongเพื่อกำจัดการจัดสรรออบเจ็กต์ (Id43c3) - เพิ่มพารามิเตอร์ใหม่สำหรับ
FollowMode.soft: พารามิเตอร์halfLifeMs,startDelayและstartThresholdsนำพารามิเตอร์durationMsออกเนื่องจากไม่จำเป็นต้องใช้อีกต่อไปเมื่อเราเปลี่ยนจากอัลกอริทึมsmoothStepเป็นอัลกอริทึมexponentialDecay(If0140) - นำโอเวอร์โหลด
SpatialActivityPanelที่เลิกใช้งานแล้วออก ใช้โอเวอร์โหลดของSpatialActivityPanelที่ยอมรับSpatialActivityPanelControllerแทน (I5abc3) - เปิดใช้การเปลี่ยนระหว่างเนื้อหา Composable แบบ 3 มิติและ 2 มิติภายในกิจกรรมเดียวใน
FullSpaceModeการเปลี่ยนแปลงนี้ถูกจำกัดโดยSpatialComposeFlags.isMainPanelResetOnSubspaceDisposeEnabled(I4e237) - โอเวอร์โหลด
Subspaceเวอร์ชันทดลองที่เปิดเผยซึ่งใช้พารามิเตอร์FollowTargetเพื่อรองรับเนื้อหาต่อไปนี้ (Iec1a9) - นำตัวแก้ไขที่เคลื่อนย้ายได้ซึ่งเลิกใช้งานแล้วออก โปรดใช้ตัวแก้ไขแบบเคลื่อนย้ายได้ใหม่แทนซึ่งยอมรับ
MovePolicyใหม่เป็นพารามิเตอร์ (Ib135d) - นำ
DragPolicyที่เลิกใช้งานแล้วออก โปรดใช้SubspaceModifier.movable()แทน (I108d4) - เลิกใช้งาน
SliderและRangeSliderแบบโอเวอร์โหลดที่ไม่มีสถานะเพื่อใช้เวอร์ชันที่มีสถานะแทน เปลี่ยนชื่อactiveRangeStartและactiveRangeEndในRangeSliderStateเป็นstartValueและendValueโดยเลิกใช้งาน Slider API เวอร์ชันเก่าที่ไม่ได้โปรโมตและอยู่ในขั้นทดลองด้วยDeprecationLevel.HIDDEN(If8995)
แก้ไขข้อบกพร่อง
- แก้ไข
RotateToLookAtUserโดยเปิดตัวposeInActivitySpaceเพื่อให้แน่ใจว่ามีการคำนวณท่าทางที่ถูกต้องสำหรับพื้นที่ย่อยทุกประเภท รวมถึงพื้นที่ย่อยที่แนบกับ Anchor หรือผู้ใช้Ica367b - แก้ไขข้อขัดข้องของข้อจำกัดเมื่อแนบ Orbiter กับแผงขนาดใหญ่ (I8c4bf)
- แก้ไขข้อบกพร่องใน
SubspaceLayoutNodeที่removeAll()ทำให้เกิดการจัดสรรArrayListโดยไม่จำเป็น นอกจากนี้ยังแก้ไขประสิทธิภาพการคำนวณความลึกด้วย I34a10a - อัปเดตทรัพยากร Dependency
androidx.lifecycle:lifecycle-runtimeเป็น 2.10.0 แล้ว ต้องใช้เวอร์ชันนี้เพื่อให้การตรวจสอบ Lint ของรันไทม์วงจรที่รวมมาทำงานร่วมกับ AGP เวอร์ชัน 9.5.0-alpha04 ขึ้นไปได้ (I99bfd, b/556807521) - ปรับปรุง kdocs ที่เกี่ยวข้องกับ
AudioOutputProviderเพื่อไฮไลต์ว่าไม่ควรนำมาใช้ซ้ำกับอินสแตนซ์ExoPlayerหลายรายการ (I6b18e) - แก้ไขปัญหาการสะกดและไวยากรณ์เล็กน้อยใน kdoc (Id3ba6)
ปัญหาที่ทราบ
androidx.xr.composeเวอร์ชันนี้ขึ้นอยู่กับandroidx.xr.scenecore:1.0.0-rc01ซึ่งมีหน่วยความจำรั่วไหลที่ทราบ ในการกำหนดค่าบิลด์ คุณอาจลบล้างทรัพยากร DependencySceneCoreเป็นเวอร์ชัน1.0.0อย่างชัดแจ้ง ซึ่งรวมถึงการแก้ไขหน่วยความจำรั่วไหล
เวอร์ชัน 1.0.0-beta01
23 กันยายน 2569
androidx.xr.compose:compose:1.0.0-beta01 และ androidx.xr.compose:compose-testing:1.0.0-beta01 เผยแพร่แล้ว เวอร์ชัน 1.0.0-beta01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำ
DragPolicyที่เลิกใช้งานแล้วออก โปรดใช้SubspaceModifier.movable()แทน (I108d4) - นำ
ResizePolicyที่เลิกใช้งานแล้วและการใช้งานในSpatialPanelและSpatialExternalSurfaceออก นำฟังก์ชันSubspaceModifier.resizableที่เลิกใช้งานแล้วออก โปรดใช้SubspaceModifier.resizableใหม่กับResizePolicyใหม่แทน (I59e6b) - เพิ่มพารามิเตอร์
isPitchUpdateEnabledเพื่อให้เปิดหรือปิดใช้การติดตามระดับเสียงได้อย่างอิสระ (Ie9e86) - นำความสามารถในการเป็นค่า Null ของ
pitchLimitsออกและเปลี่ยนชื่อPitchLimits.UNCONSTRAINEDเป็นPitchLimits.FullRange(I0154f) - ตอนนี้
ExposedDropdownMenuเป็นฟังก์ชันส่วนขยายในExposedDropdownMenuBoxScopeแทนที่จะเป็นสมาชิก คุณอาจต้องอัปเดตโค้ดด้วยการนำเข้าใหม่ (Ie8a65) - นำคลาส
SurfaceProtectionที่เลิกใช้งานแล้วออก โปรดใช้SpatialExternalSurfaceProtectionแทน (Iab2c6) - เราเลิกใช้งานฟังก์ชัน Orbiter ที่ใช้
OrbiterPoseProviderแล้ว และเปลี่ยนไปใช้ฟังก์ชันที่ใช้SpatialAlignmentแทน (I4d12b) - ตอนนี้
SpatialActivityPanelต้องใช้SpatialActivityPanelController(สร้างอินสแตนซ์โดยใช้rememberSpatialActivityPanelController) เพื่อเปิดและจัดการกิจกรรมที่ฝังไว้ (Id25c6) - นำพารามิเตอร์
upDirectionออกจากrotateToLookAtUserและเพิ่มพารามิเตอร์ข้อจำกัดการหมุน (isYawUpdateEnabledและpitchLimits) (I1370a)
แก้ไขข้อบกพร่อง
- แก้ไขปัญหาต่างๆ เกี่ยวกับ
InteractionPolicyแล้ว ข้อขัดข้องเกิดขึ้นหากมีเหตุการณ์อินพุตเกิดขึ้นทันทีที่ Composable หรือองค์ประกอบย่อย (เช่น Orbiter) เริ่มต้นลำดับการกำจัด นอกจากนี้ยังแก้ไขปัญหาที่องค์ประกอบย่อยจะได้รับเหตุการณ์การวางเมาส์เหนือด้วย (Ifc477) - ลดขนาดแผงใน
RotateToLookAtUserActivityเพื่อป้องกันไม่ให้เกิดการตัดภาพในอุปกรณ์ที่มี FOV ขนาดเล็ก (I8d672)
ปัญหาที่ทราบ
- มีปัญหาเกี่ยวกับแผง Compose XR ซึ่งการสร้างแผงจำนวนมากในกิจกรรมเดียวอาจทำให้สิ่งที่กำลังดูอยู่เสียหาย แม้ว่าจะทำลายแผงแล้วก็ตาม
เวอร์ชัน 1.0.0-alpha17
12 สิงหาคม 2569
androidx.xr.compose:compose:1.0.0-alpha17 และ androidx.xr.compose:compose-testing:1.0.0-alpha17 เผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha17 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำคลาสค่า
Meterออก โดยจะแทนที่ด้วยvirtualPixelDensityในScenecore(I690ee) - ตอนนี้
SpatialGltfModelAPI อยู่ในขั้นทดลองและต้องเลือกใช้จึงจะใช้งานได้ (I4557e) - ทำให้
systemเป็นค่าที่ปรับขนาดได้และเป็นค่า Null ได้ (Ib0093) - แสดง
DensityในSubspaceSemanticsInfoสำหรับการทดสอบ (I2e826) - เปลี่ยนชื่อตัวเลือกเริ่มต้น
ResizePolicyเป็นsystemและเพิ่มตัวเลือกDefaultใหม่โดยไม่มีพารามิเตอร์ (Ic8b16) - ทำเครื่องหมาย
FollowTargetว่าเป็นเวอร์ชันทดลอง ตอนนี้FollowingSubspaceAPI ทั้งหมดอยู่ในขั้นทดลอง (Id4ee3) - นำ API
GltfAnimationออก (Ic2894) - เปลี่ยนชื่อเมธอด
MovePolicy.default()ที่กำหนดพารามิเตอร์เป็นMovePolicy.system()แล้ว เปิดตัวพร็อพเพอร์ตี้val MovePolicy.Defaultเพื่อแสดงลักษณะการเคลื่อนไหวเริ่มต้นมาตรฐาน (Iedcc9) - ขยายข้อกำหนดการเลือกใช้
ExperimentalMoveAnchorPolicyไปยังPlaneSemanticและPlaneOrientation(Ief927) - นำ
resetMinsออกจากVolumeConstraints.offset(Ib2f2f) - นำฟังก์ชัน
SceneCoreEntitySizeAdapterที่เลิกใช้งานแล้วออก (Ib6722) - นำ
Subspaceที่เลิกใช้งานแล้วซึ่งโอเวอร์โหลดด้วยallowUnboundedSubspaceออก (I8e97f) - นำโอเวอร์โหลดตัวแก้ไขความหมายที่เลิกใช้งานแล้วออก (I4ac10)
แก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่องค์ประกอบย่อยของ
Composableที่มีInteractionPolicyแนบอยู่ทริกเกอร์เหตุการณ์อินพุต (Icdba6)
เวอร์ชัน 1.0.0-alpha16
15 กรกฎาคม 2569
androidx.xr.compose:compose:1.0.0-alpha16 และ androidx.xr.compose:compose-testing:1.0.0-alpha16 เผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha16 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำ
ComponentOverrideAPI ออก (I820c4) - API
GltfAnimationและSpatialGltfModelAnimationได้รับการทำเครื่องหมายว่าอยู่ระหว่างการทดสอบ พร็อพเพอร์ตี้บางรายการเปลี่ยนเป็น Getter (I8d689, b/524771027) - แก้ไขลักษณะการทำงานของความหนาแน่นโดยรวมโดยกำหนดให้การแปลงระหว่างเมตรและพิกเซลเป็นค่าคงที่ เลิกใช้งาน Meter.kt แล้ว ตอนนี้คุณใช้
Session.scene.virtualPixelDensityแทนได้ (I122ff, b/430097855, b/474168798) - อัปเดตตัวแก้ไขที่ปรับขนาดได้ให้ใช้
ResizePolicyแทนตัวแก้ไข 2 ตัว (I7fb0f, b/496257436, b/519672992) - เพิ่มพารามิเตอร์ tolerance:
Dp = Dp(0.5f)ลงในการยืนยันความเท่ากันของมิติข้อมูลและตำแหน่งจุดลอยตัวแบบสาธารณะทั้งหมดในSubspaceAssertions.ktลักษณะการทำงานเริ่มต้นของความคลาดเคลื่อน (0.5.dp) มีการบันทึกไว้อย่างครบถ้วน (I266cb, b/521491915) - เพิ่มโอเวอร์โหลดที่เคลื่อนย้ายได้ด้วยพารามิเตอร์
movePolicyและเลิกใช้งานtransformingMovableและmovable(Ic88c1, b/481781189) - เพิ่มตัวแปรใหม่ที่ไม่ใช่แบบอินเทอร์แอกทีฟของรายการมาตรฐานและรายการที่แบ่งกลุ่มซึ่งเป็นไปตามข้อกำหนดของ Material Expressive เวอร์ชันที่ไม่แสดงออกเลิกใช้งานแล้ว (Ide4de, b/491994186)
- สำหรับ Subspace ตอนนี้เราเลิกใช้งานและซ่อนพารามิเตอร์
allowUnboundedSubspaceแล้ว ตอนนี้คุณควรใช้ลักษณะการทำงานที่ไม่มีขอบเขตได้โดยใช้SubspaceModifier.requiredSizeIn(maxWidth=Dp.Infinity,maxHeight=Dp.Infinity,maxDepth=Dp.Infinity) ในตัวแก้ไข Subspace พารามิเตอร์allowUnboundedSubspaceถูกนำออกจากFollowingSubspace(Ia72ae, b/433624021) - แปลง
Session.createเป็นฟังก์ชันระงับแล้ว (I5d27f) - เพิ่ม
SubspaceModifier.spatializedAudioOutputซึ่งช่วยให้สามารถเล่นเสียงรอบทิศทางผ่านExoPlayerหรือผ่านSoundEffectPlayer(I46697, b/489421980, b/497867019) - อัปเดต
ComponentActivity.requestHomeSpace()และrequestFullSpace()เพื่อแสดงผลSpaceRequestResultสำหรับการยืนยันสถานะ (If1672) - อัปเดต
AnchorEntityให้เรียกว่าAnchorSpace(Ifa95e, b/513619219) - Unrestricted
fromResourcemethod fromSpatialGltfModelSource(I1f5a1, b/503047416) - สมาชิก
SubspaceSemanticsMatcherเป็นแบบสาธารณะ: พร็อพเพอร์ตี้description, เมธอด Companion Factory (expectValue,keyIsDefined,keyNotDefined), ฟังก์ชันสมาชิก (matches,matchesAny) และโอเปอเรเตอร์ (and,or,not) (I972a4, b/460427288) - อัปเดต
SubspaceModifier.semantics,SubspaceModifier.testTag,SubspaceSemanticsInfo,SubspaceSemanticsModifierNodeให้ใช้ประเภทความหมายเชิงพื้นที่ที่ดูแลจัดการ (I80dea, b/460427288) - เปลี่ยนชื่อ
positionเป็นalignในSpatialAlignmentและนำเมธอดออฟเซ็ตทิศทางแต่ละรายการออกเพื่อใช้ APIalignแบบรวม (I9bdb2, b/479805937) - นำ API โหมดพื้นที่ทำงานที่เลิกใช้งานแล้วออกจาก
SpatialConfiguration(I1ef5c, b/458712461) - เปิดตัว
SubspaceSemanticsConfigurationนี่คือการกำหนดค่าพร็อพเพอร์ตี้ความหมายสำหรับโหนดเชิงพื้นที่ คลาสนี้จะแสดงเมธอดการค้นหาสำหรับความหมาย 3 มิติอย่างปลอดภัยโดยไม่เปิดเผยความสามารถด้านความหมาย 2 มิติพื้นฐานแก่ผู้ใช้ภายนอก (Id025e, b/460427288) - เปิดตัว
SubspaceSemanticsPropertyReceiver: Wrapper เฉพาะที่จำกัดพร็อพเพอร์ตี้คอนเทนเนอร์เลย์เอาต์ 3 มิติให้อยู่ในฟิลด์ที่ถูกต้อง (เริ่มแรกคือtestTagและcontentDescription) (I5cf5c, b/460427288)
แก้ไขข้อบกพร่อง
- อัปเดต
hasContentDescriptionของตัวแก้ไขความหมายให้เป็นค่าเริ่มต้นสำหรับการจับคู่สตริงย่อย (I08214) - เพิ่ม
FollowBehavior.ExponentialDecay()แบบจำกัดซึ่งจะให้ลักษณะการทำงานแบบติดตามอย่างนุ่มนวลตามหลักฟิสิกส์แบบยืดหยุ่น (I7449c, b/485639909, b/500493335)
API ส่วนใหญ่จะได้รับผลกระทบจากการดำเนินการนี้ กล่าวคือ CompositionLocal LocalSession และ CompositionLocals ทั้งหมดที่ขึ้นอยู่กับ LocalSession (เช่น LocalSpatialConfiguration, LocalSpatialCapabilities ฯลฯ) จะเปลี่ยนไปใช้ null หรือเวอร์ชันที่ไม่ใช่ XR ก่อนที่จะมีการเริ่มต้น Session
เมื่อ Session พร้อมใช้งาน ระบบจะทริกเกอร์การจัดองค์ประกอบใหม่ด้วยสถานะที่ถูกต้อง (I0cfa4, b/514712835, b/514712835)
- ชี้แจงเอกสารประกอบสำหรับ
ComponentActivity.requestHomeSpaceและComponentActivity.requestFullSpaceเกี่ยวกับลักษณะการทำงานของการระงับ การยกเลิก และการทำงานพร้อมกัน อัปเดตการทดสอบเพื่อยืนยันการเผยแพร่CancellationException(I22f75, b/493289528)
เวอร์ชัน 1.0.0-alpha15
17 มิถุนายน 2026
androidx.xr.compose:compose:1.0.0-alpha15 และ androidx.xr.compose:compose-testing:1.0.0-alpha15 เผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha15 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เลิกใช้งาน
ResizePolicyและตัวแก้ไข resizable แบบเก่า โดยแทนที่ด้วยโอเวอร์โหลดSubspaceModifier.resizableและSubspaceModifier.transformingResizableใหม่ (I9e4bc) - อัปเดต
SpatialGltfModelAPI: เพิ่มการรองรับการโหลดโมเดลจากทรัพยากรผ่านSpatialGltfModelSourcefromResourceเปลี่ยนชื่อความเร็วเป็นplaybackSpeedในSpatialGltfModelAnimationและเพิ่มเมธอด resume()SpatialGltfModelStatus.Loaded และ Loading เป็นออบเจ็กต์แล้ว (I523de) - ทำเครื่องหมาย
rotateToLookAtUserเป็น API เวอร์ชันทดลอง (I86c16) - ย้ายและเปลี่ยนชื่อตัวแปรที่ได้รับการปกป้อง
targetCurrentPoseเป็นตัวแปรในเครื่องcurrentTargetPoseMeterแล้ว (Ia557c) - อัปเดต kdoc ของ
SpatialPanelและSpatialExternalSurfaceเพื่อรวมตำแหน่งที่แสดงผลออบเจ็กต์ภายในขนาดเลย์เอาต์ (I72104) - รวมตรรกะการโหลด
SpatialGltfModelไว้ในSpatialGltfModelStateและชี้แจงลักษณะการทำงานเมื่อเกิดข้อผิดพลาด (Ibe98b) - Clarified
depthinSubspaceModifer.sizekdocs (I0f84f)
เวอร์ชัน 1.0.0-alpha14
19 พฤษภาคม 2026
androidx.xr.compose:compose:1.0.0-alpha14 และ androidx.xr.compose:compose-testing:1.0.0-alpha14 เผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha14 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เปิดตัว
transformingMovableสำหรับการเคลื่อนไหว 3 มิติที่ระบบจัดการโดยค่าเริ่มต้น และเปิดตัวโอเวอร์โหลดใหม่สำหรับmovableเพื่อจัดการลักษณะการเคลื่อนไหวที่กำหนดเอง (I50960) - นำ
SpatialGltfModel.fromData()ออกแล้ว (I4d083) - เพิ่มอินเทอร์เฟซโหนดตัวแก้ไขใหม่
SubspaceMeasuredSizeAwareModifierNodeซึ่งมี CallbackonRemeasuredหลังจากผ่านการวัดผล ตอนนี้SubspaceLayoutAwareModifierNodeได้ขยายการใช้อินเทอร์เฟซใหม่นี้แล้ว ตัวแก้ไขonSizeChangedได้รับการอัปเดตให้ใช้onRemeasuredเพื่อให้แน่ใจว่า Callback จะทริกเกอร์ทันทีหลังจากการวัดผล ไม่ใช่หลังจากการวางตำแหน่ง (Iafbae) - อัปเดต
InteractionPolicyเป็นInterface(I0ff30) แล้ว - อัปเดต Compose
compileSdkเป็น API 37 แล้ว ซึ่งหมายความว่าต้องใช้ AGP เวอร์ชัน 9.2.0 เป็นอย่างน้อยเมื่อใช้ Compose (Id45cd) - Updated
Sizekdocs (Iefa9a)
เวอร์ชัน 1.0.0-alpha13
6 พฤษภาคม 2026
androidx.xr.compose:compose:1.0.0-alpha13 และ androidx.xr.compose:compose-testing:1.0.0-alpha13 เผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha13 มี คอมมิตเหล่านี้
การเปลี่ยนแปลง API
- Orbiter API อยู่ระหว่างรอการเปลี่ยนแปลงเพิ่มเติม เราขอแนะนำให้ระงับประกาศการเลิกใช้งานสำหรับ Orbiter และคอยติดตามการเปลี่ยนแปลงของ Orbiter ในรุ่นที่กำลังจะเปิดตัว
- ผู้ที่ใช้
SceneCoreEntityเพื่อแสดงผล glTF ควรตรวจสอบว่าได้ส่งsession.scene.activitySpaceไปยังพารามิเตอร์parentของการเรียกGltfModel.createเพื่อให้แน่ใจว่า glTF จะแสดงผล - การเพิ่ม API
SpatialGltfModelเพื่อให้นักพัฒนาแอปเพิ่ม Gltf ลงในแอป Compose สำหรับ XR ได้ นอกจากนี้ นักพัฒนาแอปยังค้นหาภาพเคลื่อนไหวและโหนดภายในโมเดล Gltf ได้ด้วย (I8b542, b/495422586) - เปลี่ยน
SceneCoreEntitySizeAdapterจากคลาสเป็นอินเทอร์เฟซ (I5a784, b/475292310) - เปลี่ยนชื่อ
SurfaceProtectionเป็นSpatialExternalSurfaceProtectionแล้ว UpdatedSpatialExternalSurfacekdocs (Ifad0a, b/485231082) - เลิกใช้งาน
currentWindowAdaptiveInfoและเปิดตัวเวอร์ชัน 2 (I40ecf, b/424442112) - ตอนนี้ตัวแก้ไข
resizableเป็นแบบสาธารณะและใช้กับกลุ่มได้ (เช่นSpatialRow) (I2bcf6, b/348483527, b/489753178, b/479530787) - ตัวแก้ไข
movableเป็นแบบสาธารณะแล้ว ตัวแก้ไขนี้ทำงานได้ดีในขณะนี้สำหรับSpatialPanelsและSpatialExternalSurfaceแต่เราตั้งใจที่จะให้ตัวแก้ไขนี้รองรับSubspaceComposablesทั้งหมดได้เป็นอย่างดี (I9a3cd, b/479530787, b/478935063, b/478935063) SpatialEnterTransitionและSpatialExitTransitionทำเครื่องหมายเป็น@Immutable(If1710, b/487757837)- API
SpatialGltfModelมีการทำเครื่องหมายว่าถูกจำกัดสำหรับรุ่นนี้เพื่อรอการทดสอบเพิ่มเติม (Ibf003, b/466090694) - เปลี่ยนชื่อ
DeviceTrackingMode.LAST_KNOWNเป็นSPATIAL_LAST_KNOWN(พร้อมการสำรองที่เลิกใช้งานแล้ว) เพิ่มINERTIAL_LAST_KNOWNสำหรับการติดตาม 3DoF และเพิ่มTRACKING_DEGRADEDไปยังTrackingState(Ie661c, b/445466590) - การนำ
SpatialLayoutSpacerที่เลิกใช้งานแล้วออก (I7b36c) - การนำ API ระยะห่างภายในที่เลิกใช้งานแล้วออก (If1886)
- เพิ่ม
floatRangeไปยังค่าการให้น้ำหนักพิเศษแล้ว นำค่าเริ่มต้นสำหรับLayoutDirection(I9d74e) ออกแล้ว
แก้ไขข้อบกพร่อง
- เพิ่มตัวอย่างโค้ดและเอกสารประกอบ KDoc สำหรับ
SpatialColumn,SpatialRowและSpatialCurvedRow(Iaf54f, b/495777633)
เวอร์ชัน 1.0.0-alpha12
25 มีนาคม 2026
androidx.xr.compose:compose:1.0.0-alpha12 และ androidx.xr.compose:compose-testing:1.0.0-alpha12 เผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha12 มี คอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
SpatialGltfModelAPI และSpatialGltfModelAnimationAPI เพื่อแสดงผล glTF และควบคุมภาพเคลื่อนไหว เปลี่ยนSpatialGltfModelStateเป็นAutoCloseableแล้ว ตอนนี้คุณจะต้องปิดเพื่อเพิ่มทรัพยากร (I11fde, b/466065486, b/481379924) อย่างไรก็ตามSpatialGltfModelAPI ได้รับการทำเครื่องหมายว่าถูกจำกัดสำหรับรุ่นนี้เพื่อรอการทดสอบเพิ่มเติม (Ibf003, b/466090694) - เพิ่มโอเวอร์โหลดว่างที่เลิกใช้งานแล้วสำหรับ
SubspaceModifier.rotate(Idceb6) - เปลี่ยนชื่อฟังก์ชัน
SpatialSmoothFeatheringEffectเป็นspatialSmoothFeatheringEffectและย้ายไปยังโมดูลการวาด อัปเดตค่าการปรับขนนกเริ่มต้นของSpatialExternalSurfaceเป็น Null ซึ่งเลียนแบบฟังก์ชันการทำงาน ZeroFeatheringEffect แบบเก่า (I5fdaa, b/460426800) - นำ
onPointSourceParamsAvailableออกแล้ว API การสร้างเสียงรอบทิศทางแบบอื่นจะพร้อมใช้งานในอนาคตอันใกล้ (I86507, b/458513439) - เพิ่มลักษณะการทำงานแบบ RTL สำหรับตัวแก้ไขพื้นที่ย่อยออฟเซ็ต นอกจากนี้ยังเพิ่ม
absoluteOffsetเพื่อละเว้นทิศทางของเลย์เอาต์ด้วย (I30e4b, b/474409165)
เวอร์ชัน 1.0.0-alpha11
25 กุมภาพันธ์ 2026
androidx.xr.compose:compose:1.0.0-alpha11 และ androidx.xr.compose:compose-testing:1.0.0-alpha11 เผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha11 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- กำลังเพิ่มพารามิเตอร์
SuperSamplingไปยังSpatialExternalSurfaces(Icd4d1)
ปัญหาที่ทราบ
- ปัญหาเกี่ยวกับ
SurfaceEntityใน SceneCore อาจทำให้แอปขัดข้องเมื่อสร้างอินสแตนซ์ของSpatialExternalSurfaceปัญหานี้ได้รับการแก้ไขแล้วในandroidx.xr.scenecore:scenecore-*:1.0.0-alpha13,androidx.xr.compose:compose:1.0.0-alpha12และรุ่นต่อๆ มา แอปที่ได้รับผลกระทบควรอัปเดตเป็นเวอร์ชันล่าสุด
การเปลี่ยนแปลง API
- การเปลี่ยนแปลงระยะห่างจากขอบของตัวแก้ไข Subspace เพื่อให้ทราบทิศทางของเลย์เอาต์ (I53e25)
SpatialCapabilitiesถูกปิดผนึกแล้วและไม่สามารถขยายเวลาได้ (I07aef)- API
SpatialRowและSpatialColumnที่ยอมรับพารามิเตอร์SpatialAlignmentทั่วไปเลิกใช้งานแล้ว โปรดใช้ API ที่ยอมรับverticalAlignmentหรือhorizontalAlignmentสำหรับSpatialRowและSpatialColumnตามลำดับแทน (Iec390) - การรวม API ฟังก์ชัน
SubspaceLayoutที่โอเวอร์โหลด (Idd30a) - เปลี่ยนชื่อ
SubspaceModifier.lookAtUserเป็นrotateToLookAtUserและเปลี่ยนพารามิเตอร์upเป็นupDirectionแล้ว (Icafb8) - การทำให้
SpatialRowเป็นฟังก์ชันอินไลน์ (Ia2f20) - การทำให้
SpatialColumnเป็นฟังก์ชันอินไลน์ (I681be) - นำ API บิลบอร์ดออก (Ib76cd)
เวอร์ชัน 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) - อัปเดต
UserSubspaceAPI เพื่อแทนที่คำว่า "การล็อกแบบ Lazy" ด้วย "การล็อกแบบ Soft" (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และ Billboard ซึ่งช่วยให้เนื้อหาหันเข้าหาผู้ใช้เสมอ (I49b99) - เพิ่มความสามารถในการตั้งค่า
InteractionPolicyเป็นSpatialExternalSurfacesและSpatialPanelsซึ่งช่วยให้ตรวจจับการคลิกและเหตุการณ์อินพุต 3 มิติอื่นๆ ได้ (Iae155) - เพิ่มขนาดและโอเวอร์โหลดตัวแก้ไข
requiredSizeด้วยความกว้าง ความสูง และความลึกเป็นค่า Dp (I92f79) - ตอนนี้อินเทอร์เฟซ
ParentLayoutParamsModifierขยายDelegatableSubspaceNode(I1a6d4) ApplicationSubspaceเลิกใช้งานแล้วเพื่อสนับสนุน Subspace API- พฤติกรรมของ Subspace API มีการเปลี่ยนแปลงเพื่อให้แสดงเฉพาะ Subspace ทั่วทั้งแอปพลิเคชันในท่าทางและขนาดที่แนะนำ
PlanarEmbeddedSubspaceAPI เปิดตัวเพื่อให้บริการพื้นที่ย่อยแบบฝังในบริบท 2 มิติ (Id3343)
- เพิ่มแฟล็ก
shouldAutoInvalidateลงใน APISubspaceModifier.Nodeแล้ว (I93902) - เพิ่ม
required(Size|Width|Depth|Height)ใน API ที่อนุญาตให้นักพัฒนาแอปจำกัดขนาดของ@SubspaceComposableให้อยู่ในช่วงที่เฉพาะเจาะจง โดยไม่คำนึงถึงข้อจำกัดด้านการวัดค่าขาเข้าของระดับบนสุด (Ifaa78) - เพิ่ม
SubspaceModifier.onSizeChangedซึ่งให้ Callback ที่เรียบง่ายและเจาะจงสำหรับนักพัฒนาแอปเพื่อตอบสนองเมื่อขนาดของ@SubspaceComposableเปลี่ยนแปลง (I994f9) - นำ Volume API ออก ควรใช้
SceneCoreEntityAPI แทน Volume API (I4162b) - แยก
SubspaceLayoutModifierNode.requestRelayoutเป็นinvalidateMeasurement/invalidatePlacement(I14805) - เพิ่ม
SpatialGltfModelAPI ที่ช่วยให้นักพัฒนาแอปแสดงผล glTF ใน Compose ได้ (Icc91f) - เปิดตัว
SpatialGltfModelcomposable 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
- ปรับปรุง KDocs สำหรับ
SpatialMainPanel(I27b70, b/444467891) - เปิดตัว
SpatialArrangementสำหรับจัดเรียงองค์ประกอบย่อยตามแกนหลักในเลย์เอาต์ 3 มิติ เช่นSpatialRowและSpatialColumnAPI ใหม่นี้มีตัวเลือกการจัดเรียงที่คุ้นเคยจาก Compose แบบ 2 มิติ ซึ่งรวมถึงStart,End,Center,SpaceBetween,SpaceAroundและSpaceEvenlyพร้อมการรองรับทิศทางเลย์เอาต์ทั้งแบบ LTR และ RTL อย่างเต็มรูปแบบ (I7db38, b/436289959) - เพิ่มอินเทอร์เฟซพื้นฐานสำหรับ
SubspaceModifier.Nodeเพื่อปรับปรุงความปลอดภัยในการกำหนดประเภทและความสามารถในการใช้งานของอินเทอร์เฟซส่วนขยาย เช่นCompositionLocalConsumerSubspaceModifierNodeLayoutCoordinatesAwareModifierNodeSubspaceLayoutModifierNodeCoreEntityNode(ภายใน) (Iede00, b/440599394, b/440599394)
- Unrestrict
SpatialExternalSurface(I33315, b/439646773) - แนะนำ
SubspaceModifierให้กับ Subspace composable และแทนที่พารามิเตอร์ข้อจำกัดด้วยSubspaceModifierที่มีSubspaceModifiersที่เกี่ยวข้องกับขนาด หากallowUnboundedSubspaceเป็นจริง พื้นที่ย่อยจะยังคงมีข้อจำกัดที่ไม่มีขอบเขตได้ (Ib06e6, b/433331675) - เลิกใช้งาน
SubspaceModifiersที่เคลื่อนย้ายและปรับขนาดได้ เนื่องจากตอนนี้DragPolicy()และResizePolicy()เป็นส่วนหนึ่งของ APISpatialPanelและSpatialExternalSurface(I397bf, b/437924639) - เพิ่มการรองรับ
LayoutDirectionในเลย์เอาต์เชิงพื้นที่ ตอนนี้ Composable ที่ใช้SpatialAlignmentจะจัดตำแหน่งองค์ประกอบอย่างถูกต้องทั้งในบริบท LTR และ RTL (I964bb, b/436300273) - เพิ่มพารามิเตอร์ Resizable และ Movable ลงใน
PanelAPI เพื่อให้แน่ใจว่าลักษณะการทำงานเหล่านี้จะใช้ได้กับคอนเทนเนอร์ที่รองรับเท่านั้น (Id491c) - เพิ่ม
sizeIn,widthIn,heightIn,depthInSubspaceModifiersที่ช่วยให้คุณกำหนดข้อจำกัดขั้นต่ำและสูงสุดที่แน่นอนสำหรับความกว้าง ความสูง และความลึกได้ (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) SpatialExternalSurfaceComposable ใหม่ 2 รายการที่แสดงทรงกลม 180 และ 360 องศา (I40ef2, b/391705799)- เพิ่ม
SubspaceModifier.aspectRatio(Ide5ab, b/399729509, b/414762147) - เพิ่ม
SceneCoreEntityAPI เพื่อปรับปรุงความสามารถในการทำงานร่วมกันระหว่างSceneCoreกับ Compose สำหรับ XR (I50bb3, b/423020989) - จัดเตรียม
GravityAlignedsubspaceAPI เพื่อรองรับฟีเจอร์GravityAlignedที่ไม่มีการปรับขนาด (I07359)
การเปลี่ยนแปลง API
SpatialDialog()จะทำตามการกำหนดค่าการกดของSpatialDialogProperties.dismissOnBack(Ib453b, b/416797132)- อัปเดต
minimumPanelDimensionเป็นขนาดมิติข้อมูลเริ่มต้นใหม่ที่Dimensions(0.1f, 0.1f, 0.1f)เนื่องจากแสดงเป็นเมตร (Ib852a) - ตอนนี้ Subspace และ Orbiter จะคงสถานะภายในไว้ใน Home Space และเมื่อแอปทำงานอยู่เบื้องหลัง ในโหมด Home Space Subspace จะยังคงตั้งค่าฉากเพื่อเตรียมพร้อมสำหรับการเปลี่ยนไปใช้โหมด Full Space (I40317, b/416037751)
- ตอนนี้
SpatialDialogsจะคงสถานะไว้เมื่อแอปทำงานอยู่เบื้องหลัง (I6aa56) - ตอนนี้
ApplicationSubspaceจะรับค่าขนาดและตำแหน่งที่แนะนำจากระบบ (I4565f, b/418834194) - เพิ่มข้อความแสดงข้อผิดพลาดที่ดีขึ้นและทริกเกอร์ข้อผิดพลาดก่อนหน้านี้เมื่อใช้
SubspaceComposableในบริบทที่ไม่ใช่SubspaceComposable(Iee2ae, b/416484684) - อัปเดต
ExperimentalSubspaceVolumeApiจากคำเตือนเป็นข้อผิดพลาดเนื่องจากคำเตือนมักถูกมองข้ามเมื่อใช้ Composable API ในทางที่ผิด (I427aa, b/424864286) - ตอนนี้พื้นที่ย่อยและ
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) - นำ
setSubspaceContentAPI ออกเพื่อใช้setContentของ Compose กับSubspaceComposable (Ifff4c, b/421427391, b/421427391) MeasurePolicyเปลี่ยนชื่อเป็นSubspaceMeasurePolicyแล้ว (I37a9b, b/422553904)- เปลี่ยน
SubspaceSemanticsInfoเป็นอินเทอร์เฟซที่ปิดผนึกเนื่องจากเราจะเพิ่มสมาชิกโดยไม่มีค่าเริ่มต้นไม่ได้ (I372f9, b/423704068) - อัปเดตเอกสารประกอบ
SpatialExternalSurfaceเปลี่ยนชื่อContentSecurityLevelเป็นSurfaceProtection(I3c460, b/420982808) - ระบุตัวสร้างที่โอเวอร์โหลดสำหรับตัวแก้ไขที่เคลื่อนย้ายได้ซึ่งอนุญาตให้ทำการยึดตำแหน่ง (Ic0c70)
- เพิ่มผู้ให้บริการตำแหน่งสำหรับเคล็ดลับเครื่องมือ เพื่อให้นักพัฒนาแอปควบคุมได้ว่าจะวางเคล็ดลับเครื่องมือไว้ด้านบน ด้านล่าง ด้านซ้าย หรือด้านขวาของ Anchor เพิ่ม 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ที่กำหนดเองเข้าถึงค่าภายในขององค์ประกอบได้ - เพิ่ม
SpatialPanelAPI ใหม่ที่ใช้รูปแบบการติดตั้งใช้งานAndroidViewของ Compose และเลิกใช้งานViewBased SpatialPanelก่อนหน้า - เพิ่มออบเจ็กต์ที่ใช้ร่วมกัน
VolumeConstraints.Unboundedซึ่งแสดงข้อจำกัดที่ไม่มีขอบเขต - เพิ่ม
SubspaceModifier.onPointSourceParamsเพื่ออนุญาตแหล่งที่มาของเสียงรอบทิศทาง - มีการเพิ่ม
ApplicationSubspaceสาธารณะ ซึ่งมีVolumeConstraintsที่ไม่บังคับเพื่อกำหนดพื้นที่ 3 มิติที่แอปสามารถแสดงผลเนื้อหาเชิงพื้นที่ได้ โดยค่าเริ่มต้น หากไม่มีการระบุข้อจำกัด พื้นที่ย่อยจะถูกจำกัดด้วยขอบเขตการมองเห็นปัจจุบันของ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"ในไฟล์ Manifest ของ Android - ตอนนี้การจัดการปุ่มย้อนกลับจะทำงานในกล่องโต้ตอบเชิงพื้นที่ เพื่อให้การจัดการปุ่มย้อนกลับทำงานได้ คุณต้องระบุ
android:enableOnBackInvokedCallback="true"ในไฟล์ Manifest ของ Android - ตอนนี้
SpatialPanelที่อิงตาม Compose และ View สามารถปรับขนาดตัวเองตามเนื้อหาได้แล้ว - ตอนนี้นักพัฒนาแอปสามารถตั้งค่า
SpatialElevationLevelที่กำหนดเองได้แล้ว และไม่จำกัดเฉพาะระดับที่กำหนดไว้ล่วงหน้า - ตอนนี้คุณปรับแต่งระดับความสูงของ Orbiter ได้ผ่านพารามิเตอร์
elevation - ตอนนี้พื้นที่ย่อยสามารถถูกจำกัดด้วยขอบเขตการมองเห็นของ
SpatialUserในด้านความกว้างและความสูงโดยค่าเริ่มต้น หากระบุขอบเขตการมองเห็นไม่ได้ ระบบจะใช้ค่าความกว้างและความสูงของขอบเขตการมองเห็นเริ่มต้น - เพิ่ม Callback ใหม่
onMoveStartและonMoveEndลงในตัวแก้ไขMovableระบบจะเรียกใช้ CallbackonMoveStartและonMoveEndเมื่อผู้ใช้เริ่มและสิ้นสุดการย้าย Composable ของพื้นที่ย่อยด้วยตัวแก้ไขที่เคลื่อนย้ายได้ - พารามิเตอร์
nameถูกนำออกจาก API เชิงพื้นที่ เช่นSpatialRowและSpatialPanelสำหรับการแก้ไขข้อบกพร่องของโครงสร้างการเขียนเชิงพื้นที่ ให้ใช้SubspaceModifier.testTagแทน - นำโอเวอร์โหลดที่ไม่รองรับของ
SpatialPopupซึ่งมีเพียงspatialElevationLevelและcontentออกแล้ว โปรดใช้อินเทอร์เฟซที่รองรับonDimissRequest - ระบบนำ Callback
onPoseChangeออกจากตัวแก้ไข Movable แล้ว โปรดใช้onMoveแทน SubspaceModifiersจะไม่ใช้เอฟเฟกต์อีกต่อไปหากยกเลิกการเชื่อมต่อหรือกำลังยกเลิกการเชื่อมต่ออยู่SpatialRowAPI ที่มีอยู่ได้แยกออกเป็นSpatialRowและSpatialCurvedRowหากก่อนหน้านี้ใช้พารามิเตอร์curveRadiusของSpatialRowให้ใช้SpatialCurvedRowแทน ซึ่งมีลักษณะการทำงานเหมือนกันMainPanelและActivityPanelจะไม่มีแถบชื่ออีกต่อไปเมื่อทำงานในอิมเมจระบบที่คล้ายกันล่าสุด- ตอนนี้ตัวปรับแต่งอัลฟ่าและสเกลสามารถซ้อนกันได้ และจะคูณค่าของตัวปรับแต่งเพื่อหาค่าอัลฟ่าหรือสเกลสุดท้ายที่ใช้
- Callback
onPoseChangeจากตัวแก้ไข Movable ได้รับการเพิ่มประสิทธิภาพเพื่อให้การเคลื่อนไหวของท่าทางราบรื่นยิ่งขึ้น - ตอนนี้ตัวแก้ไขที่เคลื่อนย้ายได้และปรับขนาดได้จะเรียกกลับในเทรดหลักเพื่อให้แน่ใจว่าการเปลี่ยนแปลงสถานะจะทริกเกอร์การจัดองค์ประกอบใหม่
- เพิ่มการสังเกตสถานะลงในระยะเลย์เอาต์และวัดค่าเพื่อให้แน่ใจว่าการเปลี่ยนแปลงสถานะใน
SubspaceLayoutจะทริกเกอร์การจัดเลย์เอาต์ใหม่ - การอัปเดตเชนตัวแก้ไขที่เพิ่มประสิทธิภาพเพื่อนำตัวแก้ไขที่มีอยู่มาใช้ซ้ำได้ดียิ่งขึ้น
แก้ไขข้อบกพร่อง
- หยุดการแสดงภาพซ้อนทับเมื่อแสดง
SpatialDialog(Ic4594) - ตอนนี้ระบบจะไม่สนใจคำขอจัดเลย์เอาต์ใหม่ที่ส่งขณะที่โหนดตัวแก้ไขแยกออก
- นำระยะการจัดวางใหม่ที่ทริกเกอร์โดยตัวแก้ไข Movable และ Resizable ออก
- แก้ไขข้อขัดข้องในคอมโพสิเบิล
MainPanel()ที่เกิดขึ้นเมื่อตั้งค่ามิติข้อมูลเป็น 0 ไม่ว่าจะโดยตรงหรือระหว่างการคำนวณเลย์เอาต์ เช่น การคำนวณSpatialRow/SpatialColumnตอนนี้แผงจะซ่อนอยู่แทน โปรดทราบว่าการแก้ไขนี้จะแก้ปัญหาการขัดข้องระหว่างขั้นตอนเลย์เอาต์โดยเฉพาะ ส่วนการปรับขนาดแผงเป็น 0 ผ่านการโต้ตอบของผู้ใช้จะได้รับการจัดการแยกต่างหาก แผงที่ซ่อนอยู่ไม่มีความสามารถในการใช้งาน UI - แก้ไขปัญหาเกี่ยวกับ
maintainAspectRatioจากตัวแก้ไขที่ปรับขนาดได้ ระบบจะคงสัดส่วนภาพไว้แล้ว - แก้ไขปัญหาเกี่ยวกับพื้นที่ย่อยที่ฝังอยู่ซึ่งจะวางตำแหน่งไม่ถูกต้องสำหรับเฟรมเดียว
- แก้ปัญหาที่บางครั้งระบบไม่ใช้มุมโค้งมนเมื่อควรใช้
NestedSubspacesจะไม่ปรากฏในตำแหน่งที่ไม่ถูกต้องเป็นเวลา 1 เฟรมอีกต่อไป
เวอร์ชัน 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 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตอนนี้แผงกิจกรรมสามารถสกรีมเนื้อหาเมื่อเปิดใช้งานกล่องโต้ตอบเชิงพื้นที่ได้แล้ว
- ตอนนี้
OrbiterAPI สามารถใช้ได้ในบริบทSubspaceComposableและจะแนบ Orbiter เข้ากับคอมโพสิเบิลหลักที่อิงตามSubspaceLayoutที่ใกล้ที่สุด - เปิดตัว
LayoutCoordinatesAwareModifierNodeเพื่ออนุญาตให้ใช้ตัวแก้ไขตามตำแหน่งที่กำหนดเอง - เพิ่มเมธอดวงจรแนบ/แยกไปยัง
SubspaceModifier.Nodeแล้ว - เพิ่ม
scaleWithDistanceไปยังตัวแก้ไขที่เคลื่อนย้ายได้แล้ว เมื่อเปิดใช้scaleWithDistanceองค์ประกอบพื้นที่ย่อยที่ย้ายจะขยายหรือย่อลง นอกจากนี้ยังคงรักษาขนาดที่ชัดเจนซึ่งมีอยู่ก่อนการเคลื่อนไหวไว้ด้วย
การเปลี่ยนแปลง API
- นำ
SessionCallbackProviderออกเพื่อใช้SpatialCapabilitiesแทน
การเปลี่ยนแปลงอื่นๆ
- ลด
minSDKเป็น 24 แล้ว Jetpack XR API ทั้งหมดยังคงต้องใช้ 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 ไม่ว่าคุณจะพอร์ตแอป 2D ที่มีอยู่ไปยัง XR หรือสร้างแอป XR ใหม่ตั้งแต่ต้น ไลบรารีนี้มีคอมโพสิเบิลเชิงพื้นที่และซับสเปซ เช่น แผงเชิงพื้นที่และออร์บิเตอร์ ซึ่งช่วยให้คุณวาง UI แบบ Compose 2D หรือแบบ Views ที่มีอยู่แล้วในเลย์เอาต์เชิงพื้นที่ได้ โดยจะแนะนำคอมโพสิเบิลพื้นที่ย่อย Volume ซึ่งช่วยให้คุณวางเอนทิตี SceneCore เช่น โมเดล 3 มิติ โดยสัมพันธ์กับ UI ได้ ดูข้อมูลเพิ่มเติมในคู่มือนักพัฒนาซอฟต์แวร์นี้
Subspace: คุณสามารถวาง Composable นี้ไว้ที่ใดก็ได้ในลำดับชั้น UI ของแอป ซึ่งช่วยให้คุณคงเลย์เอาต์สำหรับ UI แบบ 2 มิติและเชิงพื้นที่ไว้ได้โดยไม่สูญเสียบริบทระหว่างไฟล์ ซึ่งจะช่วยให้แชร์สิ่งต่างๆ เช่น สถาปัตยกรรมแอปที่มีอยู่ระหว่าง XR กับรูปแบบอื่นๆ ได้ง่ายขึ้น โดยไม่ต้องยกสถานะผ่านโครงสร้าง UI ทั้งหมดหรือปรับสถาปัตยกรรมแอปใหม่SpatialPanel: แผงเชิงพื้นที่คือคอมโพสิเบิลพื้นที่ย่อยที่ช่วยให้คุณแสดงเนื้อหาแอปได้ เช่น คุณสามารถแสดงการเล่นวิดีโอ ภาพนิ่ง หรือเนื้อหาอื่นๆ ในแผงเชิงพื้นที่
Orbiter: Orbiter เป็นคอมโพเนนต์ UI เชิงพื้นที่ แถบนี้ออกแบบมาให้ติดอยู่กับแผงเชิงพื้นที่ที่เกี่ยวข้อง และมีรายการการนำทางและการดำเนินการตามบริบทที่เกี่ยวข้องกับแผงเชิงพื้นที่นั้น เช่น หากคุณสร้างแผงเชิงพื้นที่เพื่อแสดงเนื้อหาวิดีโอ คุณสามารถเพิ่มตัวควบคุมการเล่นวิดีโอภายใน Orbiter ได้
Volume: วางเอนทิตี 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 Composable อาจกะพริบในตำแหน่งที่ไม่ถูกต้องในตอนแรก
- การใช้ SpatialDialog ในแผงที่ย้ายไปอย่างมากจะทำให้เนื้อหาถูกผลักไปในทิศทางที่ไม่ถูกต้อง