PracticU

Location Providers

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA › Location Providers
מילון מושגים:
משתנה - שם שמפנה למקום בזיכרון שבו נשמר ערך שיכול להשתנות במהלך ריצת התוכנית, כמו מספר, טקסט או אובייקט.
שירות - תוכנה שרצה ברקע ומספקת פונקציונליות לרכיבים אחרים, לרוב ללא ממשק משתמש, ומופעלת אוטומטית עם המערכת.
מחרוזת - סוג נתונים שמייצג רצף של תווים, כלומר טקסט, ומשמש לאחסון מילים, משפטים או כל רצף סימנים.
אמולטור - תוכנה שמחקה מכשיר או סביבה אחרת, למשל כדי להריץ ולבדוק אפליקציית מובייל על המחשב.

Location Providers
ההרצאה בודקת אילו הגדרות מיקום המשתמש יכול לקבוע במכשיר, ואיך קוראים מהקוד אילו Location Providers מאופשרים כרגע.
קריאת הפרוביידרים המאופשרים
1. LocationManager: מגדירים משתנה מסוג LocationManager וב-onCreate משיגים אותו דרך getSystemService עם Location Service וקאסטינג.
2. בדיקה בלחצן: יוצרים מחרוזת enabledProviders ריקה. עבור כל אחד משלושת הפרוביידרים המובנים (GPS, Network, Passive) קוראים ל-locationManager.isProviderEnabled(...), ואם התוצאה true מוסיפים את שמו עם ירידת שורה.
3. הצגה: מציגים את המחרוזת ב-TextView עם setText. ה-Fused Provider של גוגל הוא נוסף, ובעצם משתמש בשלושה האחרים.
ההגדרות בבדיקה, באמולטור ובמכשיר אמיתי
- High Accuracy: כל שלושת הפרוביידרים זמינים.
- Battery Saving: רק Network ו-Passive (ה-GPS מנוטרל).
- Device Only: GPS ו-Passive, בלי Network, כי הוא מסתמך על מידע חיצוני.
- Location כבוי: רק Passive. הוא מקבל מיקום מאפליקציות ושירותים אחרים.
באמולטור ההגדרה הדפולטית הייתה Device Only, ובשינוי ל-High Accuracy הופיעה בפעם הראשונה הודעה לאישור. המכשיר האמיתי הראה אותו דבר.
שימו לב
- המשתמש לא יכול לבחור פרוביידר ספציפי כמו "רק GPS". הוא קובע רק את המצבים שלמעלה, והמפתח צריך להבין מה כל מצב אומר.
- גם אם פרוביידר מאופשר, אין ערובה שאפשר להשתמש בו. למשל GPS לא יעבוד כשהמשתמש בתוך מבנה. לכן בהרצאה הבאה נראה fallbacks למעבר בין פרוביידרים.
כעת אפשר לבדוק בקוד אילו פרוביידרים זמינים, ולהבין איך הגדרות המכשיר משפיעות עליהם.
השיעור הבא בקורס: Get User Location

פרקי ההרצאה: Location Providers

  1. 00:00

    אילו Providers מאופשרים במכשיר

  2. 00:38

    יצירת Location Manager

  3. 01:40

    בדיקה עם isProviderEnabled

  4. 03:20

    הגדרות Location באמולטור

  5. 03:58

    מצבי High Accuracy ו-Battery Saving

  6. 04:52

    מצב Device Only

  7. 05:36

    כיבוי ה-Location וה-Passive Provider

תמלול ההרצאה: Location Providers

הטקסט המלא של הדקות הראשונות בהרצאה «Location Providers» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:01

    הדבר הראשון שאנחנו הולכים לראות זה אילו הגדרות אנחנו יכולים להגדיר בתוך המכשיר עבור ה-Location Providers. כלומר, אילו הגדרות בעצם המשתמש יכול להגדיר.

  2. 00:13

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

  3. 00:31

    יש לנו פה את הקוד בג'אבה, יש לנו פה את הטקסט ויו, איתרנו אותו, וכעת אנחנו רוצים לקרוא מידע לגבי ה-location providers. לצורך גישה וניהול ה-location providers, אנחנו צריכים איזשהו משתנה, בואו נגדיר אותו פה למעלה, מסוג location manager.

  4. 00:56

    נגדיר כאן את ה-location manager, וב-on create נשיג reference אליו. יש לנו Location Manager, מבצע קאסטינג ל-Location Manager. ועל ידי Get System Service, אנחנו רוצים לגשת לסרוויס של ה-Location Service.

  5. 01:21

    וזה מביא לנו בעצם Object Location Manager, שאיתו אנחנו יכולים לקרוא מידע, להגדיר מידע עבור ה-Location Provider. מה אנחנו רוצים לעשות בלחצן עצמו?

  6. 01:34

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

  7. 01:57

    אז במידה ודרך ה-location-manager אנחנו ניגשים ל-is-provider-enabled ודרך ה-location-manager אנחנו יכולים לגשת לפרוויידרים השונים.

  8. 02:15

    לדוגמה GPS-provider. במידה וזה true אנחנו הולכים ל-enabled-providers ובואו נוסיף GPS עם ירידת שורה. עכשיו אנחנו צריכים לבצע את זה עבור כל בילד אין פרוויידר וראינו שיש רק שלושה בילד אין פרוויידרס.

  9. 02:38

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

  10. 02:56

    enabled בעצם, ולבסוף passive, ובואו נגדיר כאן את ה-passive provider. אחרי שסיימנו הכל, אנחנו רוצים לגשת ל-text-view-enabled-providers, ו-to-set-text את ה-enabled-providers.

  11. 03:20

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

  12. 03:38

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

  13. 03:56

    ניגש ללוקיישן ונראה שכרגע הלוקיישן מוגדר ב-default על device only. אוקיי, בואו קודם כל נעביר אותו ל-High Accuracy, ברגע שאנחנו עושים את זה בפעם הראשונה בלבד, אז אנחנו אמורים לקבל הודעה כזאת, שאומרת האם אנחנו רוצים לשנות את ההגדעות הדפולט של המכשיר, בואו נבצע אגרי ונקבל פה עוד הודעה, נבצע

  14. 04:22

    כן, פעם אחת אנחנו מקבלים את ההודעה הזאת, ועכשיו יש לנו את ה-High Accuracy. אנחנו יכולים עכשיו לחזור בחזרה לאפליקציה שלנו, בואו נלחץ על לחצן, וכפי שראינו, ה-High Accuracy מאפשר את כל הפרוביידרים.

  15. 04:39

    בואו נחזור בחזרה ל-Settings, ונעביר את זה ל-Battery Savings. נחזור בחזרה, נלחץ על לחצן, וכפי שראינו, ה-Battery Savings מנטרל את ה-GPS, אז יש לנו רק Network ו-Passive.

  16. 04:56

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

  17. 05:24

    כעת נחזור בחזרה לסטינגס, נחזור ונבטל בעצם את ה-location לגמרי, נגדיר שהוא off, נחזור בחזרה לאפליקציה שלנו ובאפליקציה שלנו נלחץ על לחצן ונראה שאם אנחנו ב-off אז רק ה-passive יכול לעבוד כי הוא בעצם מקבל אוטומטית את המידע מאפליקציות ושירותים אחרים במכשיר.

  18. 05:53

    אז יש לנו בעצם את כל ההגדרות של הפרוביידרים שהיוזר יכול להגדיר, בואו נחזיר את זה לאון ונראה מידית שזה high accuracy ובואו נבצע

לקורס המלא: קורס פיתוח אפליקציות לאנדרואיד

ההרצאה הקודמת: הסבר על Location and Maps

ההרצאה הבאה: Get User Location

הרצאות קשורות מקורסים אחרים

  • אובייקט Location (שורת URL)
  • מעקב אחר הליבה של וונדוס - Kernel - ETW Providers

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס פיתוח אפליקציות - לאייפון iPhone iOS - ב-Swift-Xcode
  • קורס פלאטר - Flutter - שפת DART של גוגל למובייל - פיתוח אפליקציות לאנדרואיד ואייפון
  • קורס PhoneGap - פיתוח אפליקציות לאנדרואיד ואייפון