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