بالنسبة إلى الأجهزة التي تعمل بالإصدار 15 من نظام التشغيل Android أو الإصدارات الأحدث، يمكنك:
تنفيذ خيار النطاق
بين خدمة IMS والخدمات القديمة عبر شبكات الدائرة الكهربائية باستخدام
واجهة برمجة تطبيقات نظام DomainSelectionService
. DomainSelectionService
هي واجهة محددة جيدًا بين نظام Android الأساسي والمورّد المقدّم
وتطبيق اختيار النطاق. تتيح هذه الواجهة تنفيذ البائع
توفير معلومات الإشارة، مثل النطاق الذي يتم إجراء المكالمات الصادرة والرسائل القصيرة
وتفضيل نوع الشبكة في البحث عن الشبكات، على النظام الأساسي.
الشكل 1. مخطّط بنية لميزة اختيار النطاق
الأمثلة والمصدر
يوفر Android التنفيذ المرجعي لميزة اختيار النطاقات في
بروتوكول AOSP على TelephonyDomainSelectionService
. للحصول على تفاصيل
حول واجهة برمجة تطبيقات 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