डोमेन चुनने की सेवा

Android 15 या उसके बाद के वर्शन वाले डिवाइसों पर, DomainSelectionService सिस्टम एपीआई का इस्तेमाल करके, सर्किट स्विच किए गए नेटवर्क पर आईएमएस सेवा और लेगसी सेवाओं के बीच डोमेन चुनने की सुविधा लागू की जा सकती है. DomainSelectionService Android प्लैटफ़ॉर्म और वेंडर की ओर से उपलब्ध कराए गए डोमेन चुनने की सुविधा के बीच एक इंटरफ़ेस है. इस इंटरफ़ेस की मदद से, वेंडर, प्लैटफ़ॉर्म को सिग्नल देने वाली जानकारी दे सकता है. जैसे, आउटगोइंग कॉल और एसएमएस के लिए इस्तेमाल किया जाने वाला डोमेन और नेटवर्क स्कैनिंग में नेटवर्क टाइप की प्राथमिकता.

domain-selection-architecture

पहली इमेज. डोमेन चुनने की सुविधा का आर्किटेक्चर डायग्राम

उदाहरण और सोर्स

Android, AOSP में डोमेन चुनने की सुविधा के लिए रेफ़रंस लागू करने की सुविधा देता है. यह सुविधा TelephonyDomainSelectionService पर उपलब्ध है. DomainSelectionService एपीआई के बारे में ज़्यादा जानकारी के लिए, DomainSelectionService और एपीआई में मौजूद अन्य क्लास देखें.

लागू करना

Android डिवाइस पर डोमेन चुनने की सुविधा लागू करने के लिए, यह तरीका अपनाएं:

  1. डोमेन चुनने वाला ऐप्लिकेशन बनाएं. सेवा को AndroidManifest.xml फ़ाइल में तय किया जाना चाहिए.

  2. डिवाइस ओवरले में कॉन्फ़िगरेशन जोड़ें, ताकि प्लैटफ़ॉर्म DomainSelectionService को बाइंड कर सके.

  3. डोमेन चुनने की सुविधा के लिए, ज़रूरी रेडियो एचएएल इंटरफ़ेस के साथ काम करता हो.

इस सेक्शन में, इन चरणों के बारे में ज़्यादा जानकारी दी गई है.

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 अनुमति मिली है सिर्फ़ वही ऐप्लिकेशन से जुड़ सकती है. इससे किसी गलत ऐप्लिकेशन को सेवा से जुड़ने से रोका जा सकता है, क्योंकि सिर्फ़ सिस्टम ऐप्लिकेशन को फ़्रेमवर्क से अनुमति मिल सकती है.

सेवा को android.telephony.DomainSelectionService कार्रवाई के साथ intent-filter एलिमेंट की जानकारी भी देनी होगी. इससे फ़्रेमवर्क को DomainSelectionService सेवा ढूंढने में मदद मिलती है.

डिवाइस ओवरले में कॉन्फ़िगरेशन तय करना

प्लेटफ़ॉर्म को DomainSelectionService सेवा से सुरक्षित तरीके से बाइंड करने के लिए, डिवाइस ओवरले में यह कॉन्फ़िगरेशन जोड़ें:

  • config_domain_selection_service_component_name: DomainSelectionService सेवा के लिए, कॉम्पोनेंट का नाम (ComponentName स्ट्रिंग को फ़्लैट किया गया)

Android, तीसरे पक्ष के डाउनलोड किए जा सकने वाले DomainSelectionService को लागू करने वाले ऐप्लिकेशन के साथ काम नहीं करता है. इसलिए, डोमेन चुनने वाला ऐप्लिकेशन एक सिस्टम ऐप्लिकेशन होना चाहिए, जो /system_ext/priv-app/ या /product/priv-app/ फ़ोल्डर में मौजूद हो. यह फ़्रेमवर्क पुष्टि करता है कि लागू किए गए पैकेज का नाम, डिवाइस ओवरले वैल्यू से मेल खाता है या नहीं. इससे यह पक्का किया जाता है कि सिर्फ़ भरोसेमंद और पहले से इंस्टॉल किए गए ऐप्लिकेशन बाइंड किए गए हैं.

रेडियो एचएएल इंटरफ़ेस के साथ काम करना

डोमेन चुनने की सुविधा चालू करने के लिए, रेडियो एचएएल के इन ज़रूरी इंटरफ़ेस के साथ काम करें:

  • 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);
    

Validation

यह जांच करने के लिए कि टेलीफ़ोनी फ़्रेमवर्क, DomainSelectionService इंटरफ़ेस के अनुरोधों का सही तरीके से जवाब देता है या नहीं, DomainSelectionServiceTestOnMockModem में सीटीएस टेस्ट चलाएं.