
LocationServices.FusedLocationApi.requestLocationUpdates מקבל את הלקוח, את הבקשה ואת המאזין. לביטול משתמשים ב-removeLocationUpdates, ואחר כך מנתקים את הלקוח.הטקסט המלא של הדקות הראשונות בהרצאה «Fused Provider» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
בסרטונים האחרונים עבדנו עם הפרוביידרים השונים שקיימים בילד אין במכשיר בכדי לקבל את מיקום המשתמש וזה מעולה כאשר אנחנו רוצים להיות בשליטה מושלמת על איזה פרוביידר אנחנו עובדים איתו דרך איזה פרוביידר לקבל את המיקום וכדומה אבל ראינו בהתחלה שקיים פרוביידר שנקרא פיוזד פרוביידר
והפרוביידר הזה זה בעצם API שגוגל הוסיפו שאם אנחנו עובדים איתו הוא משתמש בבילד אין פרוביידר שאנחנו עבדנו איתם בכדי להביא לנו את מיקום המשתמש.
ולפעמים קורה מצב שאני רוצה פשוט לתת לגוגל להביא לי את המיקום, לתת לו איזשהו קריטריון חיפוש ולפיו הגוגל יחפש את הפרוביידר הטוב ביותר ודרכו ימצא לנו את מיקום המשתמש.
בסרטון הזה אנחנו הולכים לראות איך לעבוד עם ה-Fused Provider. יש לנו כאן את ה-UI שהיה לנו מקודם, יש לנו את ה-register ויש לנו את ה-unregister ויש לנו פה text view לקבלת או להצגת מיקום המשתמש.
מה שיש לנו כאן ב-JavaCode זה פשוט רק הקטע קוד הזה של ה-text view שאיתרנו אותו ובו אנחנו רוצים להציג את מיקום המשתמש. אין לנו פה שום קוד אחר מפני שהקוד של שימוש ב-fused provider הוא די שונה מהקודים שעבדנו איתם בסרטונים הקודמים.
הדבר הראשון שאנחנו צריכים לבצע זה להתחבר לגוגל פליי סרוויסס ששם בעצם נמצא הפיוז פרוביידר אז זה מתבצע כמובן על ידי הוספת דיפנדנסי בואו נלחץ על הלחצן להוספת דיפנדנסי נלך לאפ נלך לדיפנדנסיס דרך הפלוס לליברירי דיפנדנסי וכאן אנחנו רואים שיש כל מיני api של גוגל ואנחנו רוצים את הפליי סרוויסס
נבצע אוקיי אוקיי והפרויקט מבצע עכשיו בנייה בכדי לשלב בתוכו את ה-API הזה. הדבר הבא שאנחנו צריכים לבצע זה להגדיר אובייקט פרייבט של גוגל API Client.
ניצור אובייקט ממנו או רפרנס כאן וזה האובייקט שבעצם דרכו אנחנו ניגשים ל-API של גוגל ודרכו אנחנו משיגים את ה-Fused Provider או את ה-Location ליתר דיוק.
הדבר הבא שאנחנו צריכים זה את ה-Location Request. זה אובייקט נוסף שמגדיר לפי מה אנחנו רוצים לקבל את המיקום. האם אנחנו רוצים לקבל אותו בעזרת קריטריון של High Accuracy או Power Saving, בדיוק דומה לקריטריון שעבדנו איתו בעבר.
אז כאן אנחנו מגדירים סדרה של הגדרות לגבי איך להביא את המיקום וגם לגבי תוך כמה זמן לקבל את המיקום וכדומה. כעת אנחנו יכולים לגשת ל-on create וליצור את שני האובייקטים האלה פעם אחת.
את google api client אנחנו יוצרים על ידי אובייקט חדש מסוג google api client אבל אנחנו משתמשים ב-builder לצורך כך. אז בואו ניגש לגוגל API Client נקודה בילדר, ניתן לבילדר דיס ועל ידי פונקציות בילד אנחנו בונים בעצם את ה-API בהתאם לצרכים שלנו.
הפונקציה הראשונה שאנחנו קוראים לה נקראת Add Connection Callbacks. אנחנו שולחים דיס בשביל להירשם לאינטרפייס שמביא לנו את ה-Connection Callbacks. עכשיו, מה זה אומר?
זה אומר שברגע שיש איזשהו שינוי בקונקשן עצמו מבחינת האם הוא זמין, האם הוא לא זמין, שינוי סטטוס של הקונקשן, לא של הלוקיישן של הקונקשן, אנחנו בעצם מקבלים דיווח על זה ויכולים לפי זה להציג הודעה וכדומה.
הדבר הבא שאנחנו יכולים להירשם אליו זה Add on Connection Failed Listener. זה בעצם אינטרפייס אחר שאם יש איזושהי שגיאה בקונקשן אז אנחנו בעצם מקבלים דיווח דרכו. לאחר מכן אנחנו נרשמים ל-add API כאשר גוגל פליי סרוויסס כולל סדרה של API. מה שאנחנו רוצים לעשות זה לומר שאנחנו רוצים להירשם ולהשתמש ב-location Services.API ואז אנחנו אומרים ל-API של גוגל
שזה בעצם ה-API שאנחנו רוצים ולא להשתמש בדברים אחרים כמו API לפרסומות או API למשחקים וכדומה. ולבסוף אנחנו קוראים לפונקציה build והנה יש לנו קודם כל את האובייקט של הגוגל API Client.
כמובן שאנחנו עכשיו מקבלים פה שגיאה מפני שלא ירשנו את האינטרפייס אז בואו בשלב הזה פשוט נלך ונבצע אימפלמנט ואנחנו רוצים את google api client.connection callbacks זה בעצם הראשון והאינטרפייס השני שאנחנו רואים כאן שאנחנו מקבלים בעיה לגביו זה google api client.connection failed listener עכשיו כמובן שאנחנו צריכים לבצע
בנייה של הפונקציות האלה אז בואו ניגש ל-Connection או ל-interface הראשון Alt Enter Implement Methods ואנחנו רואים שיש לנו מ-Connection Callbacks שתי פונקציות onConnected ו-onConnection Suspended ומה-interface onConnection פיילד ליסנר יש לנו פונקציה אחת onConnectionFailed
אז בואו נבצע אוקיי ותכף נגיע לפונקציות האלה ונממש אותן. הדבר הבא שאני רוצה לעשות לפני שאני מממש את הפונקציות האלה לפני שאני בונה אותן בעצם זה לבנות אובייקט מהלוקיישן request אז בואו ניגש שוב פעם ל-onCreate לוקיישן request שווה new לוקיישן ריקווסט ואנחנו רוצים להגדיר כמה הגדרות בלוקיישן ריקווסט שהתפקיד שלו כאמור זה להגדיר פרופרטיז לגבי איך ומתי אנחנו
רוצים לקבל את מיקום המשתמש. ההגדרה הראשונה תהיה לוקיישן ריקווסט נקודה סט אינטרוול והפונקציה הזאת פשוט אומרת כל כמה זמן אנחנו רוצים לקבל דיווח של המיקום. בואו ניתן 5 שניות.
הדבר הבא שאנחנו יכולים להגדיר זה LocationRequest.SetFastestInterval מה ההבדל בין SetInterval ל-SetFastestInterval? SetInterval אנחנו הגדרנו כל כמה זמן אנחנו רוצים לקבל את הדיווחים על המיקום אבל הזמן הזה מבחינת ה-API של גוגל הוא לא מדויק זאת אומרת שזה יכול להיות יותר מ-5 שניות וזה יכול להיות פחות מ-5 שניות אז יכול להיות שאנחנו
גם כל שלוש שניות לדוגמה או כל שתי שניות נקבל מהם דיווחים בגלל כל מיני שיקולים שלהם. Set Fastest Interval אומר מה המינימום זמן שצריך להמתין בכדי לקבל את הדיווח.
מתחת לזה המערכת לא תדווח לנו, זאת אומרת שאם אנחנו מגדירים שלוש שניות אז אם קיבלנו עכשיו את הדיווח, הדיווח הבא יהיה מינימום עוד שלוש שניות או כמובן יותר, הוא יכול להיות גם 6 שניות, הוא יכול להיות 7 שניות, אבל המערכת לא תדווח לנו נניח כל 2 שניות את המיקום.
אז זה בעצם ה-set fastest interval. הדבר הבא, Location Request ואנחנו צריכים את Set Priority. זה בעצם דומה לקריטריון חיפוש שדיברנו עליו.
Location Request נקודה, ויש לנו פה כל מיני Priorities. לדוגמה בואו ניקח את Priority High Accuracy. אז כאן בעצם אנחנו רוצים קודם כל לפי רמת דיוק גבוהה, גוגל API יצטרכו קודם כל לבדוק אם אפשר לקבל את המיקום מה-GPS,