זיהוי מיקום ב-Wear OS

גורם הצורה הקטן והחטיף של שעון הופך את Wear OS לפלטפורמה אידיאלית לאפליקציות שמתעדות את מיקום המשתמש, מדווחות עליו ומגיבות לו. לדוגמה, אפשר ליצור אפליקציות שמספקות למשתמשים עדכונים בזמן אמת לגבי המרחק, המהירות והכיוון שלהם או לספק רמזים מהירים על המשתמשים הסביבה.

מידע נוסף זמין במאמר יצירת אפליקציות מבוססות-מיקום.

לחלק מהשעונים יש חיישן GPS מובנה שמאחזר נתוני מיקום נדרש טלפון מחובר. כשמבקשים נתוני מיקום באפליקציית שעון, המערכת מאחזרת את המיקום מהטלפון או מהשעון באמצעות שיטה חסכונית באנרגיה. כך שגם בלי חיישן GPS בשעון, עדיין לקבל נתוני מיקום.

כדי לצמצם את ההשפעה של צירוף נתוני מיקום על חיי הסוללה, לשלוח קריאה setPriority() עם הערך PRIORITY_BALANCED_POWER_ACCURACY ייתכן שהגדרות עדיפות שונות אופטימיזציה שונה של צ'יפים.

ככל האפשר, כדי לחסוך בצריכת הסוללה, לא כדאי לבקש יותר מיקום יותר מפעם בדקה באמצעות setInterval()

כפי שמתואר בקטעים הבאים, האפליקציה שלך צריכה לטפל באובדן של נתוני מיקום כששעון ללא חיישן מתנתק מהטלפון.

בחירת השיטה

יש שתי דרכים לספק נתוני מיקום לאפליקציה ל-Wear OS. אפשר להשתמש בספק מיקום משולב (FLP) או Wear Health Services (WHS). FLP הוא ממשק ה-API של Google Play Services

אפשר להשתמש ב-FLP בנסיבות הבאות:

  • ברצונך להציג נתוני מיקום באותו רגע אך לא באופן רציף, כגון סימון המיקום של מכונית חונה.
  • אתה רוצה את המיקום שלך ברציפות, אבל אין לך צורך בהיסטוריית המיקומים.

יש להשתמש ב-WHS בנסיבות הבאות:

  • אתם רוצים לקבל נתונים מחיישנים אחרים או שסביר להניח שתרצו נתונים מחיישנים אחרים בעתיד.
  • האפליקציה שלך היא אפליקציה לאימון כושר או לאימון כושר שצריכה לעקוב אחר נתוני המיקום במהלך פרק זמן מסוים.

לשעונים שהותאמו למכשירי iPhone: נתוני מיקום של שעונים שהותאמו למכשירי iPhone.

שימוש בספק המיקום המשולב

בשעון, מקבלים נתוני מיקום באמצעות 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. שני הפרטים האלה כוללים את פרטי המיקום ואת LocationAvailability הסטטוס.

כשמשתמשים באפשרות LocationCallback, אפשר לבטל onLocationAvailability() כדי לקבל עדכונים לגבי סטטוס הזמינות של המיקום.

כשמשתמשים באפשרות PendingIntent הערך Intent מוחזר, יש לחלץ את המיקום סטטוס זמינות מ-Intent באמצעות LocationAvailability.extractLocationAvailability(Intent) .

הכינוי לא נמצא

כאשר אות ה-GPS אבד, ניתן לאחזר את המיקום הידוע האחרון של בשעון של המשתמש. אחזור המיקום הידוע האחרון הוא מועיל אם לא ניתן לקבל תיקון GPS וכשהשעון לא תומך ב-GPS מובנה ומאבד את החיבור שלו בטלפון. מידע נוסף זמין במאמר הבא: לקבל את המיקום הידוע האחרון.

השלמת המיקום עם שיחות באצווה

אם אתם משתמשים בקריאות באצווה, צריך להתקשר flushLocations() כשהמסך חוזר לפעול או חוזר ממצב רגישות לסביבה אל יחזיר מיד את כל המיקומים באצווה לכל LocationListeners הרשומים, LocationCallbacks ו-Pending Intents.