ARCore สำหรับ Jetpack XR

นำเนื้อหาดิจิทัลมาไว้ในโลกแห่งความเป็นจริงด้วยความสามารถในการรับรู้
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า รุ่นอัลฟ่า
6 พฤษภาคม 2026 - - - 1.0.0-alpha13

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

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

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

ดึงดูด

dependencies {
    implementation "androidx.xr.arcore:arcore:1.0.0-alpha13"

    // Optional dependencies for asynchronous conversions
    implementation "androidx.xr.arcore:arcore-guava:1.0.0-alpha13"
    implementation "androidx.xr.arcore:arcore-rxjava3:1.0.0-alpha13"
}

Kotlin

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

    // Optional dependencies for asynchronous conversions
    implementation("androidx.xr.arcore:arcore-guava:1.0.0-alpha13")
    implementation("androidx.xr.arcore:arcore-rxjava3:1.0.0-alpha13")
}

ดูข้อมูลเพิ่มเติมเกี่ยวกับทรัพยากร Dependency ได้ที่หัวข้อเพิ่มทรัพยากร Dependency ในการสร้าง

ความคิดเห็น

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

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

ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของIssue Tracker

เวอร์ชัน 1.0

เวอร์ชัน 1.0.0-alpha13

6 พฤษภาคม 2026

เปิดตัว androidx.xr.arcore:arcore-*:1.0.0-alpha13 แล้ว เวอร์ชัน 1.0.0-alpha13 มี การคอมมิตต่อไปนี้

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

  • TrackingState และ VpsAvailabilityResult ย้ายไปอยู่ที่ androidx.xr.arcore package แล้ว และตอนนี้เราได้เลิกใช้งานประเภทใน androidx.xr.runtime แล้ว (Ic7930, b/480462213)
  • เปลี่ยนชื่อ Plane.Type เป็น PlaneType (I8c90c, b/482675376)
  • เปลี่ยนชื่อ Hand.HandSide เป็น HandSide (Ica562, b/482675376)
  • เปลี่ยนชื่อ Plane.Label เป็น PlaneLabel (Ic6b67, b/482675376)
  • เปลี่ยนชื่อ Geospatial.Surface เป็น GeospatialSurface (I1a8be, b/482675376)
  • เปลี่ยนชื่อ Geospatial.State เป็น GeospatialState (I203fa, b/482675376)
  • ย้าย API NativeData ไปที่ไลบรารี xr:runtime:runtime (I87954, b/494251500)
  • ตอนนี้ Session.create และ Session.configure ไม่ครอบคลุมทั้งหมดและต้องมีคําสั่ง else ในคําสั่ง when (I9885e, b/495805998, b/495805998)
  • เลิกใช้งาน androidx.xr.runtime.FieldOfView แล้ว ให้ใช้ androidx.xr.runtime.math.FieldOfView แทน (Ia01a0, b/480233045)
  • เปลี่ยน Orbiter ให้ใช้ OrbiterAnchorPoint + VolumeOffset หรือ OrbiterPoseProvider แทนตําแหน่ง ออฟเซ็ต ประเภทออฟเซ็ต การจัดแนว และระดับความสูง นอกจากนี้ยังนําพารามิเตอร์ shouldRenderInNonSpatial ออกด้วย หากนักพัฒนาแอปไม่ต้องการให้ Orbiter แสดงผลในพื้นที่ที่ไม่ใช่เชิงพื้นที่ ก็ควรใส่ Orbiter ไว้ในคําสั่ง if และตรวจสอบ SpatialCapabilities (I9fbb3, b/462428503)
  • เพิ่มตัวแก้ไขที่เคลื่อนย้ายได้ ตัวแก้ไขเหล่านี้ทํางานได้ดีในตอนนี้สําหรับ SpatialPanels และ SpatialExternalSurface และจะรองรับ SpatialGltfModels ในเร็วๆ นี้ด้วย อย่างไรก็ตาม เราตั้งใจที่จะให้ตัวแก้ไขเหล่านี้รองรับ SubspaceComposables ทั้งหมดได้ดี (I9a3cd, b/479530787, b/478935063, b/478935063)
  • นักพัฒนาแอปควรสังเกต Flow ArDevice.state เพื่อตรวจสอบ State.trackingState และปรับการแสดงผลหรือคําเตือนของแอปพลิเคชันตามความเหมาะสมโดยอิงตามความแม่นยําในการติดตาม (Ic00f0, b/445466590)
  • เปลี่ยนชื่อค่า enum HandJointType (Ifbc83, b/482670596)
  • เปลี่ยนชื่อค่าคงที่ FaceConfidenceRegion (Ia62d5, b/482670596)
  • เปลี่ยนชื่อค่าคงที่ FaceBlendShapeType (I33b8b, b/482670596)
  • เพิ่ม CreatePoseFromGeospatialPoseErrorInternal และ CreateGeospatialPoseFromPoseErrorInternal (I4bcf1, b/482666615)
  • เปลี่ยนชื่อ DeviceTrackingMode.LAST_KNOWN เป็น SPATIAL_LAST_KNOWN (พร้อมการรองรับการใช้งานแบบเดิมที่เลิกใช้งานแล้ว) เพิ่ม INERTIAL_LAST_KNOWN สําหรับการติดตาม 3DoF และเพิ่ม TRACKING_DEGRADED ลงใน TrackingState (Ie661c, b/445466590)
  • เลิกใช้งาน GroupEntity แล้ว หากต้องการ Entity ที่มีฟังก์ชันการทํางาน Entity พื้นฐานเท่านั้น ให้เรียกใช้ Entity.create ซึ่งจะแสดงผลอินเทอร์เฟซ Entity (I4c450, b/473867483)
  • เพิ่ม API XrLog ตั้งค่า XrLog.isEnabled เป็น true เพื่อเปิดใช้การบันทึกใน JetpackXR และใช้ XrLog.Level เพื่อตั้งค่าระดับการบันทึก (I76a1f, b/463460895, b/487378441)

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

  • เพิ่มการรองรับสถานะการติดตามอุปกรณ์ลงในอุปกรณ์ OpenXR (I91485, b/445466590)

เวอร์ชัน 1.0.0-alpha12

25 มีนาคม 2026

เปิดตัว androidx.xr.arcore:arcore-*:1.0.0-alpha12 แล้ว เวอร์ชัน 1.0.0-alpha12 มีการคอมมิตต่อไปนี้

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

  • เปลี่ยน Config.augmentedObjectCategories จาก List เป็น Set (I25a64, b/487376359)
  • ประเภท androidx.xr.arcore.Eye และ androidx.xr.arcore.Hand (I42438, b/449032900)
  • เพิ่มการโอเวอร์โหลด Session.create เพื่ออนุญาตให้ส่งผ่านบริบทของ Android สําหรับการกำหนดขอบเขตทรัพยากร (I7d3fe, b/415805990, b/477386334)
  • เปลี่ยน FakeRuntimeAnchor.ANCHOR_RESOURCE_LIMIT เป็น FakeRuntimeAnchor.anchorResourceLimit (I90841, b/431992235)
  • ทําให้ API TiltGesture เป็นแบบทดลอง เนื่องจากอาจมีการเปลี่ยนแปลงหรือนําออกในอนาคต หากต้องการใช้ API นี้ ให้เลือกใช้ @ExperimentalGesturesApi (Ic9858)
  • เพิ่มความสามารถในการตั้งค่าหมวดหมู่สําหรับการติดตาม AugmentedObject ใน Config (I1f6e4, b/480220930)

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

  • แก้ไขการสร้าง Chrome โดยการอัปเดตไฟล์ META-INF/services/ ด้วยตําแหน่งจริงของ PerceptionRuntimeFactory (I7a801, b/481288291)

เวอร์ชัน 1.0.0-alpha11

25 กุมภาพันธ์ 2026

เปิดตัว androidx.xr.arcore:arcore-*:1.0.0-alpha11 แล้ว เวอร์ชัน 1.0.0-alpha11 มี การคอมมิตต่อไปนี้

เวอร์ชัน 1.0.0-alpha10

28 มกราคม 2026

เปิดตัว androidx.xr.arcore:arcore-*:1.0.0-alpha10 แล้ว เวอร์ชัน 1.0.0-alpha10 มี การคอมมิตต่อไปนี้

ฟีเจอร์ใหม่

  • เปิดตัว API TiltGesture ซึ่งมี Flow แบบโต้ตอบสําหรับการตรวจจับสถานะการเอียง (ขึ้น/ลง) ของอุปกรณ์อย่างเสถียรพร้อมความคืบหน้าในการเปลี่ยนผ่าน (Ic269f, b/448152779)
  • ตอนนี้ ARCore สำหรับ Jetpack XR ใช้กลไกการบันทึก XR Runtime แล้ว ดูข้อมูลเพิ่มเติมได้ที่ androidx.xr.runtime.Log (l52735, b/448697662)

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

  • ตอนนี้ Geospatial.createPoseFromGeospatialPose ใช้งานได้ในอุปกรณ์ที่เปิดใช้ OpenXR แล้ว (l362c6)

เวอร์ชัน 1.0.0-alpha09

3 ธันวาคม 2025

เปิดตัว androidx.xr.arcore:arcore-*:1.0.0-alpha09 แล้ว เวอร์ชัน 1.0.0-alpha09 มี การคอมมิตต่อไปนี้

เวอร์ชัน 1.0.0-alpha08

19 พฤศจิกายน 2025

เปิดตัว androidx.xr.arcore:arcore-*:1.0.0-alpha08 แล้ว เวอร์ชัน 1.0.0-alpha08 มีการคอมมิตต่อไปนี้

ฟีเจอร์ใหม่

  • ตอนนี้ ARCore สำหรับ Jetpack XR รองรับอุปกรณ์ที่มีบริการ Google Play สำหรับ AR แล้ว
  • เพิ่ม Geospatial API สําหรับความพร้อมใช้งานของ VPS และการแปลงท่า (I144dc)

เวอร์ชัน 1.0.0-alpha07

22 ตุลาคม 2025

เปิดตัว androidx.xr.arcore:arcore-*:1.0.0-alpha07 แล้ว เวอร์ชัน 1.0.0-alpha07 มีการคอมมิตต่อไปนี้

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

  • :xr:arcore:arcore-openxr เพิ่มเป็นทรัพยากร Dependency ในการติดตั้งใช้งานลงใน :xr:arcore:arcore (I47315, b/446999229)

เวอร์ชัน 1.0.0-alpha06

24 กันยายน 2025

เปิดตัว androidx.xr.arcore:arcore-*:1.0.0-alpha06 แล้ว เวอร์ชัน 1.0.0-alpha06 มีการคอมมิตต่อไปนี้

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

  • การรองรับการทดสอบ ARCore ได้ย้ายไปอยู่ที่โมดูล xr:arcore:arcore-testing แล้ว (I25469)
  • เพิ่ม ArDevice และ RenderViewpoint เพื่ออนุญาตให้แอปพลิเคชันดึงท่าทางและการกําหนดค่าการแสดงผลของอุปกรณ์เพื่อวัตถุประสงค์ในการแสดงผล (Ib7e3f)
  • เปลี่ยนชื่อ enum HandJointType โดยใช้คํานําหน้า HAND_JOINT_TYPE_ (I3f7cd)
  • ย้าย HandJointType จาก xr:runtime:runtime ไปที่ xr:arcore:arcore (Iadb9c, b/409058039)
  • Hand.State ตอนนี้แสดง java.nio.FloatBuffer พร้อมท่าทางของข้อต่อในรูปแบบที่ช่วยให้เข้าถึงแอปพลิเคชันที่เน้นประสิทธิภาพได้ง่าย (I55e27)

เวอร์ชัน 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)
  • เพิ่ม Geospatial API เพื่อตรวจสอบความพร้อมใช้งานของ VPS (I58573)
  • เพิ่ม ARCore API สําหรับ checkVpsAvailability (Idbded)
  • เพิ่มฟังก์ชันส่วนขยาย stateFlowable ลงใน :xr:arcore:arcore-rxjava3 เพื่อให้นักพัฒนาแอป Java ใช้งานได้ (I083aa, b/427247794)

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

  • เปลี่ยนชื่อค่า *Mode ของ Config เพื่อให้สะท้อนลักษณะการทํางาน (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 ไปที่ Runtime แล้ว
  • เปลี่ยน 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 ที่มีอยู่ และมีความสามารถในการผสมผสานเนื้อหาดิจิทัลเข้ากับโลกแห่งความเป็นจริง ไลบรารีนี้มีการติดตามการเคลื่อนไหว Anchor แบบถาวร การทดสอบการชน และการระบุระนาบด้วยการติดป้ายกำกับเชิงความหมาย (เช่น พื้น ผนัง และโต๊ะ) ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ ARCore สำหรับ Jetpack XR ได้ในคู่มือสำหรับนักพัฒนาแอป

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

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

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

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

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

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

ปัญหาที่ทราบเกี่ยวกับ

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

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

  • ปัจจุบันระบบยังไม่รองรับการคงอยู่ของ Anchor ที่เคยคงอยู่และไม่คงอยู่

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

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