ลองใช้การโฮสต์และแก้ไข Cloud Anchor ในแอปตัวอย่าง cloud_anchor_java
และ persistent_cloud_anchor_java
คุณควรใช้แอปตัวอย่างใด
Cloud Anchor คือแท็ก Anchor ที่โฮสต์ในปลายทางระบบคลาวด์ ARCore API API นี้ช่วยให้ผู้ใช้แชร์ประสบการณ์ในแอปเดียวกันได้ Persistent Cloud Anchor คือ Cloud Anchor ที่ใช้ได้มากกว่า 24 ชั่วโมง
persistent_cloud_anchor_java
คือการนำกรณีการใช้งานโครงการแบบทำงานร่วมกัน ใช้การให้สิทธิ์แบบไม่ใช้คีย์เพื่อให้สิทธิ์การเรียก ARCore API และเนื่องจากไม่ได้ใช้แบ็กเอนด์ของ Firebase ในการแชร์รหัส Cloud Anchor ระหว่างอุปกรณ์ คุณจึงเริ่มต้นใช้งานได้ง่ายขึ้นมากcloud_anchor_java
เป็นการนำกรณีการใช้งานแบบผู้เล่นหลายคน โดยใช้คีย์ API เพื่อให้สิทธิ์การเรียก ARCore API
ข้อกำหนดเบื้องต้น
- ทำความเข้าใจวิธีการทำงานของ Anchor และ Cloud Anchor
- ติดตั้งและกำหนดค่า ARCore SDK สำหรับ Android
ข้อกำหนด
ฮาร์ดแวร์
- อุปกรณ์ที่รองรับ ARCore ที่ติดตั้งบริการ Google Play สำหรับ AR เวอร์ชันล่าสุด
- สาย USB สำหรับเชื่อมต่ออุปกรณ์กับเครื่องพัฒนาซอฟต์แวร์
ซอฟต์แวร์
- Android Studio เวอร์ชัน 3.0 ขึ้นไปที่ใช้แพลตฟอร์ม Android SDK เวอร์ชัน 7.0 (API ระดับ 24) ขึ้นไป
- ARCore SDK สำหรับ Android ซึ่งคุณจะรับได้ 2 วิธีดังนี้
- ดาวน์โหลดจาก GitHub และแตกไฟล์ในเครื่องของคุณ
- โคลนที่เก็บด้วยคำสั่งต่อไปนี้
git clone https://github.com/google-ar/arcore-android-sdk.git
เปิดแอปตัวอย่างใน Android Studio
ARCore SDK มี cloud_anchor_java
และแอปตัวอย่าง persistent_cloud_anchor_java
แอปเพื่อสาธิตฟังก์ชันการทำงานของ Cloud Anchor ทำตามขั้นตอนเหล่านี้เพื่อเปิดแอปใน Android Studio
แท็ก Anchor ของระบบคลาวด์ถาวร
คลิกเปิดใน Android Studio
ไปยังตำแหน่งที่เก็บไดเรกทอรี arcore-android-sdk ในเครื่อง อย่าเปิดทั้งโฟลเดอร์ SDK ให้ไปที่ตัวอย่าง > persistent_cloud_anchor_java แล้วคลิกเปิดแทน
แท็ก Anchor ของ Cloud
คลิกเปิดใน Android Studio
ไปยังตำแหน่งที่เก็บไดเรกทอรี arcore-android-sdk ในเครื่อง อย่าเปิดทั้งโฟลเดอร์ SDK ให้ไปที่ตัวอย่าง > cloud_anchor_java แล้วคลิกเปิด
ตั้งค่าการแชร์รหัส Cloud Anchor
รหัส Cloud Anchor เป็นสตริงที่ระบุ Cloud Anchor ที่โฮสต์ โดยใช้ในการแก้ปัญหาหรือแสดงผลออบเจ็กต์ 3 มิติที่แนบอยู่กับ Anchor ที่โฮสต์
แท็ก Anchor ของระบบคลาวด์ถาวร
การแชร์รหัส Cloud Anchor จะอยู่ในแอปโดยที่คุณไม่ต้องดำเนินการใดๆ
แท็ก Anchor ของ Cloud
แอปตัวอย่าง cloud_anchor_java
ใช้ฐานข้อมูลแบบเรียลไทม์ของ Firebase เพื่อแชร์รหัส Cloud Anchor ระหว่างอุปกรณ์ คุณใช้โซลูชันอื่นในแอปของตัวเองได้
- เพิ่ม Firebase ในแอปด้วยตนเอง ชื่อแพ็กเกจ
cloud_anchor_java
คือcom.google.ar.core.examples.java.cloudanchor
ซึ่งดูได้ในmain/AndroidManifest.xml
- ดาวน์โหลดไฟล์
google-services.json
ที่คุณสร้างขึ้นตอนที่เพิ่ม Firebase ลงในแอป - สร้างฐานข้อมูลแบบเรียลไทม์ด้วย Firebase
- ใน Android Studio ให้เพิ่มไฟล์
google-services.json
ในไดเรกทอรีapp
ของโปรเจ็กต์
ให้สิทธิ์การเรียก ARCore API
ให้สิทธิ์การเรียก ARCore API เพื่อโฮสต์และแก้ไข Cloud Anchor สำหรับแอปของคุณ ทำตามขั้นตอนในหัวข้อใช้ ARCore API บน Google Cloud และใช้การให้สิทธิ์ Keyless สำหรับ Persistent Cloud Anchor หรือการให้สิทธิ์คีย์ API สำหรับ Cloud Anchor
สร้างและเรียกใช้แอปตัวอย่าง
แท็ก Anchor ของระบบคลาวด์ถาวร
เรียกใช้แอป
- ตรวจสอบว่าอุปกรณ์เปิดใช้ตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์และการแก้ไขข้อบกพร่อง USB แล้ว
- เชื่อมต่ออุปกรณ์ของคุณกับเครื่องพัฒนาซอฟต์แวร์ผ่าน USB
- ใน Android Studio ให้เลือกอุปกรณ์ของคุณเป็นเป้าหมายการทำให้ใช้งานได้ แล้วคลิกเรียกใช้
persistent_cloud_anchor_java
ควรเปิดในอุปกรณ์ของคุณ โดยแจ้งให้ ARCore ตรวจหาเครื่องบินที่อยู่หน้ากล้องของอุปกรณ์
หากการให้สิทธิ์ Google Cloud ไม่สำเร็จ โปรดดูขั้นตอนการแก้ปัญหา
วางแท็ก Anchor
- เมื่อแอปเริ่มตรวจจับเครื่องบิน ให้แตะหน้าจอเพื่อวางสมอบนระนาบที่ตรวจพบ
- แตะปุ่มโฮสต์เพื่อโฮสต์จุดยึดที่วางไว้ การดำเนินการนี้จะส่งคำขอโฮสต์ไปยัง ARCore API ซึ่งรวมถึงข้อมูลที่แสดงตำแหน่งของ Anchor ที่สัมพันธ์กับฟีเจอร์ภาพที่อยู่ใกล้เคียง
คำขอโฮสต์ที่ประสบความสำเร็จจะสร้าง Anchor ในตำแหน่งที่วางไว้ และกำหนดรหัส Cloud Anchor ให้กับคำขอนั้น หากคำขอของผู้จัดสำเร็จ แอปควรแสดงรหัสห้อง คุณจะใช้รหัสนี้เพื่อเข้าถึง Anchor ที่เคยโฮสต์ไว้ก่อนหน้านี้สำหรับห้องแชทนี้ได้ในอุปกรณ์ใดก็ได้
แก้ปัญหาแท็ก Anchor
- แตะแก้ไข แล้วป้อนรหัสห้องที่ส่งคืนก่อนหน้านี้เพื่อเข้าถึงแท็ก Anchor ที่โฮสต์ในห้องนี้ การดำเนินการนี้จะส่งคำขอแก้ไขไปยัง ARCore API ซึ่งจะส่งคืนรหัสของ Anchor ทั้งหมดที่โฮสต์ในห้องในปัจจุบัน
persistent_cloud_anchor_java
จะใช้รหัสดังกล่าวเพื่อแสดงวัตถุ 3 มิติที่แนบอยู่กับ Anchor ที่โฮสต์
แท็ก Anchor ของ Cloud
เรียกใช้แอป
- ตรวจสอบว่าอุปกรณ์เปิดใช้ตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์และการแก้ไขข้อบกพร่อง USB แล้ว
- เชื่อมต่ออุปกรณ์ของคุณกับเครื่องพัฒนาซอฟต์แวร์ผ่าน USB
- ใน Android Studio ให้เลือกอุปกรณ์ของคุณเป็นเป้าหมายการทำให้ใช้งานได้ แล้วคลิกเรียกใช้
cloud_anchor_java
ควรเปิดในอุปกรณ์ของคุณ โดยแจ้งให้ ARCore ตรวจหาเครื่องบินที่อยู่หน้ากล้องของอุปกรณ์
ข้อผิดพลาด: com.google.firebase.database.DatabaseException: Failed to get FirebaseDatabase instance: Specify DatabaseURL within FirebaseApp or from your getInstance
หากพบข้อผิดพลาดนี้ ให้ตรวจสอบว่ามีพร็อพเพอร์ตี้ firebase_url
ใน google-services.json
คุณสามารถหาค่าที่ถูกต้องสำหรับพร็อพเพอร์ตี้นี้ได้โดยตรวจสอบว่ามีการสร้างและดาวน์โหลด google-services.json
ใน Realtime Database แล้ว
วางแท็ก Anchor
- เมื่อแอปเริ่มตรวจจับเครื่องบิน ให้แตะหน้าจอเพื่อวางสมอบนระนาบที่ตรวจพบ
- แตะปุ่มโฮสต์เพื่อโฮสต์จุดยึดที่วางไว้ การดำเนินการนี้จะส่งคำขอโฮสต์ไปยัง ARCore API ซึ่งรวมถึงข้อมูลที่แสดงตำแหน่งของ Anchor ที่สัมพันธ์กับฟีเจอร์ภาพที่อยู่ใกล้เคียง
คำขอโฮสต์ที่ประสบความสำเร็จจะสร้าง Anchor ในตำแหน่งที่วางไว้ และกำหนดรหัส Cloud Anchor ให้กับคำขอนั้น หากคำขอของผู้จัดสำเร็จ แอปควรแสดงรหัสห้อง คุณจะใช้รหัสนี้เพื่อเข้าถึง Anchor ที่เคยโฮสต์ไว้ก่อนหน้านี้สำหรับห้องแชทนี้ได้ในอุปกรณ์ใดก็ได้
แก้ปัญหาแท็ก Anchor
- แตะแก้ไข แล้วป้อนรหัสห้องที่ส่งคืนก่อนหน้านี้เพื่อเข้าถึงแท็ก Anchor ที่โฮสต์ในห้องนี้ การดำเนินการนี้จะส่งคำขอแก้ไขไปยัง ARCore API ซึ่งจะส่งคืนรหัสของ Anchor ทั้งหมดที่โฮสต์ในห้องในปัจจุบัน
cloud_anchor_java
จะใช้รหัสดังกล่าวเพื่อแสดงวัตถุ 3 มิติที่แนบอยู่กับ Anchor ที่โฮสต์
สิ่งที่จะเกิดขึ้นหลังจากนี้
- สร้างแอป Cloud Anchor ที่มี ARCore Cloud Anchors พร้อมด้วย Codelab ของ Cloud Anchor ถาวร
- ดูวิธีรวม Cloud Anchor ไว้ในแอปจากคู่มือนักพัฒนาซอฟต์แวร์ Cloud Anchor
- จัดการ Cloud Anchor นอกแอป ARCore โดยใช้ Cloud Anchors Management API