Android 15 या उसके बाद के वर्शन वाले डिवाइसों पर, DomainSelectionService सिस्टम एपीआई का इस्तेमाल करके, सर्किट स्विच किए गए नेटवर्क पर IMS सेवा और लेगसी सेवाओं के बीच डोमेन चुनने की सुविधा लागू की जा सकती है. DomainSelectionService
Android प्लैटफ़ॉर्म और वेंडर की ओर से उपलब्ध कराए गए डोमेन चुनने की सुविधा के बीच एक इंटरफ़ेस है. इस इंटरफ़ेस की मदद से, वेंडर, प्लैटफ़ॉर्म को सिग्नल देने वाली जानकारी दे सकता है. जैसे, आउटगोइंग कॉल और एसएमएस के लिए इस्तेमाल किया जाने वाला डोमेन और नेटवर्क स्कैनिंग में नेटवर्क टाइप की प्राथमिकता.
पहली इमेज. डोमेन चुनने की सुविधा का आर्किटेक्चर डायग्राम
उदाहरण और सोर्स
Android, Android Open Source Project (AOSP) में डोमेन चुनने की सुविधा के लिए, रेफ़रंस लागू करने की सुविधा देता है. यह सुविधा TelephonyDomainSelectionService पर उपलब्ध है.
DomainSelectionService एपीआई के बारे में ज़्यादा जानकारी के लिए, DomainSelectionService और एपीआई में मौजूद अन्य क्लास देखें.
लागू करना
Android डिवाइस पर डोमेन चुनने की सुविधा लागू करने के लिए, यह तरीका अपनाएं:
डोमेन चुनने वाला ऐप्लिकेशन बनाएं. सेवा को
AndroidManifest.xmlफ़ाइल में तय किया जाना चाहिए.डिवाइस ओवरले में कॉन्फ़िगरेशन जोड़ें, ताकि प्लैटफ़ॉर्म
DomainSelectionServiceको बाइंड कर सके.डोमेन चुनने की सुविधा के लिए, ज़रूरी रेडियो हार्डवेयर ऐब्स्ट्रैक्शन लेयर (एचएएल) इंटरफ़ेस के साथ काम करना चाहिए.
इस सेक्शन में, इन चरणों के बारे में ज़्यादा जानकारी दी गई है.
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/ फ़ोल्डर में मौजूद होना चाहिए. फ़्रेमवर्क यह पुष्टि करता है कि लागू किए गए पैकेज का नाम, डिवाइस ओवरले वैल्यू से मेल खाता है या नहीं. इससे यह पुष्टि की जाती है कि सिर्फ़ भरोसेमंद और पहले से इंस्टॉल किए गए ऐप्लिकेशन बाइंड किए गए हैं.
रेडियो एचएएल इंटरफ़ेस के साथ काम करना
डोमेन चुनने की सुविधा चालू करने के लिए, रेडियो एचएएल के इन ज़रूरी इंटरफ़ेस के साथ काम करें:
-
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);
Validation
यह जांच करने के लिए कि टेलीफ़ोनी फ़्रेमवर्क, DomainSelectionService इंटरफ़ेस के लिए सही तरीके से काम कर रहा है, DomainSelectionServiceTestOnMockModem में Compatibility Test Suite (CTS) टेस्ट चलाएं.