เราขอแนะนำให้นักพัฒนาแอปส่งคำขอโดยใช้เนื้อหาคร่าวๆ เท่านั้นเพื่อเคารพความเป็นส่วนตัวของผู้ใช้ สิทธิ์เข้าถึงตำแหน่ง โดยทั่วไปแอปที่ต้องการตำแหน่งคร่าวๆ โดยประมาณ ใช้ตำแหน่งเครือข่าย Fused Network (FLP) เนื่องจากรวดเร็วและใช้พลังงานน้อยลง ตำแหน่งเครือข่ายในแอปยานยนต์เมื่อเทียบกับอุปกรณ์เคลื่อนที่ที่ใช้ Android อาจเป็นสิ่งท้าทายมากยิ่งขึ้น คุณสามารถใช้ API ของ Android ได้ 2 แบบ ดังนี้
LocationManager API กำหนดให้คุณต้องใช้
requestLocationUpdates
เพื่อระบุผู้ให้บริการตำแหน่งที่ต้องการอย่างชัดแจ้งAPI บริการ Google Play มอบวิธีที่ง่ายยิ่งขึ้น ใช้งานตำแหน่งใน
FusedLocationProviderClient
แอปยานยนต์จำนวนมากใช้ FLP จาก Google Play Services API แทน
LocationManager
FLP เลือกผู้ให้บริการตำแหน่งที่เหมาะสมโดยอิงตามตำแหน่ง
เกณฑ์และนโยบาย (กำลังและความแม่นยำ) ที่ยานพาหนะต้องการ
คุณสามารถเลือกที่จะส่งคำขอและใช้
NETWORK_PROVIDER
และ
GPS_PROVIDER
สำหรับ
ตำแหน่งอย่างละเอียด ซึ่งใช้
android.permission.ACCESS_FINE_LOCATION
สิทธิ์ ใน Android 12 (API ระดับ 31) ขึ้นไป ฟิลด์
FUSED_PROVIDER
ซึ่งก่อนหน้านี้จะเข้าถึงได้ผ่าน
API บริการ Google Play เท่านั้น
สามารถใช้เป็นผู้ให้บริการตำแหน่งแก่ LocationManager
คุณสามารถดูการใช้งาน FLP ได้ใน
FusedLocationProvider.java
แม้ว่าคุณจะใช้ GPS_PROVIDER
ที่มีสิทธิ์ในระดับคร่าวๆ เท่านั้นได้ แต่
กรอบงานจะลดทอนความถูกต้องลงอย่างไม่เป็นจริง เพื่อให้เป็นไปตามความคาดหวัง
เหมาะสมเล็กน้อยสำหรับนักพัฒนาซอฟต์แวร์ที่กำหนดเป้าหมายไปที่โทรศัพท์ Android เนื่องจากโดยรวมแล้ว
ความพร้อมใช้งานไม่ดีและมักจะช้ากว่าเพื่อให้ได้ตำแหน่งคร่าวๆ
ตำแหน่งเครือข่ายในยานยนต์
NETWORK_PROVIDER
ใช้ในโทรศัพท์ Android (ที่มีบริการของ Google Mobile)
ระบุตำแหน่งตามเสาสัญญาณมือถือ จุดเข้าใช้งาน Wi-Fi และ
บีคอนบลูทูธ (BT) ด้วยเหตุนี้ NETWORK_PROVIDER
จึงอาจต้องใช้ข้อมูล
การเชื่อมต่อ
สำหรับแอปยานยนต์ ข้อจำกัดด้านอุปกรณ์จะแตกต่างกันไป เนื่องจากการนำทางทั่วโลกของ Gthe โดยปกติระบบดาวเทียม (GNSS) จะเปิด และจะไม่มีการลงโทษเนื่องจาก พลังงานและการใช้งานแบตเตอรี่เพิ่มขึ้น ด้วยเหตุนี้ ระยะเวลาทำงานของ IVI จะไม่ลดลง เราพยายามลดข้อมูลที่แลกเปลี่ยนกับเซิร์ฟเวอร์ของเราให้เหลือน้อยที่สุด
แอปจำนวนมากใช้ FLP จาก Play API แทน LocationManager
โดยตรง เนื่องจาก FLP จะทำสิ่งที่ชาญฉลาดโดยอัตโนมัติด้วยการใช้ตำแหน่งที่ตั้ง
ผู้ให้บริการสามารถปฏิบัติตามเกณฑ์/นโยบายคำขอตำแหน่งได้ดีที่สุด (ได้แก่
และความถูกต้อง)
ยานพาหนะต่างจากอุปกรณ์เคลื่อนที่ตรงที่แทบดูเหมือนกระโดดจากสถานที่หนึ่งไปยังอีกที่หนึ่ง อีกรายการ โดยมากแล้ว ตำแหน่งยานพาหนะจะทราบจากระบบภายใน
ผู้ให้บริการตำแหน่งเครือข่าย (NLP)
รถยนต์ส่วนใหญ่ไม่ใช้ API โทรศัพท์ที่จำเป็นเพื่อรับข้อมูลที่จำเป็น ที่ Cell ID (และความแรงของสัญญาณ) ด้วยเหตุนี้ เราจึงลดจำนวนข้อมูล แต่ไม่มีการติดตั้งใช้งาน NLP เพิ่มเติม
ผู้ให้บริการ Fused Location
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" />
วิธีนี้จะช่วยให้มั่นใจว่ามีความเข้ากันได้มากที่สุดกับอุปกรณ์ในประเภทธุรกิจและ ซึ่งก็คือความพร้อมใช้งานสูงสุดของแอปโดยไม่มีความแตกต่างของโค้ดเพื่อให้ ตำแหน่งเมื่อจำเป็น