เมื่อใช้ API ตำแหน่งของบริการ Google Play แอปของคุณสามารถขอ ตำแหน่งที่ทราบของอุปกรณ์ของผู้ใช้ ในกรณีส่วนใหญ่ คุณสนใจใน ตำแหน่งปัจจุบันของผู้ใช้ ซึ่งปกติจะเทียบเท่ากับตำแหน่งที่ทราบล่าสุด ตำแหน่งของอุปกรณ์
ให้ใช้ รวมเข้าด้วยกัน ผู้ให้บริการตำแหน่งเพื่อเรียกข้อมูลตำแหน่งที่ทราบล่าสุดของอุปกรณ์ ไฟแรง ผู้ให้บริการตำแหน่งเป็นหนึ่งใน API ตำแหน่งในบริการ Google Play ทั้งนี้ จัดการเทคโนโลยีระบุตำแหน่งพื้นฐาน และให้ API แบบง่ายเพื่อให้ คุณสามารถระบุความต้องการในระดับสูง เช่น ความแม่นยำสูงหรือพลังงานต่ำ และยังเพิ่มประสิทธิภาพการใช้พลังงานแบตเตอรี่ของอุปกรณ์ด้วย
หมายเหตุ: เมื่อแอปทำงานอยู่เบื้องหลัง การเข้าถึงตำแหน่งควรเป็น ที่สำคัญต่อฟังก์ชันการทำงานหลักของแอป และมาพร้อมกับ ที่เปิดเผยต่อผู้ใช้
บทเรียนนี้แสดงวิธีส่งคำขอตำแหน่งของ
โดยใช้
getLastLocation()
ในผู้ให้บริการ Fused Location
ตั้งค่าบริการ Google Play
หากต้องการเข้าถึงผู้ให้บริการ Fused Location โปรเจ็กต์พัฒนาของแอปจะต้อง รวมถึงบริการ Google Play ดาวน์โหลดและติดตั้งบริการ Google Play คอมโพเนนต์ผ่าน SDK ผู้จัดการ และเพิ่มไลบรารีลงในโครงการของคุณ โปรดดูรายละเอียดในคู่มือ การตั้งค่า Google Play บริการ
ระบุสิทธิ์ของแอป
แอปที่มีฟีเจอร์ที่ใช้บริการตำแหน่งต้อง ขอสิทธิ์เข้าถึงตำแหน่ง โดยขึ้นอยู่กับกรณีการใช้งานฟีเจอร์เหล่านั้น
สร้างไคลเอ็นต์บริการตำแหน่ง
ในเมธอด onCreate()
ของกิจกรรม
สร้างอินสแตนซ์ของไคลเอ็นต์ Fused Location Provider ในข้อมูลโค้ดต่อไปนี้
Kotlin
private lateinit var fusedLocationClient: FusedLocationProviderClient override fun onCreate(savedInstanceState: Bundle?) { // ... fusedLocationClient = LocationServices.getFusedLocationProviderClient(this) }
Java
private FusedLocationProviderClient fusedLocationClient; // .. @Override protected void onCreate(Bundle savedInstanceState) { // ... fusedLocationClient = LocationServices.getFusedLocationProviderClient(this); }
รับตำแหน่งที่รู้จักล่าสุด
เมื่อคุณสร้างไคลเอ็นต์บริการตำแหน่ง
คุณจะเห็นตำแหน่งล่าสุดที่ทราบของอุปกรณ์ของผู้ใช้ เมื่อแอปของคุณ
อยู่เมื่อใช้ผู้ให้บริการ Fused Location Provider
getLastLocation()
วิธีการดึงข้อมูลตำแหน่งของอุปกรณ์ ความแม่นยำของตำแหน่งที่แสดงผล
ระบบกำหนดสิทธิ์นี้ตามการตั้งค่าสิทธิ์
ที่คุณป้อนไว้ในแอป
ไฟล์ Manifest ตามที่อธิบายไว้ในคำแนะนำเกี่ยวกับวิธี
ขอสิทธิ์เข้าถึงตำแหน่ง
หากต้องการขอตำแหน่งสุดท้ายที่ทราบ ให้เรียกใช้
getLastLocation()
ตัวอย่างข้อมูลโค้ดต่อไปนี้แสดงคำขอและการจัดการ
การตอบกลับ:
Kotlin
fusedLocationClient.lastLocation .addOnSuccessListener { location : Location? -> // Got last known location. In some rare situations this can be null. }
Java
fusedLocationClient.getLastLocation() .addOnSuccessListener(this, new OnSuccessListener<Location>() { @Override public void onSuccess(Location location) { // Got last known location. In some rare situations this can be null. if (location != null) { // Logic to handle location object } } });
getLastLocation()
จะแสดงผล Task
ซึ่งคุณสามารถใช้เพื่อดู
Location
ที่มีพิกัดละติจูดและลองจิจูดของ
ตำแหน่งทางภูมิศาสตร์ ออบเจ็กต์ตำแหน่งอาจเป็น null
ใน
สถานการณ์ต่อไปนี้
- ตำแหน่งปิดอยู่ในการตั้งค่าอุปกรณ์ ผลลัพธ์อาจเป็น
null
แม้ว่าจะมีการดึงข้อมูลตำแหน่งล่าสุดก่อนหน้านี้เนื่องจาก การปิดใช้งานตำแหน่งจะล้างแคชด้วย - อุปกรณ์ไม่เคยบันทึกตำแหน่งของตัวเองเลย ซึ่งอาจเป็นกรณีของ หรืออุปกรณ์ที่มีการคืนค่าเป็นการตั้งค่าเริ่มต้นแล้ว
- บริการ Google Play ในอุปกรณ์รีสตาร์ทแล้วและไม่มีการเปิดใช้งาน ไคลเอ็นต์ Fused Location Provider ที่ขอตำแหน่งหลังจาก รีสตาร์ทบริการแล้ว เพื่อหลีกเลี่ยงสถานการณ์นี้ คุณอาจสร้างลูกค้าใหม่และ ส่งคำขออัปเดตตำแหน่งด้วยตนเอง สำหรับข้อมูลเพิ่มเติม โปรดดู ตำแหน่งการรับ อัปเดต
เลือกค่าประมาณตำแหน่งที่ดีที่สุด
FusedLocationProviderClient
มีวิธีเรียกข้อมูลอุปกรณ์หลายวิธี
ข้อมูลสถานที่ เลือกจากตัวเลือกต่อไปนี้ โดยขึ้นอยู่กับแอปของคุณ
กรณีการใช้งาน:
getLastLocation()
ได้รับการระบุตำแหน่งโดยประมาณเร็วขึ้น และลดการใช้งานแบตเตอรี่ที่สามารถ ที่มาจากแอปของคุณ อย่างไรก็ตาม ข้อมูลตำแหน่งอาจไม่ใช่ข้อมูลล่าสุด หากไม่มีลูกค้ารายอื่น ใช้ตำแหน่งเมื่อเร็วๆ นี้getCurrentLocation()
ได้รับตำแหน่งที่ใหม่กว่าและแม่นยำมากขึ้นได้อย่างสม่ำเสมอ แต่วิธีนี้ อาจทำให้ระบบคำนวณตำแหน่งที่ใช้งานอยู่ในอุปกรณ์นี่คือวิธีที่แนะนำเพื่อให้ได้ตำแหน่งใหม่เมื่อเป็นไปได้ และ ปลอดภัยกว่าวิธีอื่นๆ เช่น การเริ่มและจัดการการอัปเดตตำแหน่ง ตัวคุณเองโดยใช้
requestLocationUpdates()
หากแอปเรียกrequestLocationUpdates()
บางครั้งแอปของคุณอาจใช้ เปิด/ปิดหากตำแหน่งไม่พร้อมใช้งาน หรือหากคำขอไม่ได้หยุดทำงานอย่างถูกต้อง หลังจากได้สถานที่ใหม่
แหล่งข้อมูลเพิ่มเติม
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการดึงข้อมูลตำแหน่งปัจจุบันใน Android โปรดดู เนื้อหาต่อไปนี้:
ตัวอย่าง
- แอปตัวอย่างเพื่อแสดงแนวทางปฏิบัติแนะนำขณะดึงข้อมูล ตำแหน่งปัจจุบัน