มีผู้ให้บริการตำแหน่ง 3 รายใน Android
พวกเขาเป็น:
gps -> (GPS, AGPS):ชื่อผู้ให้บริการตำแหน่ง GPS ผู้ให้บริการนี้กำหนดตำแหน่งโดยใช้ดาวเทียม ผู้ให้บริการรายนี้อาจใช้เวลาสักครู่ในการส่งคืนการแก้ไขตำแหน่งทั้งนี้ขึ้นอยู่กับเงื่อนไข ต้องได้รับอนุญาต android.permission.ACCESS_FINE_LOCATION
เครือข่าย -> (AGPS, CellID, WiFi MACID):ชื่อของผู้ให้บริการตำแหน่งเครือข่าย ผู้ให้บริการรายนี้กำหนดตำแหน่งตามความพร้อมของเสาสัญญาณและจุดเชื่อมต่อ WiFi ผลลัพธ์จะถูกเรียกโดยการค้นหาเครือข่าย ต้องการสิทธิ์อย่างใดอย่างหนึ่ง android.permission.ACCESS_COARSE_LOCATION หรือ android.permission.ACCESS_FINE_LOCATION
passive -> (CellID, WiFi MACID):ผู้ให้บริการตำแหน่งพิเศษสำหรับการรับตำแหน่งโดยไม่ต้องเริ่มการแก้ไขตำแหน่ง ผู้ให้บริการรายนี้สามารถใช้เพื่อรับการอัปเดตตำแหน่งโดยไม่ได้ตั้งใจเมื่อแอปพลิเคชันหรือบริการอื่นร้องขอโดยไม่ต้องร้องขอตำแหน่งด้วยตัวเอง ผู้ให้บริการรายนี้จะส่งคืนตำแหน่งที่สร้างโดยผู้ให้บริการรายอื่น ต้องได้รับอนุญาต android.permission.ACCESS_FINE_LOCATION แม้ว่าหากไม่ได้เปิดใช้งาน GPS ผู้ให้บริการรายนี้อาจส่งคืนการแก้ไขที่หยาบเท่านั้น นี่คือสิ่งที่ Android เรียกผู้ให้บริการตำแหน่งเหล่านี้อย่างไรก็ตามเทคโนโลยีพื้นฐานในการทำให้สิ่งนี้ทำงานได้ถูกจับคู่กับชุดฮาร์ดแวร์เฉพาะและความสามารถที่ Telco จัดเตรียมไว้ให้ (บริการเครือข่าย)
วิธีที่ดีที่สุดคือใช้ผู้ให้บริการ "เครือข่าย" หรือ "พาสซีฟ" ก่อนจากนั้นจึงใช้ "gps" สลับไปมาและขึ้นอยู่กับงาน ซึ่งครอบคลุมทุกกรณีและให้บริการตัวหารร่วมที่ต่ำที่สุด (ในกรณีที่เลวร้ายที่สุด) และบริการที่ดีเยี่ยม (ในกรณีที่ดีที่สุด)
การอ้างอิงบทความ: ผู้ให้บริการตำแหน่ง Android - gps, เครือข่าย, passive โดย Nazmul Idris
รหัสอ้างอิง: https://stackoverflow.com/a/3145655/28557
----------------------- ปรับปรุง -----------------------
ตอนนี้ Android มีผู้ให้บริการตำแหน่งแบบ Fused
Fused Location Provider จัดการเทคโนโลยีระบุตำแหน่งอย่างชาญฉลาดและมอบตำแหน่งที่ดีที่สุดตามความต้องการของคุณ ช่วยให้แอปได้รับตำแหน่งปัจจุบันของผู้ใช้ง่ายขึ้นด้วยความแม่นยำที่ดีขึ้นและลดการใช้พลังงาน
ผู้ให้บริการตำแหน่งแบบผสมผสานมีสามวิธีในการดึงข้อมูลตำแหน่ง
- ตำแหน่งสุดท้าย:ใช้เมื่อคุณต้องการทราบตำแหน่งปัจจุบันหนึ่งครั้ง
- ขอตำแหน่งโดยใช้ Listener:ใช้เมื่อแอปพลิเคชันอยู่บนหน้าจอ / ส่วนหน้าและต้องการตำแหน่งต่อ
- ขอตำแหน่งโดยใช้ความตั้งใจที่รอดำเนินการ:ใช้เมื่อแอปพลิเคชันอยู่เบื้องหลังและต้องการตำแหน่งต่อไป
อ้างอิง:
เว็บไซต์อย่างเป็นทางการ: http://developer.android.com/google/play-services/location.html
ตัวอย่างผู้ให้บริการตำแหน่งแบบผสมผสาน: GIT: https://github.com/kpbird/fused-location-provider-example
http://blog.lemberg.co.uk/fused-location-provider
-------------------------------------------------- ------