ARCore สำหรับ Jetpack XR

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

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

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

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

ดึงดูด

dependencies {
    implementation "androidx.xr.arcore:arcore:1.0.0-alpha05"
}

Kotlin

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

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

ความคิดเห็น

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

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

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

รุ่น 1.0

เวอร์ชัน 1.0.0-alpha05

30 กรกฎาคม 2025

androidx.xr.arcore:arcore:1.0.0-alpha05 androidx.xr.arcore:arcore-guava:1.0.0-alpha05 และ androidx.xr.arcore:arcore-rxjava3:1.0.0-alpha05 ออกอากาศแล้ว เวอร์ชัน 1.0.0-alpha05 มีการคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่ม getPrimaryHandSide เพื่อให้นักพัฒนาแอปได้รับข้อมูลด้านขวามือ (I270bd)
  • เพิ่ม API ความพร้อมใช้งานของ VPS สำหรับการตรวจสอบภูมิสารสนเทศ (I58573)
  • เพิ่ม ARCore API สำหรับ checkVpsAvailability (Idbded)
  • เพิ่มฟังก์ชันส่วนขยาย stateFlowable ลงใน :xr:arcore:arcore-rxjava3 เพื่อให้นักพัฒนาซอฟต์แวร์ Java ใช้งานได้ (I083aa, b/427247794)

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

  • เราได้เปลี่ยนชื่อค่าการกำหนดค่า *Mode เพื่อให้สอดคล้องกับลักษณะการทำงานของค่าเหล่านั้น (I6d247, b/414648065)
  • อาร์ติแฟกต์ ARCore หลัก (xr:arcore:arcore) จะมีเฉพาะ API แบบอะซิงโครนัสสไตล์ Kotlin เท่านั้น นักพัฒนาซอฟต์แวร์ Java สามารถใช้ไลบรารี xr:arcore:arcore-rxjava3 เพื่อเข้าถึง API ที่เข้ากันได้ (Ia525e, b/422794329)
  • อาร์ติแฟกต์ ARCore หลัก (xr:scenecore:scenecore) จะมีเฉพาะ API แบบไม่พร้อมกันในรูปแบบ Kotlin เท่านั้น นักพัฒนาซอฟต์แวร์ Java สามารถใช้ไลบรารี xr:arcore:arcore-guava เพื่อเข้าถึง API ที่เข้ากันได้ (Iffcb4, b/422773524)
  • เพิ่ม Anchor.persistAsync() ลงใน AnchorGuava เพื่อให้นักพัฒนา Java ใช้งาน (I4af1c, b/425984631)
  • เพิ่ม Earth.createAnchorOnSurfaceAsync(Session, Double, Double, Double, Quaternion, Surface) ลงใน EarthGuava เพื่อให้นักพัฒนา Java ใช้งาน (I66357, b/425992992)
  • นักพัฒนาแอป Java จะใช้ฟังก์ชันส่วนขยายสำหรับ GltfModel.createAsync ใน GltfModel.kt ระบบจะลบฟังก์ชันแบบอะซิงโครนัสใน GltfModel (I0af60)
  • ตอนนี้ไลบรารีนี้ใช้คำอธิบายประกอบเกี่ยวกับค่า Null ของ JSpecify ซึ่งเป็นแบบใช้ประเภท นักพัฒนา Kotlin ควรใช้อาร์กิวเมนต์คอมไพเลอร์ต่อไปนี้เพื่อบังคับใช้การใช้งานที่ถูกต้อง: -Xjspecify-annotations=strict (นี่คือค่าเริ่มต้นที่เริ่มต้นด้วยคอมไพเลอร์ Kotlin เวอร์ชัน 2.1.0) (Ia8420, b/326456246)
  • เพิ่มฟังก์ชันส่วนขยาย subscribeAsFlowable ลงใน :xr:arcore:arcore-rxjava3 เพื่อให้นักพัฒนาซอฟต์แวร์ Java ใช้งานได้ (Id3e49, b/427277298)

เวอร์ชัน 1.0.0-alpha04

7 พฤษภาคม 2025

androidx.xr.arcore:arcore:1.0.0-alpha04 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้

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

  • โปรเจ็กต์ที่เผยแพร่ด้วย Kotlin 2.0 ต้องใช้ KGP 2.0.0 ขึ้นไป (Idb6b5)
  • ย้าย TrackingState และ HandJointType จาก ARCore ไปยังรันไทม์แล้ว
  • เปลี่ยน Hand.State.isActive (boolean) เป็น Hand.State.trackingState (androidx.xr.runtime.TrackingState) แล้ว
  • Anchor.load จะแสดงผล Anchor.AnchorLoadInvalidUuid หาก UUID ไม่ถูกต้อง

เวอร์ชัน 1.0.0-alpha03

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

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

เวอร์ชัน 1.0.0-alpha02

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

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

ฟีเจอร์ใหม่

  • เพิ่มการรองรับการติดตามการเคลื่อนไหวของมือ ใช้ Hand.left และ Hand.right เพื่อเข้าถึงข้อมูลการติดตาม
  • ตอนนี้ API ที่สร้าง Anchor (Anchor.create, Anchor.load, Plane.createAnchor) จะแสดงผล AnchorCreateResult ทั้งหมดและใช้ AnchorCreateResourcesExhausted อย่างถูกต้อง

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

  • Anchor.detach ไม่ทำให้เกิดข้อขัดข้องร้ายแรงอีกต่อไปเนื่องจากสภาวะการแข่งขันกับเธรดการอัปเดตเซสชัน
  • Anchor.create จะเสถียรมากขึ้นเมื่อทำงานในโปรแกรมจำลอง

เวอร์ชัน 1.0.0-alpha01

12 ธันวาคม 2024

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

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

ไลบรารี ARCore สำหรับ Jetpack XR ได้รับแรงบันดาลใจจากไลบรารี ARCore ที่มีอยู่ และมอบความสามารถในการผสมผสานเนื้อหาดิจิทัลเข้ากับโลกจริง ไลบรารีนี้ประกอบด้วยการติดตามการเคลื่อนไหว สมอแบบถาวร การทดสอบการตรวจจับ และการระบุระนาบด้วยการติดป้ายกำกับเชิงความหมาย (เช่น พื้น ผนัง และโต๊ะ) ดูข้อมูลเพิ่มเติมเกี่ยวกับการทำงานกับ ARCore สำหรับ Jetpack XR ได้ในคู่มือนักพัฒนาซอฟต์แวร์

  • Session: ARCore สำหรับ Jetpack XR ใช้รันไทม์ Jetpack XR เบื้องหลังเพื่อขับเคลื่อนฟังก์ชันการทำงาน คุณจะใช้เซสชันเพื่อโต้ตอบกับ API ของ ARCore สำหรับ Jetpack XR ส่วนใหญ่ ดังนั้นโปรดดูเอกสารประกอบ

  • Plane: ใช้เครื่องบินเพื่อทำความเข้าใจโลกรอบตัว ระนาบแต่ละระนาบมี Label ที่อธิบายระนาบนั้นในเชิงความหมาย คุณใช้ subscribe เพื่อรับการแจ้งเตือนเกี่ยวกับเครื่องบินที่ตรวจพบใหม่ล่าสุด หรือ state เพื่อรับการแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงของเครื่องบินที่เฉพาะเจาะจงได้

  • Anchor: ลิงก์ระหว่างออบเจ็กต์เสมือนกับสถานที่ในโลกแห่งความจริง คุณแนบ Anchor กับตำแหน่งที่เฉพาะเจาะจงในพื้นที่ (โดยใช้ create) หรือTrackable (โดยใช้ createAnchor) ได้

    • คุณนำจุดยึดกลับมาใช้ใหม่ได้ในเซสชันต่างๆ คุณสามารถใช้ persist เพื่อจัดเก็บ getPersistedAnchorUuids เพื่อแสดงรายการ และ load เพื่อดึงข้อมูล โปรดunpersistเมื่อไม่ได้ใช้งานแล้ว

    • Anchor สามารถทำงานร่วมกันระหว่าง ARCore สำหรับ Jetpack XR และ Jetpack SceneCore ได้ คุณสามารถสร้าง AnchorEntity โดยใช้ Anchor หรือหากมี AnchorEntity อยู่แล้ว คุณสามารถใช้ getAnchor เพื่อดึงข้อมูล Anchor ที่รองรับได้

    • เสนอการโต้ตอบของผู้ใช้ที่เป็นธรรมชาติโดยใช้ hitTest HitTest ใช้ Ray เพื่อระบุเนื้อหาที่ตัดกันและสร้าง Anchor จากตำแหน่งนั้น ลองทำการทดสอบการยิงรังสีจาก InputEvent

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

  • อาจมีความล่าช้าระหว่างการเรียกใช้ unpersist กับการนำ UUID ออกจากผลลัพธ์ที่ getPersistedAnchorUuids แสดง

  • create จะไม่ตรวจสอบว่าระบบมีทรัพยากรเพียงพอที่จะแสดงแองเคิลใหม่หรือไม่ การสร้าง Anchor มากเกินไปอาจทำให้เกิดข้อขัดข้อง

  • ขณะนี้ระบบยังไม่รองรับการคง Anchor ที่ก่อนหน้านี้คงอยู่และไม่ได้คงอยู่

  • ระบบรองรับการใช้งานในโปรแกรมจำลอง แต่ลักษณะการทำงานอาจไม่เสถียรเท่ากับการเรียกใช้ในอุปกรณ์จริง โดยเฉพาะการโทรไปยัง create อาจล้มเหลวเนื่องจากข้อผิดพลาดของโค้ดเนทีฟและยุติกิจกรรมทันที

  • ในบางกรณี ระบบอาจส่ง RuntimeException อย่างไม่ถูกต้องเมื่อเรียกใช้ persist พร้อมข้อความ "Anchor was not persisted" ในกรณีดังกล่าว ฟังก์ชันจะยังคงทำงานได้สำเร็จและจะมีการคงอยู่ของ Anchor เราขอแนะนำให้คุณใส่การเรียกใช้ persist ไว้ในบล็อก try เพื่อเป็นการแก้ปัญหาชั่วคราว