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