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

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

domain-selection-architecture

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

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

Android, TelephonyDomainSelectionService पर AOSP में डोमेन चुनने की सुविधा के लिए, रेफ़रंस लागू करने का तरीका उपलब्ध कराता है. 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);
    

पुष्टि करें

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