รับตำแหน่งหยาบ

เพื่อเคารพความเป็นส่วนตัวของผู้ใช้ นักพัฒนาแอปควรขอสิทธิ์เข้าถึงตำแหน่งแบบคร่าวๆ เท่านั้น แอปที่ต้องการตำแหน่งคร่าวๆ โดยประมาณมักจะใช้ตำแหน่งเครือข่าย (FLP) เนื่องจากรวดเร็วและใช้พลังงานน้อยกว่า

เมื่อเปรียบเทียบกับอุปกรณ์เคลื่อนที่ที่ใช้ Android ตำแหน่งเครือข่ายในแอปยานยนต์อาจมีความท้าทายมากกว่า คุณสามารถใช้ Android API ได้สองตัว:

  • LocationManager API กำหนดให้คุณต้องระบุผู้ให้บริการตำแหน่งที่ต้องการอย่างชัดเจน

  • Google Play Services API นำเสนอวิธีที่ง่ายขึ้นสำหรับคุณในการทำงานกับตำแหน่งด้วยการแนะนำ Fused Location Provider (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 หรือแม้แต่บีคอน Bluetooth (BT) การใช้ NETWORK_PROVIDER อาจต้องมีการเชื่อมต่อข้อมูล

สำหรับแอปเกี่ยวกับยานยนต์ ข้อจำกัดของอุปกรณ์จะแตกต่างกัน เนื่องจากปกติ GNSS เปิดอยู่ จึงไม่มีการลงโทษใดๆ เกิดขึ้นเนื่องจากการใช้พลังงานและแบตเตอรี่ที่เพิ่มขึ้น เป็นผลให้สถานะการออนไลน์ของ IVI ไม่ถูกบุกรุก เรามุ่งมั่นที่จะลดการแลกเปลี่ยนข้อมูลกับเซิร์ฟเวอร์ของเรา

แอปจำนวนมากจึงใช้ FLP จาก Play API แทน LM โดยตรง เนื่องจาก FLP จะดำเนิน การอย่างชาญฉลาด โดยอัตโนมัติโดยใช้ผู้ให้บริการระบุตำแหน่งที่สามารถตอบสนองเกณฑ์/นโยบายคำขอตำแหน่งได้ดีที่สุด (กล่าวคือ ประสิทธิภาพและความแม่นยำ) ภายใต้ประทุน

ต่างจากอุปกรณ์พกพา ยานพาหนะไม่ค่อยดูเหมือนจะ กระโดด จากที่หนึ่งไปอีกที่หนึ่ง ตำแหน่งรถเป็นที่รู้จักภายใต้ฝากระโปรงเกือบตลอดเวลา

ผู้ให้บริการตำแหน่งเครือข่าย

ยานพาหนะส่วนใหญ่ไม่ได้ใช้ API ระบบโทรศัพท์ที่จำเป็นเพื่อรับข้อมูลที่จำเป็นเกี่ยวกับ Cell ID (และความแรงของสัญญาณ) ด้วยเหตุนี้ และเนื่องจากเราลดการใช้ข้อมูลลง จึงไม่มีการจัดเตรียมการใช้งาน NLP เพิ่มเติม

ผู้ให้บริการสถานที่หลอมรวม

FLP เคลื่อนที่ นอกเหนือจากการใช้เครือข่ายและผู้ให้บริการ GPS อย่างชาญฉลาดตามความเหมาะสมแล้ว ยังหลอมรวมข้อมูลจากเซ็นเซอร์อื่นๆ เพื่อปรับปรุงคุณภาพของสถานที่ให้ดียิ่งขึ้น ในทางกลับกัน การใช้งาน FLP ของ Automotive ในปัจจุบันใช้ประโยชน์จากสมมติฐานที่กล่าวมาข้างต้น และใช้ GPS_PROVIDER เป็นแหล่งข้อมูลพื้นฐานตลอดเวลา มันทำให้ตำแหน่งจาก GNSS เหลวไหล และเพิ่มข้อผิดพลาดบางอย่างให้ไม่ถูกต้องมากขึ้นเมื่อจำเป็น ตัวอย่างเช่น เมื่อมีการระบุตำแหน่งคร่าวๆ ให้กับลูกค้า

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

ออกแบบแอปเพื่อกำหนดเป้าหมายการใช้งานบนมือถือและยานยนต์

เราขอแนะนำให้แอปที่กำหนดเป้าหมายไปที่อุปกรณ์เคลื่อนที่ และ ยานยนต์ที่ไม่ต้องการคุณภาพความแม่นยำที่สูงกว่าขอ android.permission.ACCESS_COARSE_LOCATION เท่านั้น และถอยกลับไปใช้ FLP เมื่อพร้อมใช้งาน หรือเป็นทางเลือกสุดท้าย ให้ใช้ GPS_PROVIDER โดยตรงพร้อมสิทธิ์เดียวกัน เฟรมเวิร์กจะลดความแม่นยำของตำแหน่ง GNSS พื้นฐานเพื่อให้สอดคล้องกับความคาดหวังของ API หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่ ความแม่นยำ

นอกจากนี้ แอปเหล่านี้จะต้องประกาศ ตัวเลือก ฟีเจอร์ android.hardware.location.network อย่างชัดเจนในไฟล์ Manifest ตัวอย่างเช่น:

<uses-feature android:name="android.hardware.location.network" android:required="false" />

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