PracticU

Find Best Provider

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

Find Best Provider
במקום לקבוע ידנית איזה פרוויידר מיקום להשתמש בו, אפשר לבקש מהמערכת לבחור את הטוב ביותר מבין הזמינים במכשיר, לפי קריטריון שאתם מגדירים.
איך בוחרים פרוויידר לפי קריטריון
1. בונים אובייקט Criteria: יוצרים new Criteria() ומגדירים בו את מה שחשוב לנו, בתוך פונקציה נפרדת כמו get high accuracy best provider.
2. מגדירים את המאפיינים: בדוגמה כיבו את הדרישה למהירות (setSpeedRequired), לגובה (setAltitudeRequired) ולכיוון (setBearingRequired), ואסרו פרוויידר בתשלום (setCostAllowed).
3. קובעים את רמת הדיוק: עם setAccuracy בוחרים את הדיוק הטוב ביותר (ACCURACY_FINE).
4. מבקשים את הפרוויידר: מחזירים locationManager.getBestProvider(criteria, true). ה-true אומר להחזיר רק פרוויידרים שמאופשרים כרגע במכשיר.
5. מחליפים את השורה הקבועה: קוראים לפונקציה במקום להגדיר String של פרוויידר בקוד.
קריטריון אחר: חיסכון בסוללה
בפונקציה נוספת, get low power best provider, במקום setAccuracy מגדירים setPowerRequirement עם Criteria.POWER_LOW.
מה קרה בהרצה
באמולטור, כששלושת הפרוויידרים מאופשרים, קריטריון הדיוק החזיר את ה-GPS Provider (המיקום נשלח דרך DDMS עם Push Location). במכשיר אמיתי, קריטריון החיסכון בסוללה החזיר את ה-Network Provider.
אפשר עכשיו לתת למערכת לבחור את הפרוויידר המתאים לפי דיוק או לפי צריכת סוללה.
השיעור הבא בקורס: Provider Fallback

פרקי ההרצאה: Find Best Provider

  1. 00:00

    בחירת Provider בצורה ידנית

  2. 00:40

    פונקציה לאיתור Provider מדויק

  3. 01:22

    אובייקט Criteria ונתון המהירות

  4. 02:14

    Altitude ו-Bearing בקריטריון

  5. 03:00

    עלות ורמת Accuracy

  6. 03:39

    getBestProvider במקום Hardcoded

  7. 04:18

    בדיקה במצב High Accuracy

תמלול ההרצאה: Find Best Provider

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

  1. 00:00

    בסרטון הקודם אנחנו הגדרנו איזה פרוויידר ברצוננו לעבוד איתו ולקבל דרכו את מיקום המשתמש. וזה בדיוק היה בשורה הזאת. String Provider שווה Location Manager נקודה, ואז יכלנו להשתמש פה ב-GPS Provider, ב-Network Provider או ב-Passive Provider.

  2. 00:23

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

  3. 00:36

    אז לצורך כך בואו נבנה כאן איזושהי פונקציה, כאן ממש בסוף, בואו נקרא לה get high accuracy best provider. ואנחנו הולכים לבנות פונקציה שבעצם תיאתר את הפרוביידר הטוב ביותר עבור דיוק.

  4. 01:03

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

  5. 01:25

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

  6. 01:42

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

  7. 01:59

    Latitude, Longitude, Accuracy. אז יש עוד המון נתונים שהפרוויידר יכול לתת לנו. האם אנחנו רוצים שבין הנתונים האלה יהיה מהירות המשתמש.

  8. 02:09

    אז בואו נניח שלא. בואו נניח שלא מעניין אותי מיקום המשתמש, שייתן לי את מה שהוא מוצא בלי קשר למהירות של המשתמש. set Altitude, האם אנחנו רוצים שהפרווידר יספק לנו גם את ה-Altitude, אנחנו לא רוצים, אנחנו רוצים רק Longitude ו-Latitude, בואו נגדיר לו Bearing Required, זה אומר האם צריך שהיה כיוון בפרווידר, כלומר הפרווידר

  9. 02:42

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

  10. 03:23

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

  11. 03:47

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

  12. 04:07

    בואו נבדוק את זה. אנחנו כבר רואים שאנחנו רצים על המכשיר ועל האמולטור. ואם אנחנו נסתכל רגע על ה-Settings באמולטור, בה הוא ניגש ל-Location, אנחנו נראה שאנחנו נמצאים כרגע ב-High Accuacy, זאת אומרת שכל שלושת הפרוביידרים כרגע מאופשרים,

  13. 04:33

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

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

ההרצאה הקודמת: Get User Location

ההרצאה הבאה: Provider Fallback

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

  • WebElement - Find by ID
  • הסבר על Provider ב-Flutter
  • הגדרת AWS provider - פרויקט NodeJS

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

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