รันไทม์ XR

เริ่มเซสชัน AR หรือ 3D ที่กำหนดเองด้วยรันไทม์ดั้งเดิมของเรา
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า รุ่นอัลฟ่า
30 กรกฎาคม 2025 - - - 1.0.0-alpha05

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

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

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

ดึงดูด

dependencies {
    implementation "androidx.xr.runtime:runtime:1.0.0-alpha05"

    // Use in environments that do not support OpenXR
    testImplementation "androidx.xr.runtime:runtime-testing:1.0.0-alpha05"
}

Kotlin

dependencies {
    implementation("androidx.xr.runtime:runtime:1.0.0-alpha05")

    // Use in environments that do not support OpenXR
    testImplementation("androidx.xr.runtime:runtime-testing:1.0.0-alpha05")
}

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

ความคิดเห็น

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

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

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

รุ่น 1.0

เวอร์ชัน 1.0.0-alpha05

30 กรกฎาคม 2025

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

ฟีเจอร์ใหม่

  • เพิ่ม HandJointType และ TrackingState (I55880, b/334645808)
  • ทำให้การติดตั้งใช้งาน Config เป็นแบบสาธารณะ (I95860, b/334645808)
  • เปิดตัว SessionCreateResult และ SessionConfigureResult ประเภทใหม่ (Icb8cb, b/334645808)
  • เพิ่มBoundingBoxคลาสใหม่ที่แสดงกล่องขอบเขตที่สอดคล้องกับแกนในพื้นที่ 3 มิติ ซึ่งกำหนดโดยจุดมุมต่ำสุดและสูงสุด (Ic68c5, b/423073468)

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

  • เปลี่ยนชื่อและย้าย androidx.xr.scenecore.PixelDimensions ไปที่ androidx.xr.runtime.math.IntSize2d เปลี่ยนชื่อและย้าย androidx.xr.scenecore.Dimensions ไปที่ androidx.xr.runtime.math.FloatSize3d เปลี่ยนชื่อ androidx.xr.scenecore.PlaneType เป็น androidx.xr.scenecore.PlaneOrientation แล้ว เปลี่ยนชื่อ androidx.xr.scenecore.PlaneSemantic เป็น androidx.xr.scenecore.PlaneSemanticType แล้ว (Ifd405, b/416456228)
  • นำชั้นเรียน androidx.xr.runtime.FoV ออกแล้ว โปรดใช้ androidx.xr.runtime.FieldOfView แทน (I9ae27)
  • เพิ่มการโอเวอร์โหลดเพิ่มเติมสำหรับ Session.create ซึ่งสามารถระบุ LifecycleOwner ให้เซสชันแนบได้ โปรดทราบว่าคุณยังคงต้องระบุกิจกรรมสำหรับการเป็นเจ้าของทรัพยากร และต้องกำหนดขอบเขต LifecycleOwner ภายในกิจกรรม (I1690b)
  • เปลี่ยนชื่อ FakeRuntimeAnchor.anchorsCreated เป็น anchorsCreatedCount (I96df9, b/424441218)
  • เราได้เปลี่ยนชื่อค่าการกำหนดค่า *Mode เพื่อให้สอดคล้องกับลักษณะการทำงานของค่าเหล่านั้น (I6d247, b/414648065)
  • โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไป (Idb6b5, b/344563182)
  • API ที่เกี่ยวข้องกับสตริงไฟล์ Manifest ได้ย้ายจาก :xr:runtime:runtime ไปยัง :xr:runtime:runtime-manifest แล้ว เปลี่ยนชื่อแพ็กเกจจาก androidx.xr.runtime เป็น androidx.xr.runtime.manifest แล้ว (I610ad, b/418800249)
  • ระบบได้นำ Session.resume(), Session.pause() และ Session.destroy() ออกจากพื้นผิว API แล้ว เซสชันไม่ใช่ LifecycleOwner อีกต่อไป ตอนนี้วงจรของเซสชันจะเชื่อมโยงกับวงจรของกิจกรรมที่ส่งใน Session.create() (I28a03)
  • ตอนนี้ไลบรารีนี้ใช้คำอธิบายประกอบเกี่ยวกับค่า Null ของ JSpecify ซึ่งเป็นแบบใช้ประเภท นักพัฒนา Kotlin ควรใช้อาร์กิวเมนต์คอมไพเลอร์ต่อไปนี้เพื่อบังคับใช้การใช้งานที่ถูกต้อง: -Xjspecify-annotations=strict (นี่คือค่าเริ่มต้นที่เริ่มต้นด้วยคอมไพเลอร์ Kotlin เวอร์ชัน 2.1.0) (Ia8420, b/326456246)
  • อาร์ติแฟกต์รันไทม์หลัก (:xr:runtime:runtime) จะมีเฉพาะ API แบบอะซิงโครนัสสไตล์ Kotlin เท่านั้น นักพัฒนา Java สามารถใช้ :xr:runtime:runtime-guava เพื่อเข้าถึง API ที่เข้ากันได้ (I05d4a, b/426639315)
  • อาร์ติแฟกต์รันไทม์หลัก (:xr:runtime:runtime) จะมีเฉพาะ API แบบอะซิงโครนัสสไตล์ Kotlin เท่านั้น นักพัฒนาซอฟต์แวร์ Java สามารถใช้ไลบรารี xr:runtime:runtime-rxjava3 เพื่อเข้าถึง API ที่เข้ากันได้ (I64122, b/426639775)
  • ย้าย Coroutines ไปยัง :xr:runtime:runtime-guava และ Flows ไปยัง :xr:runtime:runtime-rxjava3 (I60ae9)
  • Session.create และ Session.configure จะแสดง SecurityException เมื่อไม่ได้รับสิทธิ์ที่เพียงพอแทนที่จะแสดง SessionCreatePermissionsNotGranted หรือ SessionConfigurePermissionsNotGranted (I7c488, b/430651879)

เวอร์ชัน 1.0.0-alpha04

7 พฤษภาคม 2025

androidx.xr.runtime:runtime:1.0.0-alpha04 androidx.xr.runtime:runtime-openxr:1.0.0-alpha04 และ androidx.xr.runtime:runtime-testing:1.0.0-alpha04 ออกอากาศแล้ว เวอร์ชัน 1.0.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้ Session ใช้ androidx.lifecycle.LifecycleOwner เพื่อให้ทำงานร่วมกับกระบวนทัศน์วงจรของ Android ที่มีอยู่ได้มากขึ้น
  • สตริงไฟล์ Manifest สำหรับ Android XR จะระบุและบันทึกไว้ที่นี่
  • เพิ่มเมธอดส่วนขยาย Spatial Visibility Callback เพื่อตรวจสอบเมื่อเนื้อหาฉากเคลื่อนที่ภายในหรือภายนอกฟิลด์มุมมองของผู้ใช้
  • เพิ่มเวอร์ชัน Stub ของ JxrPlatformAdapter (และคลาสที่เกี่ยวข้องทั้งหมด)
  • ระบบจะใช้เซสชันทั้งใน SceneCore และรันไทม์แทนเซสชันใน SceneCore
  • ActivityPose.hitTest ได้รับการเพิ่มเข้ามา ซึ่งช่วยให้hitTestกับเนื้อหาเสมือนได้
  • ตอนนี้รองรับการระบุการใช้งานรันไทม์หลายรายการในเวลาคอมไพล์แล้ว ระบบจะโหลดเพียงรายการเดียวในเวลาดำเนินการโดยอิงตามชุดฟีเจอร์ของอุปกรณ์ปัจจุบัน
  • เพิ่มประเภทคอมโพเนนต์ใหม่ SpatialPointerComponent ซึ่งช่วยให้ไคลเอ็นต์ระบุไอคอนที่แสดงสำหรับเคอร์เซอร์ หรือปิดใช้ไอคอนได้ ปัจจุบันแนบคอมโพเนนต์นี้กับอินสแตนซ์ PanelEntity ได้เท่านั้น

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

  • ทำให้การติดตั้งใช้งาน Config เป็นแบบสาธารณะ (I95860)
  • เพิ่ม HandJointType และ TrackingState (I55880)
  • โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไปจึงจะใช้งานได้ (Idb6b5)
  • เปลี่ยน Hand.isActive (boolean) เป็น Hand.trackingState แล้ว เราได้แก้ไขการใช้งาน OpenXR ตามนั้นแล้ว
  • ข้อกำหนดด้านสิทธิ์ของ android.permission.SCENE_UNDERSTANDING ใน Session.configure เปลี่ยนเป็น android.permission.SCENE_UNDERSTANDING_COARSE แล้ว
  • LifecycleManager.configure ได้รับการติดตั้งใช้งานแล้ว และตอนนี้ส่งผ่านในออบเจ็กต์ Config ซึ่งมีพร็อพเพอร์ตี้สำหรับฟีเจอร์รันไทม์ที่กำหนดค่าได้แต่ละรายการ
  • ตอนนี้เรียกใช้ Session.configure ด้วย Config เพื่อกำหนดค่าฟีเจอร์รันไทม์ที่พร้อมใช้งานได้แล้ว
  • ตอนนี้ Session.create รองรับการส่ง CoroutineContext แทน CoroutineDispatcher แล้ว
  • Session.create รองรับการโหลด ARCore สำหรับ Jetpack XR และ/หรือ SceneCore ต้องระบุอย่างน้อย 1 รายการ (มีเวอร์ชันทดสอบ)
  • FakePerceptionManager จะแสดง AnchorInvalidUuidException เมื่อส่ง UUID ที่ไม่ถูกต้องไปยัง Anchor.load และ Anchor.unpersist
  • CoreState ไม่ใช่คลาสข้อมูลอีกต่อไป

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

  • แก้ไขการกำหนดค่า ProGuard ของรันไทม์

เวอร์ชัน 1.0.0-alpha03

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

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

เวอร์ชัน 1.0.0-alpha02

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

androidx.xr.runtime:runtime:1.0.0-alpha02 androidx.xr.runtime:runtime-openxr:1.0.0-alpha02 และ androidx.xr.runtime:runtime-testing:1.0.0-alpha02 ออกอากาศแล้ว เวอร์ชัน 1.0.0-alpha02 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลงด้านการแตกหักและพฤติกรรม

  • OpenXR ฟังก์ชันรันไทม์ที่แสดงผล Anchor จะแสดงข้อผิดพลาด AnchorResourcesExhaustedException หากพบรหัสข้อผิดพลาดที่แจ้งว่าOpenXR ถึงขีดจำกัดของทรัพยากรแล้ว
  • ตอนนี้ Session.create และ Session.resume ต้องใช้สิทธิ์ android.permission.HAND_TRACKING แล้ว

ฟีเจอร์ใหม่

  • เพิ่มการรองรับการติดตามการเคลื่อนไหวของมือ

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

  • การสร้าง Anchor จะมีความเสถียรมากขึ้นเมื่อเรียกใช้ในโปรแกรมจำลอง

เวอร์ชัน 1.0.0-alpha01

12 ธันวาคม 2024

androidx.xr.runtime:runtime-* 1.0.0-alpha01 ได้รับการเผยแพร่แล้ว

ฟีเจอร์ของการเปิดตัวครั้งแรก

การเปิดตัว Jetpack XR Runtime ครั้งแรก ไลบรารีนี้มีฟังก์ชันพื้นฐานสำหรับชุดไลบรารี Jetpack XR ซึ่งรวมถึงการค้นพบความสามารถ การจัดการวงจร การกำหนดค่า และอื่นๆ ไลบรารีรันไทม์มีรูปแบบต่างๆ (เช่น runtime-openxr หรือ runtime-testing) ขึ้นอยู่กับแพลตฟอร์มการดำเนินการ นอกจากนี้ ไลบรารียังมีนามธรรมทางคณิตศาสตร์พื้นฐาน เช่น Vector3 และ Matrix4 ที่ใช้ในพื้นผิว Jetpack XR API ทั้งหมด

  • Session: ให้การควบคุมระบบ XR อย่างละเอียด รวมถึงการตัดสินใจว่าจะดำเนินการประมวลผลเมื่อใดและไม่ดำเนินการเมื่อใด รวมถึงการกำหนดค่าโดยรวม นอกจากนี้ยังเป็นแฮนเดิลที่คุณจะใช้ใน API อื่นๆ ทั้งหมดเพื่อปลดล็อกความสามารถของระบบพื้นฐานด้วย

  • Pose: สถานที่ในระบบพิกัดที่กำหนดเองซึ่งมีตำแหน่งและการวางแนวที่เชื่อมโยงอยู่ คุณจะใช้คลาสนี้เพื่อสื่อสารตำแหน่งของออบเจ็กต์กับ ARCore สำหรับ Jetpack XR และ Jetpack SceneCore

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

  • ขณะนี้ configure ยังไม่มีการดำเนินการใดๆ การเปิดตัวในอนาคตจะเพิ่มการตั้งค่าใหม่ที่คุณใช้ควบคุมลักษณะการทำงานของ Session ได้