البث الخلوي

تعمل وحدة CellBroadcast على تقليل الجهود المتكررة لمصنعي المعدات الأصلية (والتي بدورها تقلل التجزئة عبر نظام Android البيئي وتوفر سلوكًا ثابتًا للمستخدمين النهائيين) وتساعد في تبسيط اختبار واعتماد شركات الاتصالات للمتطلبات المتعلقة بـ CellBroadcast (نظرًا لأنه لا يمكن تعديل الكود بواسطة مصنعي المعدات الأصلية. ). هذه الوحدة قابلة للتحديث ، مما يعني أنها يمكن أن تتلقى تحديثات للوظائف خارج دورة إصدار Android العادية.

تنسيق الحزمة

تتكون وحدة CellBroadcast من الخدمة والتطبيق التاليين.

  • تدعم خدمة CellBroadcastService فك تشفير الرسائل القصيرة عبر CellBroadcast ، وتحديد المواقع الجغرافية لتنبيه الطوارئ اللاسلكية (WEA) 3.0 ، والتحقق من تكرار الرسائل ، وبث الرسائل إلى التطبيقات. إنها خدمة مراسلة مستهدفة جغرافيًا ومحددة جغرافيًا من شخص إلى متعدد مصممة لتوصيل الرسائل إلى العديد من مستخدمي الهواتف المحمولة ، في منطقة محددة ، في نفس الوقت. يتم تحديد الخدمة من قبل لجنة ETSI GSM ، 3GPP ، وهي جزء من معايير الاتصالات.

  • تطبيق CellBroadcastReceiver هو تطبيق نظام افتراضي يتعامل مع تنبيهات الطوارئ وغير الطارئة (مثل التنبيهات الكهرمانية والرئاسية) ويقدم المعلومات إلى المستخدمين النهائيين استنادًا إلى أنظمة الناقل واللوائح الإقليمية.

تدفق الرسائل CellBroadcast

يوضح الشكل التالي تدفق رسائل البث الخلوي.

تدفق الرسائل CellBroadcastReceiver

الشكل 1. تدفق الرسائل CellBroadcastReceiver

  1. تقوم طبقة السطح البيني الراديوي (RIL) بإخطار InBoundSMSHandler بشأن الرسائل القصيرة للبث الخلوي CDMA / GSM.

  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 APIs) وتعتمد على المكتبات الثابتة التالية.

  • Androidx.legacy_legacy-support-v13
  • Androidx.recyclerview_recyclerview
  • Androidx.preference_preference
  • androidx.legacy_legacy-preference-v14
  • androidx.appcompat_appcompat

يمكنك تخصيص التكوين باستخدام تراكبات موارد وقت التشغيل (RROs) .

تكوين الإذن

يتم توقيع وحدة CellBroadcast بتوقيع Google بدلاً من توقيع النظام الأساسي ، مما يعني أن الوحدة تفقد الوصول إلى أذونات التوقيع. بدلاً من ذلك ، يحدد Android 11 إذن التوقيع الجديد com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY داخل وحدة CellBroadcast ؛ يمكن فقط للحزم الموجودة في الوحدة النمطية الحصول على الإذن حيث أنها موقعة بالمفتاح نفسه. يسمح هذا الإذن لتطبيق CellBroadcastReceiver بالوصول الكامل إلى قاعدة البيانات داخل CellBroadcastService.

تمنح المنصة إذن وقت تشغيل android.permission.READ_CELL_BROADCASTS لتطبيق SMS الافتراضي للنظام للوصول إلى محفوظات تنبيهات الطوارئ.

دمج وحدة البث الخلوي

يصف هذا القسم كيفية دمج وحدة البث الخلوي.

التكامل مع الإعدادات

يمكنك تحديد مكان دمج إعدادات 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 Messaging ، تم دمج هذا في الإعدادات > خيارات متقدمة > تنبيه الطوارئ . لدمج رابط في تطبيق المراسلة الخاص بك ، حدد المسار في تطبيق المراسلة وقم بتكوين اسم المكون لوحدة 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 # * # * على لوحة الاتصال) ، يجب أن يستمع تطبيق Dialer إلى رمز الاتصال الخاص على شكل * # * # code # * # * والتعامل مع الكود باستخدام الطريقة العامة sendDialerSpecialCode .

متطلبات معلومات المنطقة: القناة 50

القناة 50 هي قناة خاصة لشركات النقل لبث المعلومات المتعلقة بالمنطقة (باستثناء MTN في جنوب إفريقيا). بالنسبة إلى هذه القناة ، لا ينتج عن رسائل البث مربع حوار منبثق أو إشعار. بدلاً من ذلك ، تظهر رسائل البث في حالة بطاقة SIM بقائمة الإعدادات ، أو في شريط الحالة (على سبيل المثال ، عرض رمز بريدي).

يوفر تطبيق Android CellBroadcastService دعمًا لواجهات برمجة التطبيقات التالية في خدمة البث الخلوي للإعدادات وتطبيقات SysUI للحصول على معلومات البث القناة 50. لتنفيذ ذلك ، قم بما يلي:

  • تسجيل البث android.telephony.action.AREA_INFO_UPDATED وتجاوز اسم حزمة جهاز الاستقبال config_area_info_receiver_packages من خلال RRO.

  • ربط بـ CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE .

نظرًا لأن الإعدادات وتطبيقات SysUI خارج نطاق وحدة CellBroadcast ، يجب عليك تنفيذ التغييرات في SystemUI أو تطبيق الإعدادات لتوفير دعم شامل. لتطبيق مرجعي ، ارجع إلى تطبيق إعدادات CellBroadcastService .

التخصيص

لا يمكنك تعديل التعليمات البرمجية المصدر لوحدة CellBroadcast مباشرةً ، ولكن يمكنك استخدام تراكبات موارد وقت التشغيل (RROs) لتمكين (أو تعطيل) المعلمات (على سبيل المثال ، يمكنك تخصيص لون الإشعارات والأبعاد في الحوارات). لتجاوز القيم الافتراضية للمعلمات المستخدمة في وحدة CellBroadcast ، قم بتغيير اسم الحزمة الهدف إلى com.android.cellbroadcastreceiver . بالإضافة الى:

  • للحصول على قائمة التكوينات المتراكبة ، راجع overlayable.xml .

  • للحصول على مثال للتنفيذ ، راجع RROSampleTestApp في AOSP.

إذا كان التنفيذ يفتقد إلى موارد ترجمة سلسلة واجهة المستخدم أو إذا كانت الترجمات لا تفي بتوقعاتك ، فيمكنك تجاوز موارد الترجمة باستخدام RRO أو العمل مع فريق ترجمة Google لترجمة السلسلة الأولية إلى وحدة CellBroadcast. إذا تجاوزت موارد الترجمة ، فيجب على Google كشف هذه السلاسل overlayable.xml للسماح بالتجاوز. إذا كنت بحاجة إلى المزيد من التكوينات لتخصيص واجهة المستخدم ، فتواصل مع مجموعة دعم CellBroadcast .

ترحيل البيانات

يشتمل Android 11 على تطبيق CellBroadcast القديم ، وهو آلية لحفظ بيانات التطبيق وترحيلها (بما في ذلك إعدادات المستخدم وسجلات تنبيه الطوارئ) للأجهزة التي تقوم بالترقية إلى وحدة CellBroadcast. يجب أن تتضمن تطبيقات Android التي تستخدم وحدة CellBroadcast تطبيق CellBroadcast القديم في بنائها لترحيل البيانات. إذا كان تطبيقك يستخدم حل CellBroadcast مخصصًا ، فيجب عليك تحديد APK CellBroadcastContentProvider للحفاظ على البيانات (يمكنك إزالة ملف APK للبث الخلوي القديم بأمان في إصدار لاحق).

على الأجهزة التي تمت ترقيتها لاستخدام وحدة CellBroadcast ، تقوم الوحدة بجلب البيانات من AOSP LegacyCellBroadcastApp أو CellBroadcastContentProvider APK المحدد جيدًا من خلال سلطة cellbroadcast-legacy المحددة جيدًا.

استخدام ملف APK CellBroadcastContentProvider الذي يحدده OEM

عند تحديد ملف APK CellBroadcastContentProvider ، يجب أن يتبع ملف APK هذه المواصفات.

  • APK هو APK بدون رأس لا يظهر إلا محتويات قاعدة البيانات الخاصة به و SharedPreferences من خلال كائن ContentProvider مع سلطة cellbroadcast-legacy ، ولا يمكن الوصول إليه من قبل تطبيقات الجهات الخارجية.

  • تم تطوير APK وامتلاكه بواسطة 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 ، يجب أن تدعم ContentProvider.query APK طريقة ContentProvider.query بالمعلمات التالية:

  • السلطة: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI . قائمة أعمدة الاستعلام تدعم خصائص الرسالة لوحدة CellBroadcast. يأخذ البيانات (من قاعدة البيانات الخاصة بك) لأسلوب ContentProvider.query .

لتطبيق مرجعي لـ CellBroadcastContentProvider, ارجع إلى LegacyCellBroadcastContentProvider .

اختبارات

يتحقق Android Compatibility Test Suite (CTS) من وظائف واجهات برمجة تطبيقات النظام المعتمدة على التطبيق. يمكنك أيضًا تشغيل unit tests/testappsp .

إذا قام المصنّع الأصلي للجهاز بتمكين رمز CMAS السري لجهاز ما ، فيمكن لهذا الجهاز دعم وضع التصحيح بالميزات التالية.

  • يتم تجميع تنبيهات الاختبار ضمن تنبيهات أخرى مع تبديل تشغيل / إيقاف.

  • يتضمن السجل جميع الرسائل التي تم استلامها ولكن لم يتم عرضها ، مثل الرسائل المكررة أو الرسائل بلغة أخرى.

  • تعرض الرسائل جميع المعلمات المتاحة ، بما في ذلك الرقم التسلسلي ومعرف الرسالة وتاريخ انتهاء الصلاحية.

لتمكين وضع التصحيح ، اطلب * # * # CMAS # * # * على لوحة الاتصال.

اتصال

لمزيد من التفاصيل أو الأسئلة حول وحدة CellBroadcast ، اتصل بمجموعة دعم CellBroadcast .