PracticU

Airplane Mode Receiver - Register via Code

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA › Airplane Mode Receiver - Register via Code
מילון מושגים:
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
Intent - ב-Android, אובייקט הודעה שמבקש פעולה, למשל מעבר בין מסכים או הפעלת רכיב אחר.
אירוע - התרחשות שהמערכת מזהה ויכולה להגיב לה, כמו לחיצת עכבר, הקשה או סיום פעולה.
Activity - ב-Android, רכיב שמייצג מסך יחיד של האפליקציה שאיתו המשתמש מתקשר.
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.
אמולטור - תוכנה שמחקה מכשיר או סביבה אחרת, למשל כדי להריץ ולבדוק אפליקציית מובייל על המחשב.

Airplane Mode Receiver - Register via Code
הדוגמה הראשונה ל-Broadcast Receiver: האפליקציה מקבלת דיווח כשהמשתמש נכנס למצב טיסה (Airplane Mode) או יוצא ממנו, ומציגה הודעה. הרישום כאן נעשה מתוך הקוד.
השלבים העיקריים
1. שני לחצנים: לחצן Register (buttonRegister) ולחצן Unregister (buttonUnregister), הראשון פעיל והשני לא (enabled שווה false), כי בהתחלה עדיין לא רשומים. בכל לחיצה מחליפים ביניהם עם setEnabled, כך שבכל רגע אפשר ללחוץ רק על אחד.
2. מחלקת Receiver: יוצרים מחלקה AirplaneModeReceiver שיורשת מ-BroadcastReceiver ומממשים את onReceive, שמופעלת אוטומטית כשהאירוע מתרחש. היא מקבלת Context ו-Intent עם מידע על האירוע.
3. קריאת המצב: שולפים מה-Intent בעזרת getBooleanExtra את המפתח state (עם ברירת מחדל false) לתוך isAirplaneModeOn. את שם המפתח יודעים מהתיעוד של אנדרואיד או מחיפוש בגוגל.
4. הצגת הודעה: מציגים Toast של Airplane mode is on או is off. מפני שהמחלקה אינה Activity, משתמשים ב-context ולא ב-this.
5. רישום בלחיצה: יוצרים אובייקט AirplaneModeReceiver ו-IntentFilter ומוסיפים לו addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED). אחר כך קוראים ל-registerReceiver(receiver, filter).
6. ביטול רישום: בלחצן השני קוראים ל-unregisterReceiver(receiver).
7. בדיקה: באמולטור ובמכשיר האמיתי, אחרי רישום, כל שינוי של מצב טיסה ב-Settings מציג Toast. אחרי Unregister הדיווחים נפסקים.
פקודות והגדרות
- registerReceiver ו-unregisterReceiver
- IntentFilter.addAction
- onReceive(Context, Intent)
אחרי השיעור אפשר להירשם בקוד לאירוע של המערכת, להגיב אליו ולבטל את הרישום.
השיעור הבא בקורס: Airplane Mode Receiver - Register via Manifest

פרקי ההרצאה: Airplane Mode Receiver - Register via Code

  1. 00:00

    קבלת דיווח על Airplane Mode

  2. 00:38

    לחצן לרישום ל-Receiver

  3. 01:39

    לחצן לביטול הרישום

  4. 02:26

    החלפת מצב Enabled בין הלחצנים

  5. 03:23

    מחלקה שיורשת מ-BroadcastReceiver

  6. 04:40

    קריאת מצב הטיסה מה-Intent

  7. 05:38

    טוסט לפי המצב בפונקציית onReceive

  8. 06:33

    יצירת ה-Receiver וה-IntentFilter

תמלול ההרצאה: Airplane Mode Receiver - Register via Code

הטקסט המלא של הדקות הראשונות בהרצאה «Airplane Mode Receiver - Register via Code» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:01

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

  2. 00:17

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

  3. 00:38

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

  4. 00:53

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

  5. 01:15

    בואו ניקח טקסט All Caps False ויש לנו כאן איזשהו on click, נקרא לו בטון רג'יסטר, on click, נירשם אליו ויש לנו את הלחצן הראשון. הלחצן השני שאנחנו רוצים זה לחצן שיבטל את הרישום.

  6. 01:39

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

  7. 01:54

    אירוע unregister, נירשם אליו ומה שנעשה זה עוד איזשהו טריק, נגדיר כאן id button register ו-id button unregister ונגדיר שהלחצן הראשון יש לו Enabled True והלחצן השני יש לו Enabled False למרות שב-Default זה True אבל מה הרעיון?

  8. 02:29

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

  9. 02:47

    באירוע של הלחצן אנחנו נחליף ביניהם. נגדיר את הראשון כ-enable false ואת השני כ-enable true מכדי שהוא כל פעם יוכל ללחוץ רק על לחצן אחד מביניהם.

  10. 02:57

    בקוד אנחנו רוצים לקבל את הלחצנים האלה. יש לנו ButtonRegister ובואו ניקח עוד אחד Unregister נאתר אותם. הנה מצאנו פה את הראשון RID ButtonRegister נשכפל נאתר את השני unregister גם כאן וגם כאן.

  11. 03:23

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

  12. 03:39

    הדבר הראשון שאנחנו צריכים לעשות זה לבנות מחלקה נפרדת שתופעל כאשר האירוע הזה יתרחש. המחלקה הזאת, בואו נקרא לה airplane mode receiver צריכה לרשת את broadcast receiver.

  13. 04:00

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

  14. 04:12

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

  15. 04:36

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

  16. 04:53

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

  17. 05:18

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

  18. 05:35

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

  19. 05:54

    ולהגיד פה איזושהי הודעה airplane mode is on. בואו נגדיר כאן length long ואנחנו יכולים לעבור לחלק ה-else. ניקח את הקטע קוד הזה, נשכפל ואנחנו עכשיו ב-off.

  20. 06:15

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

  21. 06:34

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

  22. 06:56

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

  23. 07:18

    אינטנט פילטר כאמור מגדיר איזה שהם קריטריונים לגבי מה אנחנו מחפשים. אז בואו נקרא לו איירפליין מוד פילטר, נגדיר אובייקט חדש מטיפוס Intent Filter ונגדיר Airplane Mode Filter Add Action.

  24. 07:42

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

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

ההרצאה הקודמת: Understanding Broadcast Receiver

ההרצאה הבאה: Airplane Mode Receiver - Register via Manifest

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

  • Secure Code
  • Swarm - Global Mode
  • אוגרים במעבד - Stack & Register
  • Code and Fix Model

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

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