ماژول CellBroadcast تلاش های تکراری برای OEM ها را کاهش می دهد (که به نوبه خود تکه تکه شدن در اکوسیستم اندرویدی را کاهش می دهد و رفتار مداوم را برای کاربران نهایی فراهم می کند) و به ساده سازی آزمایش و صدور گواهینامه برای الزامات مربوط به Cellbrodcast کمک می کند (زیرا این کد توسط OEMS اصلاح نمی شود ). این ماژول به روزرسانی است ، به این معنی که می تواند به روزرسانی های عملکردی خارج از چرخه انتشار عادی اندرویدی را دریافت کند.
قالب بسته
ماژول CellBroadcast از سرویس و برنامه زیر تشکیل شده است.
سرویس CellBroadService از رمزگشایی پیام کوتاه 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
می توانید پیکربندی را با استفاده از روکش منابع Runtime (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 را فعال کنید
برای فعال کردن کد مخفی CMA ، *#*#CMAS#*#* ( *#*#2627#*#* در صفحه شماره گیری) ، یک برنامه Dialer باید برای کد شماره گیری ویژه به شکل *#*# گوش کند 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 کد مخفی CMA را برای یک دستگاه فعال کرده است ، آن دستگاه می تواند با ویژگی های زیر از حالت اشکال زدایی پشتیبانی کند.
هشدارهای آزمایشی تحت هشدارهای دیگر با ضامن روشن/خاموش قرار می گیرند.
تاریخ شامل تمام پیام هایی است که دریافت شده اما نمایش داده نشده است ، مانند پیام های تکراری یا پیام به زبان دیگری.
پیام ها تمام پارامترهای موجود ، از جمله شماره سریال ، شناسه پیام و تاریخ انقضا را نمایش می دهند.
برای فعال کردن حالت اشکال زدایی، *#*#CMAS#*#* را در شماره گیر شماره گیری کنید.
تماس بگیرید
برای جزئیات بیشتر یا سؤالات در مورد ماژول CellBroadcast، با گروه پشتیبانی CellBroadcast تماس بگیرید.