ماژول CellBroadcast تلاشهای مکرر را برای OEMها کاهش میدهد (که به نوبه خود باعث کاهش پراکندگی در اکوسیستم اندروید میشود و رفتار ثابتی را برای کاربران نهایی ارائه میدهد) و به سادهسازی آزمایشهای حامل و صدور گواهی برای الزامات مربوط به CellBroadcast کمک میکند (زیرا کد را نمیتوان توسط OEMها تغییر داد). این ماژول قابل بهروزرسانی است، به این معنی که میتواند بهروزرسانیهای عملکرد را خارج از چرخه انتشار عادی اندروید دریافت کند.
قالب بسته
ماژول CellBroadcast از سرویس و برنامه زیر تشکیل شده است.
سرویس CellBroadcastService از رمزگشایی پیامک CellBroadcast، geofencing برای هشدار اضطراری بی سیم (WEA) 3.0، بررسی تکرار پیام و پخش پیام ها به برنامه ها پشتیبانی می کند. این یک سرویس پیامرسانی با هدف جغرافیایی و زمینی یک به چند است که برای رساندن پیامها به چندین کاربر تلفن همراه، در یک منطقه مشخص، به طور همزمان طراحی شده است. این سرویس توسط کمیته ETSI GSM، 3GPP تعریف شده است و بخشی از استانداردهای مخابراتی است.
برنامه CellBroadcastReceiver یک برنامه سیستمی پیشفرض است که هشدارهای اضطراری و غیراضطراری (مانند هشدارهای کهربایی و ریاستجمهوری) را کنترل میکند و اطلاعات را براساس مقررات شرکت مخابراتی و منطقهای به کاربران نهایی ارائه میدهد.
جریان پیام CellBroadcast
شکل زیر جریان پیام CellBroadcast را نشان می دهد.
شکل 1. جریان پیام CellBroadcastReceiver
لایه رابط رادیویی (RIL)
InBoundSMSHandler
در مورد پیامک CDMA/GSM CellBroadcast اطلاع می دهد.چارچوب، پیامک CellBroadcast را به ماژول CBS می فرستد تا پیام دریافتی را تجزیه و پردازش کند.
پس از پردازش پیام، CellBroadcastService هدف را به برنامه پیشفرض سیستم CellBroadcastReceiver ارسال میکند.
برنامه 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، این مورد در تنظیمات > پیشرفته > هشدار اضطراری ادغام شده است. برای ادغام یک پیوند در برنامه پیامرسانی خود، مسیر را در برنامه پیامرسانی تعریف کنید و نام مؤلفه را برای ماژول CellBroadcast به صورت com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity
پیکربندی کنید.
ادغام با صندوق پیامک
میتوانید نمایش پیامهای CellBroadcast را در برنامه پیامرسانی پیشفرض با نادیده گرفتن پیکربندی زیر با استفاده از پوشش منبع زمان اجرا فعال کنید.
<item type="bool" name="enable_write_alerts_to_sms_inbox" />
از آنجا که اعطای مجوزها خارج از محدوده ماژول CellBroadcast است، باید مجوز AppOpsManager.OP_WRITE_SMS
را به ماژول CellBroadcast بدهید تا پشتیبانی سرتاسری ارائه دهد. برای اجرای مرجع AOSP، به این پچ SmsApplication.java
مراجعه کنید.
برنامه CellBroadcastReceiver را اجرا کنید
برنامه CellBroadcastReceiver دارای نقاط راه اندازی زیر است.
منوی برنامه تنظیمات
یک برنامه (از جمله برنامه های شخص ثالث) مانند یک برنامه پیام که به سابقه پیام CellBroadcast پیوند می دهد.
(اختیاری) یک نماد راه اندازی از صفحه اصلی Android که توسط OEM اضافه شده است. برای جزئیات، به افزودن نماد راهاندازی مراجعه کنید.
تنظیمات برنامه 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 در آفریقای جنوبی). برای این کانال، پیام های پخش شده منجر به گفتگو یا اعلان نمی شود. در عوض، پیامهای پخش شده در وضعیت سیم کارت منوی تنظیمات یا در نوار وضعیت ظاهر میشوند (مثلاً نمایش کد پستی).
اجرای 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 یا برنامه Settings برای ارائه پشتیبانی سرتاسر اجرا کنید. برای اجرای مرجع، به برنامه تنظیمات CellBroadcastService مراجعه کنید.
سفارشی سازی
شما نمی توانید به طور مستقیم کد منبع ماژول CellBroadcast را تغییر دهید، اما می توانید از پوشش های منابع زمان اجرا (RROs) برای فعال کردن (یا غیرفعال کردن) پارامترها استفاده کنید (به عنوان مثال، می توانید رنگ اعلان ها و ابعاد را در دیالوگ ها سفارشی کنید). برای لغو مقادیر پیشفرض پارامترهای مورد استفاده در ماژول CellBroadcast، نام بسته هدف را به com.android.cellbroadcastreceiver
تغییر دهید. علاوه بر این:
برای فهرستی از پیکربندیهای قابل پوشش، به
overlayable.xml
مراجعه کنید.برای اجرای مثال، به
RROSampleTestApp
در AOSP مراجعه کنید.
اگر پیادهسازی منابع ترجمه رشته رابط کاربری را ندارد یا ترجمهها انتظار شما را برآورده نمیکنند، میتوانید منابع ترجمه را با استفاده از RRO لغو کنید یا با تیم ترجمه Google برای ترجمههای رشته بالادستی به ماژول CellBroadcast کار کنید. اگر منابع ترجمه را نادیده بگیرید، Google باید آن رشتهها را در overlayable.xml
در معرض نمایش بگذارد تا امکان بازنویسی فراهم شود. اگر به پیکربندیهای بیشتری برای سفارشیسازی رابط کاربری نیاز دارید، با گروه پشتیبانی CellBroadcast تماس بگیرید.
انتقال داده ها
Android 11 شامل یک برنامه قدیمی CellBroadcast است که مکانیزمی برای حفظ و انتقال داده های برنامه (از جمله تنظیمات کاربر و تاریخچه هشدار اضطراری) برای دستگاه هایی است که به ماژول CellBroadcast ارتقا می یابند. پیادهسازیهای اندرویدی که از ماژول CellBroadcast استفاده میکنند، باید برنامه قدیمی CellBroadcast را برای انتقال دادهها در ساخت خود داشته باشند. اگر پیادهسازی شما از یک راهحل سفارشی CellBroadcast استفاده میکند، باید یک APK CellBroadcastContentProvider برای حفظ دادهها تعریف کنید (میتوانید با خیال راحت APK پخش سلولی قدیمی را در نسخه بعدی حذف کنید).
در دستگاههایی که برای استفاده از ماژول CellBroadcast ارتقا یافتهاند، ماژول دادهها را از AOSP LegacyCellBroadcastApp یا CellBroadcastContentProvider APK تعریفشده توسط OEM از طریق مرجع cellbroadcast-legacy
به خوبی تعریف شده واکشی میکند.
از یک APK CellBroadcastContentProvider تعریف شده توسط OEM استفاده کنید
هنگام تعریف CellBroadcastContentProvider APK، APK باید این مشخصات را رعایت کند.
APK یک APK بدون هد است که فقط محتویات پایگاه داده و
SharedPreferences
خود را از طریق یک شیContentProvider
با مجوزcellbroadcast-legacy
نشان میدهد و برای برنامههای شخص ثالث قابل دسترسی نیست.APK توسعه یافته و متعلق به OEM است، جایی که OEM می تواند به میزبانی طرح API پنهان خود ادامه دهد.
برای انتقال SharedPreferences
به ماژول CellBroadcast، CellBroadcastContentProvider APK باید از روش ContentProvider.call
با پارامترهای زیر پشتیبانی کند:
- مرجع:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
- روش:
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
Arg:
@SystemAPI CellBroadcast.Preference
این لیستی از کلیدهای ترجیحی مشترک پشتیبانی شده برای ماژول CellBroadcast است. داده ها از
SharedPreferences
برای روشContentProvider.call
می آیند.
برای انتقال تاریخچه پیام به ماژول CellBroadcast، APK CellBroadcastContentProvider باید از روش ContentProvider.query
با پارامترهای زیر پشتیبانی کند:
- مرجع:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
. ستون های پرس و جو ویژگی های پیام پشتیبانی شده را برای ماژول CellBroadcast لیست می کنند. داده ها (از پایگاه داده شما) را برای روشContentProvider.query
می گیرد.
برای اجرای مرجع برای CellBroadcastContentProvider,
به LegacyCellBroadcastContentProvider
مراجعه کنید.
تست کردن
مجموعه تست سازگاری Android (CTS) عملکرد APIهای سیستم وابسته به برنامه را تأیید می کند. همچنین میتوانید CellBroadcast unit tests/testappsp
اجرا کنید.
اگر OEM کد مخفی CMAS را برای دستگاهی فعال کرده باشد، آن دستگاه می تواند از حالت اشکال زدایی با ویژگی های زیر پشتیبانی کند.
هشدارهای آزمایشی با کلید روشن/خاموش در زیر سایر هشدارها گروه بندی می شوند.
تاریخچه شامل همه پیام هایی است که دریافت شده اند اما نمایش داده نشده اند، مانند پیام های تکراری یا پیام هایی به زبان دیگر.
پیام ها تمام پارامترهای موجود از جمله شماره سریال، شناسه پیام و تاریخ انقضا را نمایش می دهند.
برای فعال کردن حالت اشکال زدایی، *#*#CMAS#*#* را در شماره گیر شماره گیری کنید.
تماس بگیرید
برای جزئیات بیشتر یا سؤالات در مورد ماژول CellBroadcast، با گروه پشتیبانی CellBroadcast تماس بگیرید.