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