Jetpack Compose สำหรับ XR

สร้างเลย์เอาต์ของ UI เชิงพื้นที่แบบประกาศซึ่งใช้ประโยชน์จากความสามารถเชิงพื้นที่ของ Android 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 ซึ่งมีหน่วยความจำรั่วไหลที่ทราบ ในการกำหนดค่าบิลด์ คุณอาจลบล้างทรัพยากร Dependency SceneCore เป็นเวอร์ชัน 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)
  • ตอนนี้ SpatialGltfModel API อยู่ในขั้นทดลองและต้องเลือกใช้จึงจะใช้งานได้ (I4557e)
  • ทำให้ system เป็นค่าที่ปรับขนาดได้และเป็นค่า Null ได้ (Ib0093)
  • แสดง Density ใน SubspaceSemanticsInfo สำหรับการทดสอบ (I2e826)
  • เปลี่ยนชื่อตัวเลือกเริ่มต้น ResizePolicy เป็น system และเพิ่มตัวเลือก Default ใหม่โดยไม่มีพารามิเตอร์ (Ic8b16)
  • ทำเครื่องหมาย FollowTarget ว่าเป็นเวอร์ชันทดลอง ตอนนี้ FollowingSubspace API ทั้งหมดอยู่ในขั้นทดลอง (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

  • นำ ComponentOverride API ออก (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 fromResource method from SpatialGltfModelSource (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 และนำเมธอดออฟเซ็ตทิศทางแต่ละรายการออกเพื่อใช้ API align แบบรวม (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)
  • อัปเดต SpatialGltfModel API: เพิ่มการรองรับการโหลดโมเดลจากทรัพยากรผ่าน SpatialGltfModelSourcefromResource เปลี่ยนชื่อความเร็วเป็น playbackSpeed ใน SpatialGltfModelAnimation และเพิ่มเมธอด resume() SpatialGltfModelStatus.Loaded และ Loading เป็นออบเจ็กต์แล้ว (I523de)
  • ทำเครื่องหมาย rotateToLookAtUser เป็น API เวอร์ชันทดลอง (I86c16)
  • ย้ายและเปลี่ยนชื่อตัวแปรที่ได้รับการปกป้อง targetCurrentPose เป็นตัวแปรในเครื่อง currentTargetPoseMeter แล้ว (Ia557c)
  • อัปเดต kdoc ของ SpatialPanel และ SpatialExternalSurface เพื่อรวมตำแหน่งที่แสดงผลออบเจ็กต์ภายในขนาดเลย์เอาต์ (I72104)
  • รวมตรรกะการโหลด SpatialGltfModel ไว้ใน SpatialGltfModelState และชี้แจงลักษณะการทำงานเมื่อเกิดข้อผิดพลาด (Ibe98b)
  • Clarified depth in SubspaceModifer.size kdocs (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 ซึ่งมี Callback onRemeasured หลังจากผ่านการวัดผล ตอนนี้ SubspaceLayoutAwareModifierNode ได้ขยายการใช้อินเทอร์เฟซใหม่นี้แล้ว ตัวแก้ไข onSizeChanged ได้รับการอัปเดตให้ใช้ onRemeasured เพื่อให้แน่ใจว่า Callback จะทริกเกอร์ทันทีหลังจากการวัดผล ไม่ใช่หลังจากการวางตำแหน่ง (Iafbae)
  • อัปเดต InteractionPolicy เป็น Interface (I0ff30) แล้ว
  • อัปเดต Compose compileSdk เป็น API 37 แล้ว ซึ่งหมายความว่าต้องใช้ AGP เวอร์ชัน 9.2.0 เป็นอย่างน้อยเมื่อใช้ Compose (Id45cd)
  • Updated Size kdocs (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 แล้ว Updated SpatialExternalSurface kdocs (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

  • เพิ่ม SpatialGltfModel API และ SpatialGltfModelAnimation API เพื่อแสดงผล glTF และควบคุมภาพเคลื่อนไหว เปลี่ยน SpatialGltfModelState เป็น AutoCloseable แล้ว ตอนนี้คุณจะต้องปิดเพื่อเพิ่มทรัพยากร (I11fde, b/466065486, b/481379924) อย่างไรก็ตาม SpatialGltfModel API ได้รับการทำเครื่องหมายว่าถูกจำกัดสำหรับรุ่นนี้เพื่อรอการทดสอบเพิ่มเติม (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)
  • อัปเดต UserSubspace API เพื่อแทนที่คำว่า "การล็อกแบบ 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 ทั่วทั้งแอปพลิเคชันในท่าทางและขนาดที่แนะนำ
    • PlanarEmbeddedSubspace API เปิดตัวเพื่อให้บริการพื้นที่ย่อยแบบฝังในบริบท 2 มิติ (Id3343)
  • เพิ่มแฟล็ก shouldAutoInvalidate ลงใน API SubspaceModifier.Node แล้ว (I93902)
  • เพิ่ม required(Size|Width|Depth|Height) ใน API ที่อนุญาตให้นักพัฒนาแอปจำกัดขนาดของ @SubspaceComposable ให้อยู่ในช่วงที่เฉพาะเจาะจง โดยไม่คำนึงถึงข้อจำกัดด้านการวัดค่าขาเข้าของระดับบนสุด (Ifaa78)
  • เพิ่ม SubspaceModifier.onSizeChanged ซึ่งให้ Callback ที่เรียบง่ายและเจาะจงสำหรับนักพัฒนาแอปเพื่อตอบสนองเมื่อขนาดของ @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

  • ปรับปรุง KDocs สำหรับ SpatialMainPanel (I27b70, b/444467891)
  • เปิดตัว SpatialArrangement สำหรับจัดเรียงองค์ประกอบย่อยตามแกนหลักในเลย์เอาต์ 3 มิติ เช่น SpatialRow และ SpatialColumn API ใหม่นี้มีตัวเลือกการจัดเรียงที่คุ้นเคยจาก Compose แบบ 2 มิติ ซึ่งรวมถึง Start, End, Center, SpaceBetween, SpaceAround และ SpaceEvenly พร้อมการรองรับทิศทางเลย์เอาต์ทั้งแบบ LTR และ RTL อย่างเต็มรูปแบบ (I7db38, b/436289959)
  • เพิ่มอินเทอร์เฟซพื้นฐานสำหรับ SubspaceModifier.Node เพื่อปรับปรุงความปลอดภัยในการกำหนดประเภทและความสามารถในการใช้งานของอินเทอร์เฟซส่วนขยาย เช่น
    • CompositionLocalConsumerSubspaceModifierNode
    • LayoutCoordinatesAwareModifierNode
    • SubspaceLayoutModifierNode
    • CoreEntityNode (ภายใน) (Iede00, b/440599394, b/440599394)
  • Unrestrict SpatialExternalSurface (I33315, b/439646773)
  • แนะนำ SubspaceModifier ให้กับ Subspace composable และแทนที่พารามิเตอร์ข้อจำกัดด้วย SubspaceModifier ที่มี SubspaceModifiers ที่เกี่ยวข้องกับขนาด หาก allowUnboundedSubspace เป็นจริง พื้นที่ย่อยจะยังคงมีข้อจำกัดที่ไม่มีขอบเขตได้ (Ib06e6, b/433331675)
  • เลิกใช้งาน SubspaceModifiers ที่เคลื่อนย้ายและปรับขนาดได้ เนื่องจากตอนนี้ DragPolicy() และ ResizePolicy() เป็นส่วนหนึ่งของ API SpatialPanel และ SpatialExternalSurface (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)
  • SpatialExternalSurface Composable ใหม่ 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 จะคงสถานะภายในไว้ใน 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)
  • นำ setSubspaceContent API ออกเพื่อใช้ setContent ของ Compose กับ Subspace Composable (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 ที่กำหนดเองเข้าถึงค่าภายในขององค์ประกอบได้
  • เพิ่ม SpatialPanel API ใหม่ที่ใช้รูปแบบการติดตั้งใช้งาน 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 ระบบจะเรียกใช้ Callback onMoveStart และ onMoveEnd เมื่อผู้ใช้เริ่มและสิ้นสุดการย้าย Composable ของพื้นที่ย่อยด้วยตัวแก้ไขที่เคลื่อนย้ายได้
  • พารามิเตอร์ name ถูกนำออกจาก API เชิงพื้นที่ เช่น SpatialRow และ SpatialPanel สำหรับการแก้ไขข้อบกพร่องของโครงสร้างการเขียนเชิงพื้นที่ ให้ใช้ SubspaceModifier.testTag แทน
  • นำโอเวอร์โหลดที่ไม่รองรับของ SpatialPopup ซึ่งมีเพียง spatialElevationLevel และ content ออกแล้ว โปรดใช้อินเทอร์เฟซที่รองรับ onDimissRequest
  • ระบบนำ Callback onPoseChange ออกจากตัวแก้ไข Movable แล้ว โปรดใช้ onMove แทน
  • SubspaceModifiers จะไม่ใช้เอฟเฟกต์อีกต่อไปหากยกเลิกการเชื่อมต่อหรือกำลังยกเลิกการเชื่อมต่ออยู่
  • SpatialRow API ที่มีอยู่ได้แยกออกเป็น 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 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้แผงกิจกรรมสามารถสกรีมเนื้อหาเมื่อเปิดใช้งานกล่องโต้ตอบเชิงพื้นที่ได้แล้ว
  • ตอนนี้ Orbiter API สามารถใช้ได้ในบริบท 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 ในแผงที่ย้ายไปอย่างมากจะทำให้เนื้อหาถูกผลักไปในทิศทางที่ไม่ถูกต้อง