เราขอแนะนำให้นักพัฒนาแอปขอสิทธิ์เข้าถึงตำแหน่งแบบหยาบเท่านั้นเพื่อเคารพความเป็นส่วนตัวของผู้ใช้ แอปที่ต้องการตำแหน่งคร่าวๆ มักจะใช้ตำแหน่งเครือข่าย (FLP) เนื่องจากรวดเร็วและใช้พลังงานน้อย
ตำแหน่งเครือข่ายในแอปยานยนต์อาจเป็นเรื่องยากกว่าเมื่อเทียบกับอุปกรณ์เคลื่อนที่ที่ใช้ Android คุณใช้ Android API ได้ 2 รายการ ได้แก่
LocationManager API กำหนดให้คุณระบุผู้ให้บริการตำแหน่งที่ต้องการอย่างชัดเจน
Google Play Services API นำเสนอวิธีทำงานกับตำแหน่งที่ง่ายขึ้นด้วยผู้ให้บริการตำแหน่งแบบรวม (FLP)
แอปยานยนต์หลายแอปใช้ FLP จาก Google Play Services (GPS) API แทน LM FLP จะเลือกผู้ให้บริการตำแหน่งที่เหมาะสมที่สุดตามเกณฑ์และนโยบายคำขอตำแหน่ง (กำลังและความแม่นยำ) ที่ยานพาหนะต้องการ
คุณเลือกที่จะขอและใช้ NETWORK_PROVIDER
ใน LM อย่างชัดเจนแทนได้ รวมถึงใช้ GPS_PROVIDER
สำหรับตำแหน่งแบบละเอียด ซึ่งใช้สิทธิ์ android.permission.ACCESS_FINE_LOCATION
ใน API 31 FUSED_PROVIDER
ซึ่งก่อนหน้านี้เข้าถึงได้ผ่าน GPS API เท่านั้น จะใช้เป็นผู้ให้บริการตำแหน่งให้กับ LM ได้แล้ว คุณดูการใช้งาน FLP ที่ง่ายขึ้นใน FusedLocationProvider.java
ได้
แม้ว่าคุณจะใช้ GPS_PROVIDER
กับสิทธิ์ระดับหยาบเท่านั้นได้ แต่เฟรมเวิร์กจะลดความแม่นยำลงเพื่อให้สอดคล้องกับความคาดหวัง ซึ่งไม่เหมาะสําหรับนักพัฒนาแอปที่กําหนดเป้าหมายเป็นโทรศัพท์ Android เนื่องจากความพร้อมใช้งานโดยรวมไม่ดีและมักจะช้ากว่าในการรับตําแหน่งระดับหยาบ
ตำแหน่งของเครือข่ายในยานยนต์
NETWORK_PROVIDER
ที่ใช้ในโทรศัพท์ Android (ที่มี Google Mobile Services) ได้เปลี่ยนไปจากการกำหนดตำแหน่งตามหอคอยสัญญาณมือถือที่อยู่ใกล้เคียงเพียงอย่างเดียว ไปใช้จุดเข้าใช้งาน Wi-Fi หรือบีคอนบลูทูธ (BT) ด้วย การใช้ NETWORK_PROVIDER
อาจต้องใช้การเชื่อมต่ออินเทอร์เน็ต
สำหรับแอปยานยนต์ ข้อจำกัดของอุปกรณ์จะแตกต่างกันไป เนื่องจาก GNSS เปิดอยู่โดยปกติ ระบบจะไม่หักเงินเนื่องจากการใช้พลังงานและแบตเตอรี่ที่เพิ่มขึ้น ด้วยเหตุนี้ ระยะเวลาทํางานของ IVI จึงไม่ลดลง เรามุ่งมั่นที่จะลดปริมาณข้อมูลที่แลกเปลี่ยนกับเซิร์ฟเวอร์ของเรา
แอปจํานวนมากจึงใช้ FLP จาก Play API แทน LM โดยตรง เนื่องจาก FLP จะทําสิ่งที่ฉลาดโดยอัตโนมัติโดยใช้ผู้ให้บริการตําแหน่งที่สามารถตอบสนองเกณฑ์/นโยบายคําขอตําแหน่ง (กล่าวคือ ประสิทธิภาพและความแม่นยํา) ได้ดีที่สุด
ยานพาหนะมักไม่กระโดดจากจุดหนึ่งไปยังอีกจุดหนึ่ง ซึ่งแตกต่างจากอุปกรณ์เคลื่อนที่ ตำแหน่งของยานพาหนะจะทราบได้ในส่วนที่เป็นการทำงานเบื้องหลังส่วนใหญ่
ผู้ให้บริการตำแหน่งเครือข่าย
ยานพาหนะส่วนใหญ่ไม่ได้ใช้ API การโทรที่จำเป็นเพื่อรับข้อมูลที่จำเป็นเกี่ยวกับรหัสเครือข่ายมือถือ (และระดับสัญญาณ) ด้วยเหตุนี้ และเนื่องจากเราลดการใช้ข้อมูลให้น้อยที่สุด จึงไม่มีการใช้งาน NLP เพิ่มเติม
ผู้ให้บริการ Fused Location
นอกจากการใช้เครือข่ายและผู้ให้บริการ GPS อย่างชาญฉลาดตามความเหมาะสมแล้ว FLP บนอุปกรณ์เคลื่อนที่ยังผสานข้อมูลจากเซ็นเซอร์อื่นๆ เพื่อปรับปรุงคุณภาพของตำแหน่งให้ดียิ่งขึ้น ในทางกลับกัน การใช้งาน FLP ของยานยนต์ในปัจจุบันใช้ประโยชน์จากข้อสันนิษฐานข้างต้นและใช้ GPS_PROVIDER
เป็นแหล่งที่มาพื้นฐานอยู่เสมอ โดยจะปรับตำแหน่งจาก GNSS โดยเพิ่มข้อผิดพลาดบางอย่างเพื่อให้ตำแหน่งไม่แม่นยำมากขึ้นเมื่อจำเป็น เช่น เมื่อระบุตําแหน่งคร่าวๆ ให้กับลูกค้า
ด้วยเหตุนี้ ในบางกรณี ตำแหน่งแรกอาจใช้เวลานานกว่าปกติ เช่น ครั้งแรกที่มีการใช้ยานพาหนะ หรือกล่าวให้แม่นยำยิ่งขึ้นคือมีการใช้ระบบย่อยตำแหน่งของยานพาหนะ หรือหลังจากการลาก
ออกแบบแอปเพื่อกําหนดเป้าหมายการใช้งานบนอุปกรณ์เคลื่อนที่และยานยนต์
เราขอแนะนําให้แอปที่กําหนดเป้าหมายเป็นอุปกรณ์เคลื่อนที่และยานยนต์ซึ่งไม่จําเป็นต้องใช้คําขอที่แม่นยําคุณภาพสูงขึ้นandroid.permission.ACCESS_COARSE_LOCATION
เท่านั้นและใช้ FLP แทนหากมี หรือจะใช้ GPS_PROVIDER
โดยตรงซึ่งมีสิทธิ์เดียวกันก็ได้หากเป็นทางเลือกสุดท้าย เฟรมเวิร์กจะลดความแม่นยำของตำแหน่ง GNSS ที่เกี่ยวข้องเพื่อให้สอดคล้องกับความคาดหวังของ API ดูข้อมูลเพิ่มเติมได้ที่ความถูกต้อง
นอกจากนี้ แอปเหล่านี้ต้องประกาศฟีเจอร์ที่ไม่บังคับในไฟล์ Manifest อย่างชัดแจ้งandroid.hardware.location.network
เช่น
<uses-feature android:name="android.hardware.location.network" android:required="false" />
แนวทางนี้ช่วยให้อุปกรณ์ในอุตสาหกรรมต่างๆ ใช้งานร่วมกันได้สูงสุด และแอปจึงพร้อมให้บริการได้สูงสุดโดยไม่มีความแตกต่างของโค้ดสำหรับการรับตําแหน่งเมื่อจําเป็น