באמצעות ממשקי ה-API למיקום של Google Play Services, האפליקציה יכולה לבקש את המיקום הידוע האחרון של המכשיר של המשתמש. ברוב המקרים, אתם רוצים לדעת מה המיקום הנוכחי של המשתמש, שבדרך כלל זהה למיקום האחרון הידוע של המכשיר.
באופן ספציפי, צריך להשתמש בספק המיקום המאוחד כדי לאחזר את המיקום האחרון הידוע של המכשיר. ספק המיקום הממוזג הוא אחד מממשקי ה-API למיקום ב-Google Play Services. הוא מנהל את טכנולוגיית המיקום הבסיסית ומספק ממשק API פשוט, כדי שתוכלו לציין דרישות ברמה גבוהה, כמו דיוק גבוה או צריכת אנרגיה נמוכה. בנוסף, המערכת מבצעת אופטימיזציה של השימוש בסוללה במכשיר.
הערה: כשהאפליקציה פועלת ברקע, גישה למיקום צריכה להיות קריטית לפונקציונליות העיקרית של האפליקציה, וצריך להציג למשתמשים גילוי נאות מתאים.
במדריך הזה תלמדו איך לשלוח בקשה אחת למיקום של מכשיר באמצעות השיטה getLastLocation()
בספק המיקום המאוחד.
הגדרת Google Play Services
כדי לגשת לספק המיקום המשולב, פרויקט הפיתוח של האפליקציה צריך לכלול את Google Play Services. מורידים ומתקינים את הרכיב של Google Play Services דרך מנהל ה-SDK ומוסיפים את הספרייה לפרויקט. לפרטים נוספים, אפשר לעיין במדריך הגדרת שירותי Google Play.
ציון ההרשאות הניתנות לאפליקציות
אפליקציות שהתכונות שלהן משתמשות בשירותי המיקום צריכות לבקש הרשאות מיקום, בהתאם לתרחישי השימוש של התכונות האלה.
יצירת לקוח של שירותי המיקום
ב-method onCreate()
של הפעילות, יוצרים מופע של הלקוח של ספק המיקום המשולב, כפי שמתואר בקטע הקוד הבא.
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); }
אחזור המיקום הידוע האחרון
אחרי שיוצרים את הלקוח של שירותי המיקום, אפשר לקבל את המיקום האחרון הידוע של המכשיר של המשתמש. כשהאפליקציה מחוברת למקורות האלה, אפשר להשתמש ב-method getLastLocation()
של ספק המיקום הממוזג כדי לאחזר את מיקום המכשיר. הדיוק של המיקום שמוחזר על ידי הקריאה הזו נקבע לפי הגדרת ההרשאה שהגדרתם במניפסט של האפליקציה, כפי שמתואר במדריך בנושא בקשת הרשאות מיקום.
כדי לבקש את המיקום הידוע האחרון, צריך להפעיל את השיטה 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 Services במכשיר הופעל מחדש, ואין לקוח פעיל של Fused Location Provider שביקש מיקום אחרי שהשירותים הופעלו מחדש. כדי למנוע מצב כזה, אפשר ליצור לקוח חדש ולבקש עדכוני מיקום בעצמכם. מידע נוסף זמין במאמר קבלת עדכוני מיקום.
בחירת אומדן המיקום הטוב ביותר
ב-FusedLocationProviderClient
יש כמה שיטות לאחזור מידע על המיקום של המכשיר. בוחרים אחת מהאפשרויות הבאות, בהתאם לתרחיש השימוש של האפליקציה:
getLastLocation()
מקבלת הערכה של המיקום מהר יותר ומצמצמת את השימוש בסוללה שאפשר לשייך לאפליקציה. עם זאת, ייתכן שמידע המיקום יהיה לא עדכני אם לקוחות אחרים לא השתמשו במיקום באופן פעיל לאחרונה.getCurrentLocation()
מקבל מיקום עדכני ומדויק יותר באופן עקבי יותר. עם זאת, השיטה הזו עלולה לגרום לחישוב המיקום הפעיל להתבצע במכשיר.זו הדרך המומלצת לקבל מיקום עדכני, כשהדבר אפשרי, והיא בטוחה יותר מחלופות כמו הפעלה וניהול של עדכוני המיקום בעצמכם באמצעות
requestLocationUpdates()
. אם האפליקציה שלכם קוראת ל-requestLocationUpdates()
, יכול להיות שהיא תצרוך כמויות גדולות של חשמל אם המיקום לא זמין או אם הבקשה לא הופסקה כראוי אחרי קבלת מיקום עדכני.
מקורות מידע נוספים
למידע נוסף על אחזור המיקום הנוכחי ב-Android, תוכלו לעיין במאמרים הבאים:
דוגמיות
- אפליקציה לדוגמה שממחישה שיטות מומלצות לאחזור המיקום הנוכחי.