
LocationManager וב-onCreate משיגים אותו דרך getSystemService עם Location Service וקאסטינג.enabledProviders ריקה. עבור כל אחד משלושת הפרוביידרים המובנים (GPS, Network, Passive) קוראים ל-locationManager.isProviderEnabled(...), ואם התוצאה true מוסיפים את שמו עם ירידת שורה.TextView עם setText. ה-Fused Provider של גוגל הוא נוסף, ובעצם משתמש בשלושה האחרים.הטקסט המלא של הדקות הראשונות בהרצאה «Location Providers» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
הדבר הראשון שאנחנו הולכים לראות זה אילו הגדרות אנחנו יכולים להגדיר בתוך המכשיר עבור ה-Location Providers. כלומר, אילו הגדרות בעצם המשתמש יכול להגדיר.
בנוסף, איך אנחנו יכולים לדעת אילו פרוויידרים מאופשרים כרגע מבחינת המכשיר. אז יש לנו פה איזשהו לחצן, אנחנו לוחצים עליו ואנחנו רוצים לראות כרגע אילו פרוויידרים מאופשרים ולהציג אותם בטקסט-וויור הזה.
יש לנו פה את הקוד בג'אבה, יש לנו פה את הטקסט ויו, איתרנו אותו, וכעת אנחנו רוצים לקרוא מידע לגבי ה-location providers. לצורך גישה וניהול ה-location providers, אנחנו צריכים איזשהו משתנה, בואו נגדיר אותו פה למעלה, מסוג location manager.
נגדיר כאן את ה-location manager, וב-on create נשיג reference אליו. יש לנו Location Manager, מבצע קאסטינג ל-Location Manager. ועל ידי Get System Service, אנחנו רוצים לגשת לסרוויס של ה-Location Service.
וזה מביא לנו בעצם Object Location Manager, שאיתו אנחנו יכולים לקרוא מידע, להגדיר מידע עבור ה-Location Provider. מה אנחנו רוצים לעשות בלחצן עצמו?
בלחצן עצמו אנחנו רוצים להציג אילו locations כרגע מאופשרים במכשיר. בואו ניקח כאן string, נקרא למחרוזת הזאת enabled providers, נכניס מחרוזת ריקה ופשוט נבצע סדרת בדיקות בכדי לראות אילו providers מאופשרים.
אז במידה ודרך ה-location-manager אנחנו ניגשים ל-is-provider-enabled ודרך ה-location-manager אנחנו יכולים לגשת לפרוויידרים השונים.
לדוגמה GPS-provider. במידה וזה true אנחנו הולכים ל-enabled-providers ובואו נוסיף GPS עם ירידת שורה. עכשיו אנחנו צריכים לבצע את זה עבור כל בילד אין פרוויידר וראינו שיש רק שלושה בילד אין פרוויידרס.
אחר כך גוגל בעצם הוסיפו עוד פרוויידר שנקרא Fused והוא בעצם משתמש בכולם. אז אנחנו רוצים לבדוק עכשיו את הנטוורק פרוויידר ובואו נגדיר כאן שהנטוורק פעיל כרגע.
enabled בעצם, ולבסוף passive, ובואו נגדיר כאן את ה-passive provider. אחרי שסיימנו הכל, אנחנו רוצים לגשת ל-text-view-enabled-providers, ו-to-set-text את ה-enabled-providers.
Good, בואו נריץ, ואנחנו רוצים לראות את האפליקציה גם על האמולטור וגם על המכשיר האמיתי, אז הנה האפליקציה רצה על שניהם. עכשיו, לפני שאנחנו נלחץ על הלחצן, בואו נראה איך הפרוביידרים מוגדרים.
ניכנס באמולטור לסטינגס, נאתר כאן את הסטינגס, בואו אפילו ניקח את הסטינגס ונשים אותו פה בקיצור דרך כזה. נגיע לסטינגס ובסטינגס נחפש את הלוקיישן.
ניגש ללוקיישן ונראה שכרגע הלוקיישן מוגדר ב-default על device only. אוקיי, בואו קודם כל נעביר אותו ל-High Accuracy, ברגע שאנחנו עושים את זה בפעם הראשונה בלבד, אז אנחנו אמורים לקבל הודעה כזאת, שאומרת האם אנחנו רוצים לשנות את ההגדעות הדפולט של המכשיר, בואו נבצע אגרי ונקבל פה עוד הודעה, נבצע
כן, פעם אחת אנחנו מקבלים את ההודעה הזאת, ועכשיו יש לנו את ה-High Accuracy. אנחנו יכולים עכשיו לחזור בחזרה לאפליקציה שלנו, בואו נלחץ על לחצן, וכפי שראינו, ה-High Accuracy מאפשר את כל הפרוביידרים.
בואו נחזור בחזרה ל-Settings, ונעביר את זה ל-Battery Savings. נחזור בחזרה, נלחץ על לחצן, וכפי שראינו, ה-Battery Savings מנטרל את ה-GPS, אז יש לנו רק Network ו-Passive.
נחזור בחזרה לסטינגס ונגדיר device only, נחזור בחזרה וdevice only אומר רק דברים שנמצאים במכשיר ולא מבחוץ ולכן אם נלחץ על הלחצן נראה שיש לנו את ה-GPS ואת הפאסיב, כלומר כל מה שקשור בנטוורק שזה מידע חיצוני לא מאופשר והפרוויידר מסתמך רק על המכשיר עצמו.
כעת נחזור בחזרה לסטינגס, נחזור ונבטל בעצם את ה-location לגמרי, נגדיר שהוא off, נחזור בחזרה לאפליקציה שלנו ובאפליקציה שלנו נלחץ על לחצן ונראה שאם אנחנו ב-off אז רק ה-passive יכול לעבוד כי הוא בעצם מקבל אוטומטית את המידע מאפליקציות ושירותים אחרים במכשיר.
אז יש לנו בעצם את כל ההגדרות של הפרוביידרים שהיוזר יכול להגדיר, בואו נחזיר את זה לאון ונראה מידית שזה high accuracy ובואו נבצע