خدمة اختيار النطاقات

بالنسبة إلى الأجهزة التي تعمل بالإصدار 15 من نظام التشغيل Android أو الإصدارات الأحدث، يمكنك: تنفيذ خيار النطاق بين خدمة IMS والخدمات القديمة عبر شبكات الدائرة الكهربائية باستخدام واجهة برمجة تطبيقات نظام DomainSelectionService. DomainSelectionService هي واجهة محددة جيدًا بين نظام Android الأساسي والمورّد المقدّم وتطبيق اختيار النطاق. تتيح هذه الواجهة تنفيذ البائع توفير معلومات الإشارة، مثل النطاق الذي يتم إجراء المكالمات الصادرة والرسائل القصيرة وتفضيل نوع الشبكة في البحث عن الشبكات، على النظام الأساسي.

بنية اختيار النطاق

الشكل 1. مخطّط بنية لميزة اختيار النطاق

الأمثلة والمصدر

يوفر Android التنفيذ المرجعي لميزة اختيار النطاقات في بروتوكول AOSP على TelephonyDomainSelectionService. للحصول على تفاصيل حول واجهة برمجة تطبيقات DomainSelectionService، يمكنك الاطّلاع على DomainSelectionService والفئات الأخرى في واجهة برمجة التطبيقات.

التنفيذ

لتطبيق ميزة اختيار النطاق على جهاز Android، يُرجى اتّباع الخطوات التالية: الخطوات المطلوبة:

  1. إنشاء تطبيق لاختيار النطاق يجب تحديد الخدمة في ملف AndroidManifest.xml.

  2. أضف تهيئة إلى تراكب الجهاز للسماح للنظام الأساسي بالربط تنفيذ "DomainSelectionService".

  3. إتاحة واجهات 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 بأمان، أضِف الإعدادات التالية لتراكب الجهاز:

لأنّ نظام التشغيل Android لا يتوافق مع التطبيقات التي يمكن تنزيلها من جهات خارجية DomainSelectionService، يجب أن يكون تطبيق اختيار النطاق تطبيق نظام مُثبَّت في /system_ext/priv-app/ أو /product/priv-app/ المجلد. يتحقّق إطار العمل مما إذا كان اسم حزمة التنفيذ تطابق قيمة تراكب الجهاز لضمان عدم السماح إلا بالتطبيقات الموثوق بها والمثبَّتة مسبقًا مرتبط.

دعم واجهات HAL للراديو

لتفعيل ميزة اختيار النطاق، عليك التوافق مع طبقة تجريد الأجهزة (HAL) اللاسلكية التالية: الواجهات:

  • IRadioNetwork

    void setEmergencyMode(int serial, EmergencyMode emcModeType);
    void triggerEmergencyNetworkScan(int serial,
            EmergencyNetworkScanTrigger request);
    void cancelEmergencyNetworkScan(int serial, boolean resetScan);
    void exitEmergencyMode(int serial);
    
  • IRadioNetworkIndication

    void emergencyNetworkScanResult(RadioIndicationType type,
            EmergencyRegResult result);
    

التحقُّق

لاختبار استجابة إطار الاتصال الهاتفي بشكلٍ صحيح DomainSelectionService، يمكنك إجراء اختبارات CTS في DomainSelectionServiceTestOnMockModem