กำหนดการตั้งค่าของแอปเพื่อให้ใช้ Geospatial API ได้
ข้อกำหนดเบื้องต้น
ตรวจสอบว่าคุณเข้าใจแนวคิด AR พื้นฐาน และวิธีกําหนดค่าเซสชัน ARCore ก่อนดำเนินการต่อ
หากคุณต้องการเรียกใช้แอปตัวอย่างที่แสดงฟังก์ชันการทำงานที่อธิบายไว้ คุณจะเห็น การเริ่มต้นใช้งาน ARCore Geospatial อย่างรวดเร็วสำหรับ Android สำหรับ Java แอปตัวอย่างใน Quickstart เขียนโดยใช้ Java ตัวอย่างโค้ด ในเอกสารนี้มีไว้เพื่อฟังก์ชันการทำงานเดียวกันกับที่เขียนด้วยภาษา C
โปรดดู ข้อมูลเบื้องต้นเกี่ยวกับ Geospatial API สำหรับข้อมูลเพิ่มเติม เกี่ยวกับ Geospatial API
หากคุณเพิ่งเริ่มพัฒนาโดยใช้ ARCore โปรดดูการเริ่มต้นใช้งาน สำหรับข้อมูลเกี่ยวกับข้อกำหนดของซอฟต์แวร์และฮาร์ดแวร์ คุณสมบัติเบื้องต้น และ ข้อมูลอื่นๆ ที่เกี่ยวข้องกับแพลตฟอร์มที่คุณใช้
โปรดตรวจสอบว่าสภาพแวดล้อมในการพัฒนาเป็นไปตามข้อกำหนดของ ARCore SDK ดัง ที่อธิบายไว้ใน Quickstart สำหรับ Java
เปิดใช้ ARCore API
ก่อนที่จะใช้ Visual Positioning System (VPS) ในแอปของคุณ ก่อนอื่น เปิดใช้ ARCore API ในโปรเจ็กต์ Google Cloud ใหม่หรือที่มีอยู่ บริการนี้มีหน้าที่ การโฮสต์ การจัดเก็บ และการแปล Anchor ภูมิสารสนเทศ
เราขอแนะนำให้ใช้การให้สิทธิ์แบบไม่ใช้คีย์ แต่ก็รองรับการให้สิทธิ์คีย์ API ด้วย
เพิ่มไลบรารีที่จำเป็นลงในแอป
หลังจากให้สิทธิ์แอปเรียกใช้ ARCore API แล้ว คุณต้องเพิ่มไลบรารีลงใน เปิดใช้ฟีเจอร์ภูมิสารสนเทศในแอป
ในไฟล์ build.gradle
ของแอป ให้ตั้งค่าบริการ Google Play เพื่อรวม Play
ไลบรารีสถานที่ของบริการ
dependencies {
// Apps must declare play-services-location version >= 16.
// In the following line, substitute `16 (or later)` with the latest version.
implementation 'com.google.android.gms:play-services-location:16 (or later)'
}
เปิดใช้ความสามารถด้านภูมิสารสนเทศในการกำหนดค่าเซสชัน
ก่อนสร้างเซสชัน ให้เปลี่ยน GeospatialMode
ในเซสชัน
การกำหนดค่าเป็น ENABLED
:
// Create a session config. ArConfig* ar_config = NULL; ArConfig_create(ar_session, &ar_config); // Enable the Geospatial API. ArConfig_setGeospatialMode(ar_session, ar_config, AR_GEOSPATIAL_MODE_ENABLED); CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS); // Release config resources. ArConfig_destroy(ar_config);
ขณะที่ตั้งค่าโหมดภูมิสารสนเทศเป็น ENABLED
แอปพลิเคชันจะได้รับอนุญาตให้
ข้อมูลทางภูมิศาสตร์จาก Visual Positioning System (VPS)
แจ้งให้ผู้ใช้อนุญาตให้ใช้ข้อมูลของอุปกรณ์
แอปที่ใช้ ARCore Geospatial API จะต้องแสดงข้อความแจ้งแก่ผู้ใช้เพื่อ รับทราบและอนุญาตให้ใช้ข้อมูลจากอุปกรณ์ของตน โปรดดู ข้อกำหนดด้านความเป็นส่วนตัวของผู้ใช้เพิ่มเติม
ตรวจสอบความเข้ากันได้ของอุปกรณ์
อุปกรณ์บางรุ่นที่รองรับ ARCore จะรองรับ Geospatial API เท่านั้นเนื่องจาก ที่อธิบายไว้ในการเริ่มต้นอย่างรวดเร็ว สำหรับ Java
หากต้องการตรวจสอบความเข้ากันได้กับอุปกรณ์ของผู้ใช้ โปรดโทร
ArSession_isGeospatialModeSupported()
หากค่านี้ส่งคืนเป็น "เท็จ" อย่าพยายามกำหนดค่าเซสชัน (ด้านล่าง) ดังเช่น
ดังนั้น ArStatus
จะรายงาน
AR_ERROR_UNSUPPORTED_CONFIGURATION
ขอสิทธิ์เข้าถึงตำแหน่งจากผู้ใช้ขณะรันไทม์
แอปของคุณต้องขอสิทธิ์เข้าถึงตำแหน่งขณะรันไทม์
หากต้องการใช้ ARCore Geospatial API แอปของคุณต้องลงทะเบียนสิ่งต่อไปนี้ การอนุญาตเพิ่มเติม:
ACCESS_FINE_LOCATION
เพื่อระบุตำแหน่งของผู้ใช้ได้อย่างแม่นยำACCESS_COARSE_LOCATION
เพื่อระบุตำแหน่งของผู้ใช้อย่างไม่ถูกต้องและเพื่อปฏิบัติตาม ข้อกำหนดด้านความเป็นส่วนตัวของผู้ใช้ แต่ไม่สามารถกำหนดค่า Geospatial API ได้ ตำแหน่งคร่าวๆ ได้ และคำขอ API จะล้มเหลวเมื่อผู้ใช้มี ตั้งสิทธิ์นี้ โปรดดูข้อมูลเพิ่มเติมด้านล่างACCESS_INTERNET
เพื่อติดต่อบริการ ARCore Geospatial API
<manifest ... >
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
ในอุปกรณ์ที่ใช้ Android เวอร์ชัน 12 ขึ้นไป
ผู้ใช้ขอ
ที่แอปของคุณเข้าถึงได้เท่านั้น
ตำแหน่งโดยประมาณ
เพื่อรองรับคำขอนี้ แอปของคุณต้องมี
ACCESS_COARSE_LOCATION
กำหนดค่าสิทธิ์แล้วพร้อมกับ
ACCESS_FINE_LOCATION
,
ดังที่แสดงด้านบน คุณต้อง
กำหนดค่าสิทธิ์เข้าถึงตำแหน่งทั้ง 2 รายการ
แต่เมื่อผู้ใช้ระบุตำแหน่งคร่าวๆ การทำเช่นนั้นจะป้องกันภูมิสารสนเทศ API จากการรับข้อมูลตำแหน่งที่แน่นอนที่ต้องการ บริการภูมิสารสนเทศจะ ไม่อนุญาตให้กำหนดค่าตัวเองหากแอปของคุณให้เฉพาะตำแหน่งคร่าวๆ แอปใช้ Geospatial API กับตำแหน่งคร่าวๆ ไม่ได้
ตรวจสอบความพร้อมให้บริการของภูมิสารสนเทศ ณ ตำแหน่งปัจจุบันของอุปกรณ์
เนื่องจาก Geospatial API ใช้ VPS และ GPS ร่วมกันในการกำหนดตำแหน่งของภูมิสารสนเทศ จึงสามารถใช้ API ดังกล่าวได้ตราบเท่าที่อุปกรณ์สามารถระบุตำแหน่งของตนได้ ในพื้นที่ที่ GPS มีความแม่นยำต่ำ เช่น ในพื้นที่ในอาคารและสภาพแวดล้อมในเมืองที่หนาแน่น API จะใช้การครอบคลุม VPS เพื่อสร้างท่าทางที่มีความแม่นยำสูง ภายใต้เงื่อนไขทั่วไป VPS ควรมีความแม่นยำในการระบุตำแหน่งประมาณ 5 เมตร และความแม่นยำในการหมุน 5 องศา ใช้ ArSession_checkVpsAvailabilityAsync()
เพื่อระบุว่าสถานที่ตั้งหนึ่งๆ มีการครอบคลุม VPS หรือไม่
นอกจากนี้ Geospatial API ยังใช้ในพื้นที่ที่ไม่ครอบคลุม VPS ได้อีกด้วย ในสภาพแวดล้อมกลางแจ้งที่มีสิ่งกีดขวางจากด้านบนเล็กน้อยหรือไม่มีเลย GPS อาจเพียงพอที่จะสร้างท่าทางที่มีความแม่นยำสูง
ขั้นตอนถัดไป
- ดูตำแหน่งทางภูมิศาสตร์ของกล้องของอุปกรณ์เพื่อระบุตำแหน่งที่เจาะจงของอุปกรณ์ผู้ใช้ในชีวิตจริง
- ตรวจสอบความพร้อมใช้งาน VPS ในตำแหน่งที่ระบุของอุปกรณ์