מודול CellBroadcast מצמצם את המאמצים החוזרים של יצרני ציוד מקורי (מה שמצמצם בתורו את הפיצול במערכת האקולוגית של Android ומספק התנהגות עקבית למשתמשי הקצה), ועוזר לייעל את הבדיקות והאישורים של ספקי הסלולר לדרישות שקשורות ל-CellBroadcast (כי יצרני הציוד המקורי לא יכולים לשנות את הקוד). המודול הזה ניתן לעדכון, כלומר הוא יכול לקבל עדכונים לפונקציונליות שלו מחוץ למחזור הרגיל של גרסאות Android.
פורמט החבילה
מודול CellBroadcast כולל את השירות והאפליקציה הבאים.
השירות CellBroadcastService תומך בפענוח של הודעות SMS בשיטת Cell Broadcast, בגידור גיאוגרפי להתראות אלחוטיות על מצבי חירום (WEA) 3.0, בבדיקות של כפילויות בהודעות ובשידור הודעות לאפליקציות. זהו שירות הודעות ממוקד גיאוגרפית ומוגבל גיאוגרפית, שנועד להעביר הודעות לכמה משתמשי טלפון נייד באזור מוגדר בו-זמנית. השירות מוגדר על ידי ועדת ה-GSM של ETSI, 3GPP, והוא חלק מתקני הטלקומוניקציה.
האפליקציה CellBroadcastReceiver היא אפליקציית מערכת שמוגדרת כברירת מחדל ומטפלת בהתראות על מצבי חירום ובהתראות אחרות (כמו התראות על ילדים נעדרים והתראות נשיאותיות), ומציגה את המידע למשתמשי הקצה על סמך התקנות של הספק והתקנות האזוריות.
תהליך ההודעה בשידור סלולרי
באיור הבא מוצג תהליך העברת ההודעה בשיטת CellBroadcast.
איור 1. תהליך ההודעה ב-CellBroadcastReceiver
שכבת ממשק הרדיו (RIL) שולחת ל-
InBoundSMSHandlerהודעה על הודעת SMS מסוג CellBroadcast ב-CDMA/GSM.ה-framework מעביר את ה-SMS של השידור הסלולרי למודול ה-CBS כדי לנתח ולעבד את ההודעה הנכנסת.
אחרי שההודעה מעובדת, CellBroadcastService מעביר את ה-Intent לאפליקציית ברירת המחדל של המערכת CellBroadcastReceiver.
האפליקציה CellBroadcastReceiver מציגה את ההודעה למשתמש.
פורמט המודול
האפליקציות CellBroadcastService ו-CellBroadcastReceiver כלולות בקובץ APEX אחד (com.android.cellbroadcast), שזמין למכשירים עם Android מגרסה 11 ואילך. המודול כולל קוד ב-package/app/CellBroadcastReceiver ומעביר מחלקות קיימות של מסגרת ל-packages/modules/CellBroadcastService.
יחסי תלות בין מודולים
מודול CellBroadcast מקיים אינטראקציה עם המסגרת באמצעות ממשקי API יציבים בלבד@SystemApi (לא ממשקי API של @hide) ותלוי בספריות הסטטיות הבאות.
Androidx.legacy_legacy-support-v13Androidx.recyclerview_recyclerviewAndroidx.preference_preferenceandroidx.legacy_legacy-preference-v14androidx.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
בקטע הזה מוסבר איך לשלב את מודול 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, האפשרות הזו משולבת בהגדרות > אפשרויות מתקדמות > התרעה על מקרה חירום. כדי לשלב קישור באפליקציית הודעות משלכם, צריך להגדיר את הנתיב באפליקציית ההודעות ולקבוע את שם הרכיב של מודול CellBroadcast כ-com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity.
שילוב עם תיבת דואר נכנס של SMS
כדי להציג הודעות CellBroadcast באפליקציית ההודעות שמוגדרת כברירת מחדל, צריך לשנות את ההגדרה הבאה באמצעות חבילה של שכבת-על בזמן ריצה (RRO).
<item type="bool" name="enable_write_alerts_to_sms_inbox" />
מתן הרשאות לא נכלל בהיקף של מודול CellBroadcast, ולכן צריך לתת למודול CellBroadcast את ההרשאה AppOpsManager.OP_WRITE_SMS כדי לספק תמיכה מקצה לקצה. למידע על הטמעת הפניה ל-AOSP, אפשר לעיין בתיקון SmsApplication.java.
הפעלת האפליקציה CellBroadcastReceiver
אפליקציית CellBroadcastReceiver כוללת את נקודות ההפעלה הבאות.
התפריט של אפליקציית ההגדרות.
אפליקציה (כולל אפליקציות של צד שלישי) כמו אפליקציית הודעות שמקושרת להיסטוריית ההודעות של שידורים סלולריים.
(אופציונלי) סמל הפעלה ממסך הבית של Android שנוסף על ידי יצרן הציוד המקורי. פרטים נוספים זמינים במאמר בנושא הוספת סמל להפעלה.
הגדרות של אפליקציית 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 מדור קודם לצורך העברת נתונים. אם ההטמעה שלכם משתמשת בפתרון מותאם אישית לשידור תאים, אתם צריכים להגדיר APK של CellBroadcastContentProvider כדי לשמור את הנתונים (אפשר להסיר בבטחה את ה-APK של שידור התאים מדור קודם בגרסה הבאה).
במכשירים ששודרגו לשימוש במודול CellBroadcast, המודול מאחזר נתונים מ-AOSP LegacyCellBroadcastApp או מ-CellBroadcastContentProvider APK שהוגדר על ידי יצרן הציוד המקורי (OEM), באמצעות הרשות המוגדרת היטב cellbroadcast-legacy.
שימוש ב-APK של CellBroadcastContentProvider שמוגדר על ידי יצרן ציוד מקורי
כשמגדירים APK של CellBroadcastContentProvider, ה-APK צריך לעמוד במפרטים האלה.
קובץ ה-APK הוא קובץ headless שמציג רק את התוכן של מסד הנתונים שלו ו
SharedPreferencesבאמצעות אובייקטContentProviderעם הרשאהcellbroadcast-legacy, ואין לאפליקציות צד שלישי גישה אליו.קובץ ה-APK מפותח ונמצא בבעלות יצרן הציוד המקורי (OEM), והוא יכול להמשיך לארח את סכימת ה-API המוסתרת שלו.
כדי להעביר את SharedPreferences למודול CellBroadcast, קובץ ה-APK של CellBroadcastContentProvider צריך לתמוך בשיטה ContentProvider.call עם הפרמטרים הבאים:
- רשות:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI - שיטה:
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE ארגומנט:
@SystemAPI CellBroadcast.Preferenceזו רשימה של מפתחות נתמכים של העדפות משותפות למודול CellBroadcast. הנתונים מגיעים מ-
SharedPreferencesעבור השיטהContentProvider.call.
כדי להעביר את היסטוריית ההודעות למודול CellBroadcast, קובץ ה-APK של CellBroadcastContentProvider צריך לתמוך בשיטה ContentProvider.query עם הפרמטרים הבאים:
- רשות:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI. עמודות השאילתה מפרטות את מאפייני ההודעה הנתמכים עבור מודול CellBroadcast. מקבל נתונים (מהמסד הנתונים שלכם) עבור ה-methodContentProvider.query.
למידע על הטמעה לדוגמה של CellBroadcastContentProvider,, אפשר לעיין במאמר LegacyCellBroadcastContentProvider.
בדיקה
חבילת בדיקות התאימות (CTS) של Android מאמתת את הפונקציונליות של ממשקי מערכת (API) שתלויים באפליקציה. אפשר גם להפעיל את מודול CellBroadcast
unit tests/testappsp.
אם יצרן הציוד המקורי הפעיל את קוד הסודי של CMAS במכשיר, המכשיר הזה יכול לתמוך במצב ניפוי באגים עם התכונות הבאות.
התראות בדיקה מקובצות בקטע התראות אחרות עם מתג הפעלה/השבתה.
ההיסטוריה כוללת את כל ההודעות שהתקבלו אבל לא מוצגות, כמו הודעות כפולות או הודעות בשפה אחרת.
בהודעות מוצגים כל הפרמטרים הזמינים, כולל מספר סידורי, מזהה הודעה ותאריך תפוגה.
כדי להפעיל את מצב ניפוי הבאגים, מחייגים *#*#CMAS#*#* בחייגן.
יצירת קשר
לפרטים נוספים או לשאלות לגבי מודול CellBroadcast, אפשר לפנות אל קבוצת התמיכה של CellBroadcast.