پخش سلولی

ماژول CellBroadcast تلاش‌های مکرر را برای OEMها کاهش می‌دهد (که به نوبه خود باعث کاهش پراکندگی در اکوسیستم اندروید می‌شود و رفتار ثابتی را برای کاربران نهایی ارائه می‌دهد) و به ساده‌سازی آزمایش‌های حامل و صدور گواهینامه برای الزامات مربوط به CellBroadcast کمک می‌کند (زیرا کد را نمی‌توان توسط OEMها تغییر داد. ). این ماژول قابل به‌روزرسانی است، به این معنی که می‌تواند به‌روزرسانی‌های عملکرد را خارج از چرخه انتشار عادی اندروید دریافت کند.

قالب بسته

ماژول CellBroadcast از سرویس و برنامه زیر تشکیل شده است.

  • سرویس CellBroadcastService از رمزگشایی پیامک CellBroadcast، geofencing برای هشدار اضطراری بی سیم (WEA) 3.0، بررسی تکرار پیام و پخش پیام ها به برنامه ها پشتیبانی می کند. این یک سرویس پیام‌رسانی با هدف جغرافیایی و زمینی یک به چند است که برای رساندن پیام‌ها به چندین کاربر تلفن همراه، در یک منطقه مشخص، به طور همزمان طراحی شده است. این سرویس توسط کمیته ETSI GSM، 3GPP تعریف شده است و بخشی از استانداردهای مخابراتی است.

  • برنامه CellBroadcastReceiver یک برنامه سیستمی پیش‌فرض است که هشدارهای اضطراری و غیراضطراری (مانند هشدارهای کهربایی و ریاست‌جمهوری) را کنترل می‌کند و اطلاعات را براساس مقررات شرکت مخابراتی و منطقه‌ای به کاربران نهایی ارائه می‌دهد.

جریان پیام CellBroadcast

شکل زیر جریان پیام CellBroadcast را نشان می دهد.

جریان پیام CellBroadcastReceiver

شکل 1. جریان پیام CellBroadcastReceiver

  1. لایه رابط رادیویی (RIL) InBoundSMSHandler در مورد پیامک CDMA/GSM CellBroadcast اطلاع می دهد.

  2. چارچوب، پیامک CellBroadcast را به ماژول CBS می فرستد تا پیام دریافتی را تجزیه و پردازش کند.

  3. پس از پردازش پیام، 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، این مورد در تنظیمات > پیشرفته > هشدار اضطراری ادغام شده است. برای ادغام یک پیوند در برنامه پیام‌رسانی خود، مسیر را در برنامه پیام‌رسانی تعریف کنید و نام مؤلفه را برای ماژول 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 را نشان می دهد.

منوی تنظیمات برنامه 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 تماس بگیرید.