גורם הצורה הקטן של השעון, שמאפשר לראות את המידע במבט חטוף, הופך את Wear OS לפלטפורמה אידיאלית לאפליקציות שמקליטות את מיקום המשתמש, מדווחות עליו ומגיבות לו. לדוגמה, אפשר ליצור אפליקציות שמספקות למשתמשים עדכונים בזמן אמת לגבי המרחק, המהירות והכיוון שלהם, או לספק רמזים במבט חטוף לגבי הסביבה של המשתמשים.
מידע נוסף זמין במאמר פיתוח אפליקציות שמודעות למיקום.
בחלק מהשעונים יש חיישן GPS מובנה שמחלץ נתוני מיקום בלי שיהיה צורך בטלפון מחובר. כשמבקשים נתוני מיקום באפליקציה לשעון, המערכת מאחזרת את המיקום מהטלפון או מהשעון באמצעות השיטה הכי חסכונית בצריכת החשמל. לכן, גם אם אין חיישן GPS בשעון, עדיין אפשר לקבל פרטי מיקום.
כדי לצמצם את ההשפעה של איסוף נתוני המיקום על חיי הסוללה, צריך להפעיל את setPriority()
עם הערך PRIORITY_BALANCED_POWER_ACCURACY
.
הגדרות שונות של עדיפות עשויות לשנות את האופן שבו השבבים מותאמים.
כדי לחסוך בסוללה, מומלץ לבקש את המיקום פעם אחת בלבד בדקה באמצעות setInterval()
.
כפי שמתואר בקטעים הבאים, האפליקציה צריכה לטפל באובדן של נתוני מיקום כששעון ללא חיישן מתנתק מהטלפון.
בחירת שיטה
יש שתי דרכים לספק נתוני מיקום לאפליקציית Wear OS. אפשר להשתמש ב-Fused Location Provider (FLP) או ב-Wear Health Services (WHS). FLP הוא API של שירותי Google Play.
כדאי להשתמש ב-FLP במקרים הבאים:
- אתם רוצים נתוני מיקום ברגע מסוים אבל לא באופן רציף, למשל כדי לסמן את המיקום של מכונית חונה.
- אתם רוצים לדעת את המיקום באופן רציף, אבל לא צריכים את היסטוריית המיקומים.
כדאי להשתמש ב-WHS במקרים הבאים:
- אתם רוצים נתונים מחיישנים אחרים או שסביר להניח שתרצו נתונים מחיישנים אחרים בעתיד.
- האפליקציה היא אפליקציה לאימון או לתרגילים שצריכה לעקוב אחרי נתוני מיקום במהלך פרק זמן ספציפי.
שימוש בספק המיקום המשולב
בשעון, אפשר לקבל נתוני מיקום באמצעות FusedLocationProviderClient
. יכול להיות ש-FLP ישתמש בנתוני מיקום מהטלפון. מידע נוסף זמין במאמר בנושא יצירת לקוח של שירותי מיקום.
למידע על בקשת עדכוני מיקום ומעקב רציף אחרי המיקום של משתמש, אפשר לעיין במאמר בנושא בקשת עדכוני מיקום.
זיהוי GPS מובנה
אם משתמש יוצא לריצה עם שעון שאין בו חיישן GPS מובנה, והוא משאיר את הטלפון המזווג מאחור, אפליקציית השעון לא יכולה לקבל נתוני מיקום דרך המכשיר המחובר. כדאי לזהות את המצב הזה באפליקציה ולהזהיר את המשתמשים שאין אפשרות לגשת למיקום.
כדי לבדוק אם בשעון יש חיישן GPS מובנה, צריך לבצע קריאה ל-method 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
.