שידור סלולרי

המודול של CellBroadcast מפחית את המאמצים החוזרים ונשנים של יצרני ציוד מקורי (OEM) (וכך מפחית את הפיצול בסביבה העסקית של Android ומספק התנהגות עקבית למשתמשים הקצה), ועוזר לייעל את בדיקות הספקים ואת תהליך האישור שלהם בהתאם לדרישות שקשורות ל-CellBroadcast (כי יצרני ציוד מקורי לא יכולים לשנות את הקוד). אפשר לעדכן את המודול הזה, כלומר הוא יכול לקבל עדכונים לפונקציונליות מחוץ למחזור ההשקות הרגיל של Android.

פורמט החבילה

המודול CellBroadcast מורכב מהשירות והאפליקציה הבאים.

  • השירות CellBroadcastService תומך בפענוחים של הודעות SMS מסוג CellBroadcast, ביצירת אזורי הגנה גיאוגרפית להתרעות חירום אלחוטיות (WEA) 3.0, בבדיקות של כפילויות של הודעות ובשידור הודעות לאפליקציות. זהו שירות שליחת הודעות ממוקד-מיקום ומוגדר-גיאוטיים, שמאפשר לשלוח הודעות לכמה משתמשים בטלפונים ניידים, באזור מוגדר, בו-זמנית. השירות מוגדר על ידי ועדת ה-GSM של ETSI,‏ 3GPP, והוא חלק מהתקנים של טלקומוניקציה.

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

תהליך שליחת הודעות CellBroadcast

באיור הבא מוצג תהליך העברת ההודעות ב-CellBroadcast.

תהליך העברת ההודעות ב-CellBroadcastReceiver

איור 1. תהליך העברת ההודעות ב-CellBroadcastReceiver

  1. שכבת ממשק הרדיו (RIL) מעדכנת את InBoundSMSHandler על הודעת SMS של CellBroadcast ב-CDMA/GSM.

  2. ה-framework מעביר את ה-SMS של השידור הסלולרי למודול ה-CBS כדי לנתח ולעבד את ההודעה הנכנסת.

  3. אחרי שההודעה עוברת עיבוד, ה-Intent מועבר על ידי CellBroadcastService לאפליקציית ברירת המחדל של המערכת, CellBroadcastReceiver.

  4. אפליקציית CellBroadcastReceiver מציגה את ההודעה למשתמש.

פורמט המודול

השירות CellBroadcastService והאפליקציה CellBroadcastReceiver כלולים בקובץ APEX יחיד (com.android.cellbroadcast), שזמין במכשירים עם Android מגרסה 11 ואילך. המודול כולל קוד ב-package/app/CellBroadcastReceiver ומעביר את הכיתות הקיימות של המסגרת אל packages/modules/CellBroadcastService.

יחסי תלות בין מודולים

המודול CellBroadcast יוצר אינטראקציה עם המסגרת רק באמצעות @SystemApi יציב (ללא ממשקי @hide API) והוא תלוי בספריות הסטטיות הבאות.

  • Androidx.legacy_legacy-support-v13
  • Androidx.recyclerview_recyclerview
  • Androidx.preference_preference
  • androidx.legacy_legacy-preference-v14
  • androidx.appcompat_appcompat

אפשר להתאים אישית את ההגדרות באמצעות שכבות-על של משאבים בסביבת זמן הריצה (RRO).

הגדרת הרשאות

המודול של CellBroadcast חתום על ידי חתימה של Google במקום חתימה של הפלטפורמה, כלומר המודול מאבד את הגישה להרשאות החתימה. במקום זאת, ב-Android 11 מוגדרת ההרשאה החדשה לחתימה com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY בתוך מודול CellBroadcast. רק חבילות במודול יכולות לקבל את ההרשאה הזו, כי הן חתומות על אותו מפתח. ההרשאה הזו מאפשרת לאפליקציה CellBroadcastReceiver לקבל גישה מלאה למסד הנתונים בתוך CellBroadcastService.

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

הטמעה של מודול CellBroadcast

בקטע הזה נסביר איך לשלב את המודול CellBroadcast.

שילוב עם ההגדרות

אתם יכולים להחליט איפה לשלב את ההגדרות של CellBroadcast באפליקציית ההגדרות (משתמשי הקצה ניגשים לדף ההגדרות של CellBroadcast דרך הגדרות > אפליקציות והתראות > מתקדם > התראת חירום). כדי להפעיל את האפליקציה CellBroadcastReceiver מאפליקציית ההגדרות, משנים את הגדרות ההגדרה הבאות עם שם החבילה com.android.cellbroadcastreceiver.

<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>

שילוב עם אפליקציות לשליחת הודעות

אתם יכולים לשלב קישור לאפליקציה באפליקציות של הודעות כדי לפתוח את היסטוריית ההודעות של CellBroadcast. באפליקציית Android Messaging, התכונה הזו משולבת בהגדרות > מתקדם > התראת חירום. כדי לשלב קישור באפליקציית העברת ההודעות שלכם, מגדירים את הנתיב באפליקציית העברת ההודעות ומגדירים את שם הרכיב של מודול CellBroadcast בתור com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity.

שילוב עם תיבת הדואר הנכנס של SMS

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

<item type="bool" name="enable_write_alerts_to_sms_inbox" />

הקצאת הרשאות היא מחוץ להיקף המודול CellBroadcast, ולכן צריך להקצות את ההרשאה AppOpsManager.OP_WRITE_SMS למודול CellBroadcast כדי לספק תמיכה מקצה לקצה. להטמעה של AOSP, אפשר לעיין בתיקון SmsApplication.java הזה.

הפעלת האפליקציה CellBroadcastReceiver

לאפליקציה CellBroadcastReceiver יש את נקודות ההפעלה הבאות.

  • התפריט של אפליקציית ההגדרות.

  • אפליקציה (כולל אפליקציות של צד שלישי), כמו אפליקציית הודעות שמקשרת להיסטוריית ההודעות של CellBroadcast.

  • (אופציונלי) סמל הפעלה ממסך הבית של Android שנוסף על ידי יצרן הציוד המקורי. פרטים נוספים זמינים במאמר הוספת סמל להפעלה.

הגדרות האפליקציה CellBroadcastReceiver

בצילום המסך הבא מוצג תפריט ההגדרות של אפליקציית CellBroadcastReceiver.

תפריט ההגדרות של אפליקציית CellBroadcastReceiver

איור 2. תפריט ההגדרות של אפליקציית CellBroadcastReceiver

היסטוריה של התרעות חירום

איור 3. המסך של היסטוריית ההתראות על מקרה חירום

הוספת סמלי הפעלה

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

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

    <item type="bool" name="show_message_history_in_launcher" />
    
  • כדי לשנות את סמל ברירת המחדל של AOSP, משנים את ההגדרה הבאה באמצעות RRO.

    <!-- Customize launcher icon for cellbroadcast history -->
    <item type="mipmap" name="ic_launcher_cell_broadcast" />
    

הפעלת הקוד הסודי של CMAS

כדי להפעיל את הקוד הסודי של CMAS, *#*#CMAS#*#* (*#*#2627#*#* במקשות החיוג), אפליקציית החיוג חייבת להאזין לקוד החיוג המיוחד בצורה של *#*#code#*#* ולטפל בקוד באמצעות השיטה הציבורית sendDialerSpecialCode.

דרישות לגבי פרטי האזור: ערוץ 50

ערוץ 50 הוא ערוץ מיוחד שספקים משתמשים בו כדי לשדר מידע שקשור לאזור (למעט MTN בדרום אפריקה). בערוץ הזה, הודעות שידור לא גורמות לתיבת דו-שיח או להתראה. במקום זאת, הודעות העדכון יופיעו בסטטוס כרטיס ה-SIM בתפריט ההגדרות, או בסרגל הסטטוס (לדוגמה, הצגת מיקוד).

ההטמעה של Android CellBroadcastService מספקת תמיכה בממשקי ה-API הבאים בשירות השידור הסלולרי, כדי שאפליקציות ההגדרות ו-SysUI יוכלו לקבל את המידע של שידור ערוץ 50. כדי להטמיע את זה:

  • רושמים את השידור android.telephony.action.AREA_INFO_UPDATED ומבטלים את שם החבילה של המקלט config_area_info_receiver_packages באמצעות RRO.

  • קישור ל-CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE.

מאחר שאפליקציות ההגדרות ו-SysUI לא נכללות בהיקף של מודול CellBroadcast, כדי לספק תמיכה מקצה לקצה צריך להטמיע את השינויים ב-SystemUI או באפליקציית ההגדרות. להטמעה לדוגמה, אפשר לעיין באפליקציית ההגדרות של CellBroadcastService.

התאמה אישית

אי אפשר לשנות ישירות את קוד המקור של מודול CellBroadcast, אבל אפשר להשתמש בשכבות-על של משאבים בסביבת זמן ריצה (RRO) כדי להפעיל (או להשבית) פרמטרים (לדוגמה, אפשר להתאים אישית את הצבע של ההתראות ואת המאפיינים של תיבת הדו-שיח). כדי לשנות את ערכי ברירת המחדל של הפרמטרים שבהם נעשה שימוש במודול CellBroadcast, משנים את שם חבילת היעד ל-com.android.cellbroadcastreceiver. בנוסף:

  • רשימה של הגדרות שאפשר להוסיף שכבה עליונה עליהן מופיעה במאמר overlayable.xml.

  • דוגמה להטמעה מפורטת זמינה ב-RROSampleTestApp ב-AOSP.

אם בהטמעה חסרים משאבי תרגום של מחרוזות בממשק המשתמש, או אם התרגומים לא עומדים בציפיות שלכם, תוכלו לשנות את משאבי התרגום באמצעות RRO או לעבוד עם צוות התרגום של Google כדי להעביר את תרגומי המחרוזות למעלה למודול CellBroadcast. אם תשנו את משאבי התרגום, Google תצטרך לחשוף את המחרוזות האלה ב-overlayable.xml כדי לאפשר שינוי. אם אתם צריכים הגדרות נוספות להתאמה אישית של ממשק המשתמש, תוכלו לפנות לקבוצת התמיכה של CellBroadcast.

העבר נתונים

גרסת Android 11 כוללת אפליקציית CellBroadcast מדור קודם, שמשמשת כמנגנון לשמירה ולהעברה של נתוני האפליקציה (כולל הגדרות המשתמש והיסטוריות של התראות חירום) במכשירים שמשודרגים למודול CellBroadcast. הטמעות של Android שמשתמשות במודול CellBroadcast צריכות לכלול את אפליקציית CellBroadcast הישנה ב-build שלהן להעברת נתונים. אם בהטמעה שלכם נעשה שימוש בפתרון מותאם אישית של CellBroadcast, עליכם להגדיר קובץ APK של CellBroadcastContentProvider כדי לשמור את הנתונים (אפשר להסיר בבטחה את קובץ ה-APK הקודם של CellBroadcast במהדורה הבאה).

במכשירים ששודרגו לשימוש במודול CellBroadcast, המודול מאחזר נתונים מ-AOSP LegacyCellBroadcastApp או מ-CellBroadcastContentProvider APK שהוגדר על ידי יצרן הציוד המקורי (OEM) דרך הרשות המוגדרת היטב cellbroadcast-legacy.

שימוש בקובץ APK של CellBroadcastContentProvider שהוגדר על ידי יצרן ציוד מקורי (OEM)

כשמגדירים קובץ APK של CellBroadcastContentProvider, הוא צריך לעמוד בדרישות המפורטות כאן.

  • ה-APK הוא APK ללא ממשק משתמש שמוצגים בו רק התוכן של מסד הנתונים שלו ושל SharedPreferences דרך אובייקט ContentProvider עם ההרשאה cellbroadcast-legacy, ואין לאפליקציות של צד שלישי גישה אליו.

  • קובץ ה-APK מפותח על ידי יצרן הציוד המקורי (OEM) והוא בבעלות שלו. יצרן הציוד המקורי יכול להמשיך לארח את סכימת ה-API המוסתרת שלו.

כדי להעביר את SharedPreferences למודול CellBroadcast, קובץ ה-APK של CellBroadcastContentProvider צריך לתמוך ב-method‏ ContentProvider.call עם הפרמטרים הבאים:

  • סמכות: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI
  • שיטה: @SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
  • Arg: @SystemAPI CellBroadcast.Preference

    זוהי רשימה של מפתחות של העדפות משותפות שנתמכים במודול CellBroadcast. הנתונים מגיעים מ-SharedPreferences בשיטה ContentProvider.call.

כדי להעביר את היסטוריית ההודעות למודול CellBroadcast, קובץ ה-APK של CellBroadcastContentProvider צריך לתמוך ב-method‏ ContentProvider.query עם הפרמטרים הבאים:

  • סמכות: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI. בעמודות השאילתה מפורטים מאפייני ההודעות הנתמכים של מודול CellBroadcast. ה-method מקבל נתונים (ממסד הנתונים) עבור ה-method‏ ContentProvider.query.

להטמעה לדוגמה של CellBroadcastContentProvider,, אפשר לעיין במאמר LegacyCellBroadcastContentProvider.

בדיקה

חבילה לבדיקות תאימות (CTS) של Android מאמתת את הפונקציונליות של ממשקי API מערכת שמוגדרים באפליקציות. אפשר גם להריץ את המודול CellBroadcast‏ unit tests/testappsp.

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

  • התראות הבדיקה מקובצות בקטע התראות אחרות עם מתג הפעלה/השבתה.

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

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

כדי להפעיל את מצב ניפוי הבאגים, מקישים על *#*#CMAS#*#* במכשיר החיוג.

איש/אשת הקשר

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