שידור סלולרי

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

פורמט החבילה

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

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

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

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

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

זרימת הודעות ב-Cell BroadcastReceiver

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

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

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

  3. לאחר עיבוד ההודעה, Cell BroadcastService מעבירה את הכוונה לאפליקציית ברירת המחדל של המערכת Cell BroadcastReceiver.

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

פורמט המודול

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

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

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

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

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

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

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

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

אפשר לשלב קישור לאפליקציה באפליקציות העברת הודעות כדי לפתוח את היסטוריית ההודעות של Cell Broadcast. באפליקציית Android Messaging, התכונה הזו משולבת בהגדרות > מתקדם > התראת חירום. כדי לשלב קישור באפליקציית הודעות משלכם, צריך להגדיר את הנתיב באפליקציית ההודעות ולהגדיר את שם הרכיב של מודול Cell Broadcast בתור 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 Cell BroadcastService מספקת תמיכה לממשקי ה-API הבאים בשירות השידור הסלולרי, עבור ההגדרות והאפליקציות של SysUI כדי לקבל את המידע של ערוץ 50 המשודר. כדי להטמיע את זה:

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

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

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

התאמה אישית

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

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

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

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

העבר נתונים

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

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

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

כשמגדירים APK של Cell BroadcastContentProvider, ה-APK חייב לעמוד במפרטים האלה.

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

  • ה-APK פותח ונמצא בבעלות ה-OEM, שם ה-OEM יכול להמשיך לארח את סכימת ה-API המוסתרת שלו.

כדי להעביר את SharedPreferences למודול CellBroadcast, קובץ ה-APK של CellBroadcastContentProvider צריך לתמוך בשיטה 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. עמודות של שאילתות מציגות את המאפיינים הנתמכים של הודעות במודול Cell Broadcast. ה-method מקבל נתונים (ממסד הנתונים) עבור ה-method‏ ContentProvider.query.

דוגמה להטמעה של CellBroadcastContentProvider,: LegacyCellBroadcastContentProvider.

בדיקה

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

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

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

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

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

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

יצירת קשר

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