ตรวจหาตำแหน่งใน Wear OS

รูปแบบของอุปกรณ์ขนาดเล็กที่อ่านง่ายของนาฬิกาทำให้ 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 ในสถานการณ์ต่อไปนี้

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

สำหรับนาฬิกาที่จับคู่กับ iPhone โปรดดู ข้อมูลตำแหน่งของนาฬิกาที่จับคู่กับ iPhone

ใช้ผู้ให้บริการ Fused Location

รับข้อมูลตำแหน่งในนาฬิกาโดยใช้ FusedLocationProviderClient FLP อาจใช้ข้อมูลตำแหน่งจากโทรศัพท์ สำหรับข้อมูลเพิ่มเติม โปรดดู สร้างไคลเอ็นต์บริการตำแหน่ง

สําหรับข้อมูลเกี่ยวกับการขออัปเดตตำแหน่งและติดตามอย่างต่อเนื่อง ตําแหน่งของผู้ใช้ โปรดดูหัวข้อขออัปเดตตำแหน่ง

ตรวจหา GPS ในเครื่อง

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

หากต้องการดูว่านาฬิกามีเซ็นเซอร์ GPS ในตัวหรือไม่ ให้เรียกใช้ hasSystemFeature() ด้วย PackageManager.FEATURE_LOCATION_GPS โค้ดต่อไปนี้จะตรวจหาว่านาฬิกามีเซ็นเซอร์ GPS ในตัวหรือไม่เมื่อคุณเริ่มกิจกรรม

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main_activity)

    if (!hasGps()) {
        Log.d(TAG, "This hardware doesn't have GPS.")
        // Fall back to functionality that doesn't use location or
        // warn the user that location function isn't available.
    }
}

private fun hasGps(): Boolean =
        packageManager.hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS)

Java

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);

    if (!hasGps()) {
        Log.d(TAG, "This hardware doesn't have GPS.");
        // Fall back to functionality that doesn't use location or
        // warn the user that location function isn't available.
    }
    ...
}

private boolean hasGps() {
    return getPackageManager().hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS);
}

จัดการเหตุการณ์การขาดการเชื่อมต่อ

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

เช่นเดียวกับอุปกรณ์เคลื่อนที่ เมื่อคุณขออัปเดตตำแหน่งโดยใช้ FusedLocationProviderClient.requestLocationUpdates() คุณจะสอบผ่าน LocationCallback หรือ PendingIntent ทั้ง 2 อย่างนี้มีข้อมูลตำแหน่งและ LocationAvailability สถานะ

เมื่อใช้ตัวเลือก LocationCallback ระบบจะลบล้าง onLocationAvailability() เพื่อรับข้อมูลอัปเดตเกี่ยวกับสถานะความพร้อมใช้งานของสถานที่ตั้ง

เมื่อใช้ตัวเลือก PendingIntent และ ส่งคืน Intent แล้ว โปรดดึงข้อมูลสถานที่ตั้ง สถานะความพร้อมจำหน่ายสินค้าจาก Intent โดยใช้ LocationAvailability.extractLocationAvailability(Intent)

ไม่พบตำแหน่งของแฮนเดิล

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

ล้างสถานที่ด้วยการโทรแบบกลุ่ม

หากคุณใช้การโทรแบบกลุ่ม ให้โทร flushLocations() เมื่อหน้าจอกลับมาเปิดหรือกลับจากโหมดแอมเบียนท์ไปยัง แสดงสถานที่ตั้งแบบกลุ่มกลับไปยัง LocationListeners ที่ลงทะเบียนไว้ทั้งหมดทันที LocationCallbacks และ Pending Intents