بالنسبة إلى الأجهزة التي تعمل بنظام التشغيل Android 15 أو الإصدارات الأحدث، يمكنك
تنفيذ اختيار النطاق
بين خدمة IMS والخدمات القديمة على الشبكات المستندة إلى التبديل الدائري باستخدام
واجهة برمجة تطبيقات نظام DomainSelectionService
. DomainSelectionService
هي واجهة محدّدة بوضوح بين نظام Android الأساسي وتنفيذ
اختيار النطاق الذي يقدّمه المورّد. تتيح هذه الواجهة لموفّر الخدمة تنفيذ
تقديم معلومات الإرسال إلى المنصة، مثل النطاق الذي يتم فيه وضع المكالمات الصادرة والرسائل القصيرة
وإعدادات الشبكة المفضّلة في فحص الشبكة.
الشكل 1: مخطّط بنية لميزة اختيار النطاق
الأمثلة والمصدر
يوفّر Android طريقة تنفيذ مرجعية لميزة اختيار النطاق في "بروتوكول أمان طبقة النقل" (AOSP) على TelephonyDomainSelectionService
. للحصول على مستندات detailed
لواجهة برمجة تطبيقات DomainSelectionService
، يُرجى الاطّلاع على
DomainSelectionService
والفئات الأخرى في واجهة برمجة التطبيقات.
التنفيذ
لتنفيذ ميزة اختيار النطاق على جهاز Android، يجب اتّباع الخطوات التالية:
أنشئ تطبيقًا لاختيار النطاق. يجب تحديد الخدمة في ملف
AndroidManifest.xml
.أضِف إعدادًا إلى تراكب الجهاز للسماح لمنصّة التشغيل بالربط بتنفيذ
DomainSelectionService
.أن تتيح واجهات HAL المطلوبة للراديو لميزة اختيار النطاق
يوفّر هذا القسم مزيدًا من التفاصيل حول هذه الخطوات.
إضافة إدخال الخدمة في AndroidManifest.xml
لكي يسجِّل تطبيق اختيار النطاق خدمة DomainSelectionService
مع إطار العمل، أضِف إدخال خدمة في ملف البيان باستخدام التنسيق التالي:
<service
android:name="com.example.domainselection.DomainSelectionService"
android:directBootAware="true"
android:persistent="true"
…
android:permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE"
…
<intent-filter>
<action android:name="android.telephony.DomainSelectionService"/>
</intent-filter>
…
</service>
يجب أن يحدّد تعريف الخدمة في AndroidManifest.xml
السمات
التالية لتشغيل ميزة اختيار النطاق.
directBootAware="true"
: يتيح اكتشاف الخدمة وتشغيلها من خلال الهاتف قبل أن يفتح المستخدم قفل الجهاز. لا يمكن للخدمة الوصول إلى مساحة التخزين المشفَّرة على الجهاز قبل أن يفتح المستخدم قفل الجهاز. لمزيد من المعلومات، يُرجى الاطّلاع على إتاحة وضع "التشغيل المباشر" والتشفير المستند إلى الملفات.
persistent="true"
: يتيح تشغيل الخدمة باستمرار وعدم إيقافها من قِبل النظام لاسترداد الذاكرة. هذه السمة لا تعمل إلا إذا تم إنشاء التطبيق باعتباره تطبيق نظام.permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE"
: يضمن هذا الإجراء ألّا تربط بالتطبيق سوى تلك التي لديها إذنBIND_DOMAIN_SELECTION_SERVICE
الممنوح لها. ويؤدي ذلك إلى منع أي تطبيق مخادع من الربط بالخدمة، لأنّ إطار العمل لا يمنح هذا الإذن سوى تطبيقات النظام.
ويجب أن تحدّد الخدمة أيضًا العنصر intent-filter
من خلال الإجراء android.telephony.DomainSelectionService
. يتيح ذلك للإطار العثور على
خدمة DomainSelectionService
.
تحديد الإعدادات في التراكب على الجهاز
لكي يتم ربط النظام الأساسي بأمان بخدمة DomainSelectionService
، أضِف
الإعدادات التالية إلى تراكب الجهاز:
-
config_domain_selection_service_component_name
: اسم المكوّن (سلسلةComponentName
مسطّحة) لخدمةDomainSelectionService
بما أنّ نظام التشغيل Android لا يتوافق مع التطبيقات التي تتضمّن تطبيقات DomainSelectionService
تابعة لجهات خارجية يمكن تنزيلها، يجب أن يكون تطبيق اختيار النطاق هو
تطبيق نظام متوفّر في مجلد /system_ext/priv-app/
أو /product/priv-app/
. يتحقّق إطار العمل ممّا إذا كان اسم حزمة التنفيذ
يتطابق مع قيمة تراكب الجهاز لضمان ربط التطبيقات الموثوق بها المثبَّتة مسبقًا فقط.
إتاحة واجهات HAL للراديو
لتفعيل ميزة اختيار النطاق، يجب توفير واجهات HAL الراديو المطلوبة التالية:
-
void setEmergencyMode(int serial, EmergencyMode emcModeType); void triggerEmergencyNetworkScan(int serial, EmergencyNetworkScanTrigger request); void cancelEmergencyNetworkScan(int serial, boolean resetScan); void exitEmergencyMode(int serial);
-
void emergencyNetworkScanResult(RadioIndicationType type, EmergencyRegResult result);
التحقُّق
لاختبار استجابة إطار عمل الهاتف بشكل صحيح لواجهة
DomainSelectionService
، يمكنك إجراء اختبارات CTS في
DomainSelectionServiceTestOnMockModem
.