البث الخلوي

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

تنسيق الحزمة

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

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

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

تدفق رسائل البث الخلوي

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

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

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

  1. تقوم طبقة واجهة الراديو (RIL) بإعلام InBoundSMSHandler بشأن رسالة SMS الخاصة بـ CDMA/GSM CellBroadcast.

  2. يقوم الإطار بإعادة توجيه رسالة CellBroadcast SMS إلى وحدة 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

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

على الأجهزة التي تمت ترقيتها لاستخدام وحدة CellBroadcast، تقوم الوحدة بجلب البيانات إما من AOSP LegacyCellBroadcastApp أو CellBroadcastContentProvider APK المحدد من قبل OEM من خلال سلطة 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
  • الوسيط: @SystemAPI CellBroadcast.Preference

    هذه قائمة بمفاتيح التفضيلات المشتركة المدعومة لوحدة CellBroadcast. تأتي البيانات من SharedPreferences للأسلوب ContentProvider.call .

لترحيل سجل الرسائل إلى وحدة CellBroadcast، يجب أن يدعم APK CellBroadcastContentProvider أسلوب ContentProvider.query مع المعلمات التالية:

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

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

اختبارات

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

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

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

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

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

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

اتصال

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