1 of 23

השתלמות

"אנדרואיד – פרויקט לבגרות"

מנחה: זאב פריימן

2 of 23

BroadcastReceiver:

מנגנון זיהוי ותגובות

על מידע שמופץ על ידי

אפליקציות אחרות,

אבל בעיקר – על ידי מערכת

BroadcastReceiver

3 of 23

BroadcastReceiver

במערכת Android מושג "שידור" (broadcast)

מציין תהליך שליחה/קבלה מידע על אירועים במערכת או באפליקציות.

דוגמאות לאירועי מערכת:

חיבור/ניתוק WiFi, הפעלה/כיבוי "מצב טיסה",

SMS או שיחת טלפון נכנסת, סיום הורדת קובץ,

הפעלת מכשיר שהיה מכובה...

4 of 23

שידור אקטיבי – קליטה לא חובה

BroadcastReceiver

5 of 23

:

BroadcastReceiver

למימוש "שידור" (broadcast)

מערכת (אפליקציה) משתמשים ב-Intent,

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

זה לא Intent המכוון ליעד מסוים

(אקטיביטי או פעולה)

6 of 23

:

BroadcastReceiver

זה לא Intent המכוון ליעד מסוים

(אקטיביטי או פעולה)

Intent של "שידור"

יכולה לקבל כל אפליקציה הקיימת במכשיר, אבל בתנאי, שיש באפליקציה

"מקלט שידור"

7 of 23

BroadcastReceiver

8 of 23

BroadcastReceiver

"מקלט שידור" (broadcast receiver)

הוא מנגנון היודע לזהות קיום המידע הנשלח

דרך "שידור" ולהגיב על קבלתו.

באופן "טכני"

מדובר במחלקה אשר מכילה פעולות ופקודות

אשר יכולות להגיב על "שידור" מסויים

(Intent של broadcast)

9 of 23

BroadcastReceiver

"מקלט שידור" באפליקציה דורש:

  1. בניית המחלקה יורשת מ-BroadcastReceiver
  2. רישום ב-AndroidManifest
  3. הוספת (לא עבור כל סוג מקלט) אישור נוסף, מהמשתמש
  4. הפעלה/כיבוי (registry/unregistry) "מקלט שידור"

10 of 23

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

ממחלקת מערכת BroadcasrReceiver

BroadcastReceiver

11 of 23

BroadcastReceiver

בניית ה"מקלט" בדרך זאת מבצעת

גם בניה אוטומטית כמחלקה יורשת

וגם עושה רישום אוטומטי ב-AndroidManifest

12 of 23

בבניית המחלקה מתווספת אליה

פעולת חובה

אשר מופעלת באופן אוטומטי,

כאשר "מקלט" רשום ואפליקציה מזהה "שידור"

BroadcastReceiver

13 of 23

פעולה onReceive

צריכה להכיל סימום פעולות ושימוש בפקודות

המיועדות לביצוע תגובת האפליקציה

לקליטת ה"שידור"

BroadcastReceiver

14 of 23

על מנת להעביר "מקלט" למצב פעיל

יש לבצע פעולת "רישום"

BroadcastReceiver

דוגמה ל"מסנן" שידורים:

הפעם "מקלט" יגיב לשיחה נכנסת

15 of 23

על מנת להעביר "מקלט" למצב לא פעיל

יש "לבטל" "רישום"

BroadcastReceiver

16 of 23

יש מספר דרכים לבצע פעולות

"רישום" וגם "ביטול רישום"

של "מקלט שידור".

אחת מהנפוצות ביות היא:

      • "רישום" בכניסה לאקטיביטי
      • "ביטול רישום" ביציאה מאקטיביטי

BroadcastReceiver

17 of 23

אחת מהנפוצות ביות היא:

      • "רישום" בכניסה לאקטיביטי
      • "ביטול רישום" ביציאה מאקטיביטי

BroadcastReceiver

18 of 23

"מעגל חיים"

של אקטיביטי

BroadcastReceiver

19 of 23

כמובן, שאפשר לעשות "רישום/ביטול"

גם בדרכים כבר מוכרות,

למשל, ע"י לחיצת על לחצן,

בחירת אחד מ"לחצני רדיו",

דרך תפריט,

ע"י שינוי מצב הרכיב (switch)

BroadcastReceiver

20 of 23

אפשר לבצע "רישום/ביטול"

באופן אוטומטי בלי להודיע על כך למשתמש,

אפשר להשאיר בחירה למשתמש,

אפשר לבצע אוטומטי ולהודיע למשתמש...

כל אופציות פתוחות וניתנות לשיקול דעת

של תלמיד

BroadcastReceiver

21 of 23

מה שיהיה בתוך מחלקה

של "קולט שידור",

תלוי על אזה "שידור" מחלקה צריכה להגיב.

באותה אפליקציה מותר לכלול

מספר לא מוגבל

של "מקלטי שידור" שונים

BroadcastReceiver

22 of 23

אישורים – permission

ברב המקרים צריך לרשום אותם

גם בקובץ AndroidManifest...

BroadcastReceiver

23 of 23

אישורים – permission

... וגם בקבצי אקטיביטי (java)

BroadcastReceiver