รูปแบบของนาฬิกาที่มีขนาดเล็กและดูได้อย่างรวดเร็วทำให้ Wear OS เป็นแพลตฟอร์มที่เหมาะสำหรับแอป ที่บันทึก รายงาน และตอบสนองต่อตำแหน่งของผู้ใช้ ตัวอย่างเช่น คุณสามารถสร้าง แอปที่อัปเดตระยะทาง ความเร็ว และทิศทางของผู้ใช้แบบเรียลไทม์ หรือแสดงข้อมูลโดยย่อเกี่ยวกับสภาพแวดล้อมของผู้ใช้
ดูข้อมูลเพิ่มเติมได้ที่สร้างแอปที่รับรู้ถึงตำแหน่ง
นาฬิกาบางรุ่นมีเซ็นเซอร์ GPS ในตัวซึ่งจะดึงข้อมูลตำแหน่งโดยไม่ต้องใช้โทรศัพท์ที่เชื่อมต่อ เมื่อคุณขอข้อมูลตำแหน่งในแอปนาฬิกา ระบบจะดึงข้อมูลตำแหน่งจากโทรศัพท์หรือนาฬิกาโดยใช้วิธีที่มีประสิทธิภาพด้านพลังงานมากที่สุด ดังนั้นแม้ว่านาฬิกาจะไม่มีเซ็นเซอร์ GPS คุณก็ยังรับข้อมูลตำแหน่งได้
หากต้องการลดผลกระทบของการรับข้อมูลตำแหน่งต่ออายุการใช้งานแบตเตอรี่ ให้เรียกใช้
setPriority()
ด้วยค่า PRIORITY_BALANCED_POWER_ACCURACY
การตั้งค่าลำดับความสำคัญที่แตกต่างกันอาจเพิ่มประสิทธิภาพชิปแตกต่างกัน
หากเป็นไปได้ ให้ประหยัดแบตเตอรี่โดยขอตำแหน่งไม่เกิน 1 ครั้งต่อนาทีโดยใช้ setInterval()
ตามที่อธิบายไว้ในส่วนต่อๆ ไป แอปของคุณต้องจัดการการสูญเสีย ข้อมูลตำแหน่งเมื่อนาฬิกาที่ไม่มีเซ็นเซอร์ตัดการเชื่อมต่อจากโทรศัพท์
เลือกวิธี
คุณระบุข้อมูลตำแหน่งให้กับแอป Wear OS ได้ 2 วิธี ได้แก่ ใช้ Fused Location Provider (FLP) หรือ Wear Health Services (WHS) FLP เป็น API ของบริการ Google Play
ใช้ FLP ในกรณีต่อไปนี้
- คุณต้องการข้อมูลตำแหน่งในขณะนั้น แต่ไม่ต้องการอย่างต่อเนื่อง เช่น การทำเครื่องหมาย ตำแหน่งของรถที่จอด
- คุณต้องการตำแหน่งอย่างต่อเนื่องแต่ไม่ต้องการประวัติตำแหน่ง
ใช้ WHS ในกรณีต่อไปนี้
- คุณต้องการข้อมูลจากเซ็นเซอร์อื่นๆ หรือมีแนวโน้มที่จะต้องการข้อมูลจากเซ็นเซอร์อื่นๆ ในอนาคต
- แอปของคุณเป็นแอปออกกำลังกายหรือแอปการออกกำลังกายที่ต้องติดตามข้อมูลตำแหน่งในช่วงเวลาที่เฉพาะเจาะจง
ใช้ Fused Location Provider
ในนาฬิกา ให้รับข้อมูลตำแหน่งโดยใช้ FusedLocationProviderClient
FLP อาจใช้ข้อมูลตำแหน่งจากโทรศัพท์ โปรดดูข้อมูลเพิ่มเติมที่หัวข้อสร้างไคลเอ็นต์บริการตำแหน่ง
ดูข้อมูลเกี่ยวกับการขออัปเดตตำแหน่งและการติดตามตำแหน่งของผู้ใช้แบบต่อเนื่องได้ที่ขออัปเดตตำแหน่ง
ตรวจหา GPS ในตัว
หากผู้ใช้วิ่งจ็อกกิ้งโดยสวมนาฬิกาที่ไม่มีเซ็นเซอร์ GPS ในตัวและไม่ได้นำโทรศัพท์ที่จับคู่ไว้ไปด้วย แอปนาฬิกาของคุณจะไม่สามารถรับข้อมูลตำแหน่งผ่านอุปกรณ์ที่เชื่อมต่อ ตรวจหาสถานการณ์นี้ในแอปและเตือนผู้ใช้ว่าความสามารถด้านตำแหน่งไม่พร้อมใช้งาน
หากต้องการตรวจสอบว่านาฬิกามีเซ็นเซอร์ GPS ในตัวหรือไม่ ให้เรียกใช้เมธอด
hasSystemFeature()
ด้วย
PackageManager.FEATURE_LOCATION_GPS
โค้ดต่อไปนี้จะตรวจหาว่า
นาฬิกามีเซ็นเซอร์ GPS ในตัวหรือไม่เมื่อคุณเริ่มกิจกรรม
class LocationActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... } fun hasGps(): Boolean = packageManager.hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS) }
จัดการเหตุการณ์การยกเลิกการเชื่อมต่อ
หากนาฬิกาไม่มีเซ็นเซอร์ GPS ในตัวและขาดการเชื่อมต่อกับโทรศัพท์ นาฬิกาจะ สูญเสียสตรีมข้อมูลตำแหน่ง หากแอปของคุณคาดหวังว่าจะมีสตรีมข้อมูลอย่างต่อเนื่อง แอปของคุณต้องตรวจหาการขาดการเชื่อมต่อ เตือนผู้ใช้ และลด ฟังก์ชันการทำงานลงอย่างค่อยเป็นค่อยไป
เช่นเดียวกับอุปกรณ์เคลื่อนที่ เมื่อขอข้อมูลอัปเดตตำแหน่งโดยใช้
FusedLocationProviderClient.requestLocationUpdates()
คุณจะส่งLocationCallback
หรือ PendingIntent
ทั้งสองอย่างนี้มีข้อมูลตำแหน่งและสถานะLocationAvailability
เมื่อใช้ตัวเลือก LocationCallback
ให้ลบล้าง
onLocationAvailability()
เพื่อรับข้อมูลอัปเดตเกี่ยวกับสถานะความพร้อมใช้งานของตำแหน่ง
เมื่อใช้ตัวเลือก PendingIntent
และระบบแสดงผล Intent
ให้ดึงข้อมูลสถานะความพร้อมให้บริการของสถานที่จาก Intent
โดยใช้วิธี LocationAvailability.extractLocationAvailability(Intent)
ไม่พบแฮนเดิล
เมื่อสัญญาณ GPS ขาดหาย คุณจะดึงตำแหน่งที่ทราบล่าสุดของนาฬิกา ผู้ใช้ได้ การดึงตำแหน่งล่าสุดที่ทราบจะเป็นประโยชน์เมื่อคุณไม่สามารถรับสัญญาณ GPS และเมื่อนาฬิกาไม่มี GPS ในตัวและขาดการเชื่อมต่อกับโทรศัพท์ ดูข้อมูลเพิ่มเติมได้ที่หัวข้อรับตำแหน่งที่ทราบล่าสุด
ล้างตำแหน่งด้วยการเรียกแบบเป็นกลุ่ม
หากคุณใช้การเรียกแบบเป็นกลุ่ม ให้เรียก flushLocations()
เมื่อหน้าจอกลับมาเปิดอีกครั้งหรือกลับจากโหมดแอมเบียนท์เพื่อส่งคืนตำแหน่งที่จัดกลุ่มไว้ทั้งหมดไปยัง LocationListeners
, LocationCallbacks
และ Pending Intents
ที่ลงทะเบียนทั้งหมดทันที