Android 9 में, IP मल्टीमीडिया सबसिस्टम (आईएमएस) को लागू करने में आपकी मदद करने के लिए, SystemApi इंटरफ़ेस पेश किया गया है. इसे ImsService कहा जाता है. ImsService API, Android प्लैटफ़ॉर्म और वेंडर या कैरियर की ओर से उपलब्ध कराए गए IMS के बीच एक अच्छी तरह से तय किया गया इंटरफ़ेस है.

पहली इमेज. ImsService के बारे में खास जानकारी
ImsService इंटरफ़ेस का इस्तेमाल करके, IMS लागू करने वाला व्यक्ति या कंपनी, प्लैटफ़ॉर्म को सिग्नलिंग से जुड़ी अहम जानकारी दे सकती है. जैसे, IMS रजिस्ट्रेशन की जानकारी, IMS के ज़रिए एसएमएस भेजने की सुविधा का इंटिग्रेशन, और MmTel सुविधा का इंटिग्रेशन, ताकि वॉइस और वीडियो कॉलिंग की सुविधा दी जा सके. ImsService API, Android सिस्टम एपीआई भी है. इसका मतलब है कि इसे सोर्स के बजाय सीधे तौर पर Android SDK के साथ बनाया जा सकता है. डिवाइस पर पहले से इंस्टॉल किए गए IMS ऐप्लिकेशन को भी Play Store से अपडेट किया जा सकता है.
उदाहरण और सोर्स
Android, AOSP पर एक ऐप्लिकेशन उपलब्ध कराता है. यह ऐप्लिकेशन, टेस्टिंग और डेवलपमेंट के मकसद से ImsService API के कुछ हिस्सों को लागू करता है. आपको यह ऐप्लिकेशन /testapps/ImsTestService पर मिलेगा.
ImsService API से जुड़ा दस्तावेज़, ImsService और एपीआई की अन्य क्लास में देखा जा सकता है.
लागू करना
ImsService API एक हाई लेवल एपीआई है. इसकी मदद से, हार्डवेयर की उपलब्धता के आधार पर, IMS को कई तरीकों से लागू किया जा सकता है. उदाहरण के लिए, आईएमएस को लागू करने का तरीका इस बात पर निर्भर करता है कि आईएमएस को पूरी तरह से ऐप्लिकेशन प्रोसेसर पर लागू किया गया है या इसे मॉडेम पर आंशिक या पूरी तरह से ऑफलोड किया गया है. Android, बेसबैंड प्रोसेसर पर ऑफ़लोड करने के लिए सार्वजनिक एचएएल उपलब्ध नहीं कराता. इसलिए, किसी भी तरह की ऑफ़लोडिंग, मोडेम के एचएएल एक्सटेंशन का इस्तेमाल करके होनी चाहिए.
आईएमएस के पुराने वर्शन के साथ काम करने की सुविधा
Android 9 में ImsService API शामिल है. हालांकि, IMS के लिए पुराने तरीके का इस्तेमाल करने वाले डिवाइसों पर यह एपीआई काम नहीं करता.
इन डिवाइसों के लिए, पुराने AIDL इंटरफ़ेस और रैपर क्लास को android.telephony.ims.compat नेमस्पेस में ले जाया गया है. Android 9 पर अपग्रेड करने के बाद, पुराने डिवाइसों को पुराने एपीआई का इस्तेमाल जारी रखने के लिए, यह तरीका अपनाना होगा.
- ImsService लागू करने के लिए, नेमस्पेस को
android.telephony.ims.compatनेमस्पेस एपीआई से एक्सटेंड करने के लिए बदलें. - AndroidManifest.xml में ImsService सेवा की परिभाषा में बदलाव करें, ताकि
android.telephony.ims.ImsServiceकार्रवाई के बजायandroid.telephony.ims.compat.ImsServiceintent-filter कार्रवाई का इस्तेमाल किया जा सके.
इसके बाद, फ़्रेमवर्क, Android 9 में उपलब्ध कंपैटिबिलिटी लेयर का इस्तेमाल करके, ImsService से बाइंड हो जाएगा. इससे, लेगसी ImsService के साथ काम किया जा सकेगा.
फ़्रेमवर्क के साथ ImsService का रजिस्ट्रेशन
ImsService API को एक सेवा के तौर पर लागू किया जाता है. Android फ़्रेमवर्क, इसे IMS लागू करने के साथ कम्यूनिकेट करने के लिए बाइंड करता है. फ़्रेमवर्क के साथ ImsService लागू करने वाले ऐप्लिकेशन को रजिस्टर करने के लिए, तीन चरण पूरे करना ज़रूरी है. सबसे पहले, ImsService को ऐप्लिकेशन के AndroidManifest.xml का इस्तेमाल करके, प्लैटफ़ॉर्म के साथ रजिस्टर करना होगा. दूसरा, उसे यह तय करना होगा कि वह कौनसी आईएमएस सुविधाओं (MmTel या RCS) के साथ काम करता है. तीसरा, उसे यह पुष्टि करनी होगी कि वह भरोसेमंद आईएमएस सेवा है. यह पुष्टि, कैरियर कॉन्फ़िगरेशन या डिवाइस ओवरले में की जा सकती है.
सेवा की परिभाषा
आईएमएस ऐप्लिकेशन, फ़्रेमवर्क के साथ ImsService रजिस्टर करता है. इसके लिए, वह मेनिफ़ेस्ट में service एंट्री जोड़ता है. इसके लिए, वह इस फ़ॉर्मैट का इस्तेमाल करता है:
<service
android:name="com.egcorp.ims.EgImsService"
android:directBootAware="true"
Android:persistent="true"
...
android:permission="android.permission.BIND_IMS_SERVICE" >
...
<intent-filter>
<action android:name="android.telephony.ims.ImsService" />
</intent-filter>
</service>
AndroidManifest.xml में मौजूद service की परिभाषा में, ये एट्रिब्यूट तय किए गए हैं. इनका सही तरीके से काम करना ज़रूरी है:
directBootAware="true": इससे सेवा कोtelephonyके ज़रिए खोजा जा सकता है और उपयोगकर्ता के डिवाइस अनलॉक करने से पहले ही इसे चलाया जा सकता है. जब तक उपयोगकर्ता डिवाइस को अनलॉक नहीं करता, तब तक सेवा डिवाइस के एन्क्रिप्ट (सुरक्षित) किए गए स्टोरेज को ऐक्सेस नहीं कर सकती. ज़्यादा जानकारी के लिए, डायरेक्ट बूट मोड की सुविधा और फ़ाइल-आधारित एन्क्रिप्शन लेख पढ़ें.persistent="true": इससे इस सेवा को लगातार चलाया जा सकता है. साथ ही, सिस्टम को मेमोरी वापस पाने के लिए इसे बंद करने की ज़रूरत नहीं पड़ती. यह एट्रिब्यूट सिर्फ़ तब काम करता है, जब ऐप्लिकेशन को सिस्टम ऐप्लिकेशन के तौर पर बनाया गया हो.permission="android.permission.BIND_IMS_SERVICE": इससे यह पक्का किया जाता है कि जिस प्रोसेस कोBIND_IMS_SERVICEकी अनुमति मिली है सिर्फ़ वही ऐप्लिकेशन से बाइंड हो सकती है. इससे किसी गलत ऐप्लिकेशन को सेवा से बाइंड होने से रोका जा सकता है, क्योंकि फ़्रेमवर्क सिर्फ़ सिस्टम ऐप्लिकेशन को अनुमति दे सकता है.
सेवा को intent-filter एलिमेंट के साथ-साथ कार्रवाई android.telephony.ims.ImsService की जानकारी भी देनी होगी. इससे फ़्रेमवर्क को ImsService ढूंढने में मदद मिलती है.
आईएमएस की सुविधा के बारे में जानकारी
AndroidManifest.xml में ImsService को Android सेवा के तौर पर तय करने के बाद, ImsService को यह तय करना होगा कि वह किन आईएमएस सुविधाओं के साथ काम करता है. फ़िलहाल, Android पर MmTel और RCS, दोनों सुविधाएं काम करती हैं. हालांकि, सिर्फ़ MmTel को फ़्रेमवर्क में इंटिग्रेट किया गया है. हालांकि, फ़्रेमवर्क में कोई भी आरसीएस एपीआई इंटिग्रेट नहीं किया गया है, लेकिन इसे ImsService की सुविधा के तौर पर घोषित करने के अब भी फ़ायदे हैं.
यहां android.telephony.ims.ImsFeature में बताई गई मान्य सुविधाओं के बारे में बताया गया है. ये सुविधाएं, ImsService दे सकती है. साथ ही, यह भी बताया गया है कि कोई IMS ऐप्लिकेशन, इनमें से कोई एक या सभी सुविधाएं क्यों लागू करना चाहेगा. हर सुविधा के बारे में जानकारी देने के बाद, इस पेज पर बताया गया है कि ImsService, हर सिम स्लॉट के लिए तय की गई सुविधाओं के सेट का एलान कैसे करता है.
FEATURE_MMTEL
ImsService में आईएमएस एमएमटीईएल सुविधा लागू की जाती है. इसमें आईएमएस के सभी मीडिया (आईआर.92 और आईआर.94 स्पेसिफ़िकेशन) के लिए सहायता शामिल है. हालांकि, इसमें आपातकालीन कॉल के लिए आईएमएस पीडीएन से आपातकालीन अटैचमेंट शामिल नहीं है. ImsService को लागू करने वाले किसी भी ऐप्लिकेशन को MMTEL सुविधाओं के साथ काम करने के लिए, android.telephony.ims.MmTelFeature बेस क्लास को एक्सटेंड करना चाहिए. साथ ही, ImsService#createMmTelFeature में कस्टम MmTelFeature लागू करने की सुविधा देनी चाहिए.
FEATURE_EMERGENCY_MMTEL
इस सुविधा के बारे में जानकारी देने से, प्लैटफ़ॉर्म को सिर्फ़ यह पता चलता है कि आपातकालीन सेवाओं के लिए, IMS PDN से आपातकालीन अटैचमेंट किया जा सकता है. अगर इस सुविधा के बारे में आपके ImsService के लिए जानकारी नहीं दी गई है, तो प्लैटफ़ॉर्म हमेशा आपातकालीन सेवाओं के लिए सर्किट स्विच फ़ॉलबैक का इस्तेमाल करेगा. इस सुविधा को तय करने के लिए, FEATURE_MMTEL सुविधा तय होनी चाहिए.
FEATURE_RCS
ImsService API, आईएमएस आरसीएस की किसी भी सुविधा को लागू नहीं करता. हालांकि, android.telephony.ims.RcsFeature बेसिक क्लास अब भी काम की हो सकती है. फ़्रेमवर्क, ImsService से अपने-आप जुड़ जाता है. साथ ही, जब उसे पता चलता है कि पैकेज को आरसीएस की सुविधा देनी चाहिए, तब वह ImsService#createRcsFeature को कॉल करता है. अगर आरसीएस सेवा से जुड़ा सिम कार्ड हटा दिया जाता है, तो फ़्रेमवर्क अपने-आप RcsFeature#onFeatureRemoved को कॉल करता है. इसके बाद, आरसीएस सुविधा से जुड़े ImsService को मिटा देता है. इस सुविधा की मदद से, कस्टम डिटेक्शन या बाइंडिंग लॉजिक के कुछ हिस्सों को हटाया जा सकता है. ऐसा न होने पर, आरसीएस की सुविधा को यह काम करना पड़ता.
इस्तेमाल की जा सकने वाली सुविधाओं का रजिस्ट्रेशन
टेलीफ़ोनी फ़्रेमवर्क, सबसे पहले ImsService से जुड़ता है. ऐसा इसलिए, ताकि ImsService#querySupportedImsFeatures एपीआई का इस्तेमाल करके, उन सुविधाओं के बारे में क्वेरी की जा सके जिनके साथ यह काम करता है. फ़्रेमवर्क यह तय करता है कि ImsService किन सुविधाओं के साथ काम करेगी. इसके बाद, यह ImsService के लिए ज़िम्मेदार हर सुविधा के लिए ImsService#create[...]Feature को कॉल करेगा. अगर आईएमएस ऐप्लिकेशन की सुविधाओं में बदलाव होता है, तो ImsService#onUpdateSupportedImsFeatures का इस्तेमाल करके फ़्रेमवर्क को यह सूचना दी जा सकती है कि वह उपलब्ध सुविधाओं का फिर से हिसाब लगाए. ImsService को शुरू करने और बाइंड करने के बारे में ज़्यादा जानकारी के लिए, यह डायग्राम देखें.
दूसरी इमेज. ImsService को शुरू करना और उसे बाइंड करना
ImsService को लागू करने के फ़्रेमवर्क का पता लगाना और उसकी पुष्टि करना
AndroidManifext.xml में ImsService को सही तरीके से तय करने के बाद, प्लैटफ़ॉर्म को कॉन्फ़िगर करना ज़रूरी है, ताकि वह ज़रूरत पड़ने पर ImsService से (सुरक्षित तरीके से) जुड़ सके. फ़्रेमवर्क, दो तरह की ImsServices से बाइंड होता है:
- कैरियर "override" ImsService: ये ImsService, डिवाइस पर पहले से लोड होती हैं. हालांकि, ये एक या उससे ज़्यादा मोबाइल और इंटरनेट सेवा देने वाली कंपनियों से जुड़ी होती हैं. इन्हें सिर्फ़ तब बाइंड किया जाता है, जब डिवाइस में इनसे मैच करने वाला सिम कार्ड डाला जाता है. इसे
config_ims_mmtel_package_override_stringMMTEL की सुविधाएं लागू करने वाली ImsServices के लिए CarrierConfig कुंजी.config_ims_rcs_package_override_stringआरसीएस की सुविधाएं लागू करने वाली ImsServices के लिए.
- डिवाइस "default" ImsService: यह डिफ़ॉल्ट ImsService है. इसे OEM, डिवाइस पर लोड करता है. इसे इस तरह से डिज़ाइन किया जाना चाहिए कि यह हर स्थिति में IMS सेवाएं दे सके. ऐसा तब होता है, जब कैरियर ImsService उपलब्ध न हो. यह उन स्थितियों में भी काम आता है जब डिवाइस में कोई सिम कार्ड नहीं डाला गया हो या डाले गए सिम कार्ड में कैरियर ImsService इंस्टॉल न हो. इसे डिवाइस ओवरले में, इन कॉन्फ़िगरेशन का इस्तेमाल करके तय किया जाता है:
config_ims_mmtel_package: एमएमटीईएल की सुविधाएं लागू करता हैconfig_ims_rcs_package: आरसीएस की सुविधाएं लागू करता है
Android, तीसरे पक्ष के डाउनलोड किए जा सकने वाले ImsService को लागू करने वाले ऐप्लिकेशन के साथ काम नहीं करता. इसलिए, यहां तय किए गए किसी भी ImsService को लागू करने वाले ऐप्लिकेशन को सिस्टम ऐप्लिकेशन होना चाहिए. साथ ही, सही अनुमतियां देने के लिए, उसे /system/priv-app/ या /product/priv-app/ फ़ोल्डर में मौजूद होना चाहिए. जैसे, फ़ोन, माइक्रोफ़ोन, जगह की जानकारी, कैमरा, और संपर्क ऐक्सेस करने की अनुमतियां. यह पुष्टि करके कि IMS लागू करने वाले ऐप्लिकेशन के पैकेज का नाम, CarrierConfig या डिवाइस ओवरले की ऊपर बताई गई वैल्यू से मेल खाता है, सिर्फ़ भरोसेमंद और पहले से इंस्टॉल किए गए ऐप्लिकेशन को बाइंड किया जाता है.
पसंद के मुताबिक बनाएं
ImsService लागू करने वाले ऐप्लिकेशन, सिर्फ़ उन डिवाइसों पर काम करते हैं जहां उन्हें मोबाइल और इंटरनेट सेवा देने वाली कंपनी की "override" ImsService या डिवाइस की "default" ImsService के तौर पर कॉन्फ़िगर किया गया है. ऐसा MMTEL या आरसीएस की सुविधा के लिए किया जाता है.
ImsService, उन आईएमएस सुविधाओं को भी अनुमति देता है जिनके साथ यह काम करता है. जैसे, एमएमटीईएल और आरसीएस. इन सुविधाओं को ImsService#onUpdateSupportedImsFeatures तरीके का इस्तेमाल करके, अपडेट के ज़रिए डाइनैमिक तरीके से चालू या बंद किया जा सकता है. इससे फ़्रेमवर्क ट्रिगर होता है. इसके बाद, यह फिर से हिसाब लगाता है कि कौनसी ImsServices बाइंड हैं और वे कौनसी सुविधाओं के साथ काम करती हैं. अगर IMS ऐप्लिकेशन, फ़्रेमवर्क को अपडेट करता है और कोई भी सुविधा काम नहीं करती है, तो ImsService तब तक अनबाउंड रहेगी, जब तक फ़ोन को रीबूट नहीं किया जाता या IMS ऐप्लिकेशन से मेल खाने वाला नया सिम कार्ड नहीं डाला जाता.
एक से ज़्यादा ImsService के लिए बाइंडिंग की प्राथमिकता
यह फ़्रेमवर्क, डिवाइस पर पहले से लोड की गई सभी ImsServices से बाइंड नहीं हो सकता. यह हर सिम स्लॉट के लिए ज़्यादा से ज़्यादा दो ImsServices से बाइंड होगा. हर सुविधा के लिए एक ImsService. यह सुविधा के हिसाब से, इस क्रम में बाइंड होगा:
- जब सिम कार्ड डाला जाता है, तब CarrierConfig वैल्यू से तय किया गया ImsService पैकेज का नाम
config_ims_[mmtel/rcs]_package_override_string. - ImsService पैकेज का नाम, डिवाइस ओवरले वैल्यू में तय किया गया है. यह
config_ims_[mmtel/rcs]_packageके लिए है. इसमें वह स्थिति भी शामिल है, जब कोई सिम कार्ड नहीं डाला गया है. इस ImsService में, आपातकालीन MmTel की सुविधा काम करनी चाहिए.
आपके पास, उस पैकेज का इस्तेमाल करने वाले हर कैरियर के लिए, CarrierConfig में तय किए गए ImsService का पैकेज नाम होना चाहिए. इसके अलावा, अगर आपकी ImsService डिफ़ॉल्ट होगी, तो आपके पास डिवाइस ओवरले में तय किए गए ImsService का पैकेज नाम होना चाहिए.
आइए, हर सुविधा के बारे में विस्तार से जानते हैं. एक सिम कार्ड वाले डिवाइस (सिंगल या मल्टी-सिम) में, आईएमएस की दो सुविधाएं उपलब्ध होती हैं: एमएमटेल और आरसीएस. फ़्रेमवर्क, ऊपर बताए गए क्रम में हर सुविधा को बाइंड करने की कोशिश करेगा. अगर मोबाइल और इंटरनेट सेवा देने वाली कंपनी के कॉन्फ़िगरेशन ओवरराइड में तय की गई ImsService के लिए सुविधा उपलब्ध नहीं है, तो फ़्रेमवर्क आपकी डिफ़ॉल्ट ImsService पर वापस आ जाएगा. इसलिए, उदाहरण के लिए, यहां दी गई टेबल में बताया गया है कि फ़्रेमवर्क, आईएमएस की कौनसी सुविधा का इस्तेमाल करेगा. इसमें यह जानकारी भी दी गई है कि आईएमएस की तीन सुविधाओं को लागू करने वाले ऐप्लिकेशन, इन सुविधाओं वाले सिस्टम पर इंस्टॉल किए गए हैं:
- मोबाइल और इंटरनेट सेवा देने वाली कंपनी A की ImsService, आरसीएस की सुविधा देती है
- मोबाइल और इंटरनेट सेवा देने वाली कंपनी B की ImsService, आरसीएस और MMTel की सुविधा देती है
- OEM ImsService, आरसीएस और MMTel के साथ काम करता है
| सिम कार्ड डाला गया | आरसीएस की सुविधा | MMTel सुविधा |
|---|---|---|
| मोबाइल और इंटरनेट सेवा देने वाली कंपनी A | मोबाइल और इंटरनेट सेवा देने वाली कंपनी A | OEM |
| कैरियर B | कैरियर B | कैरियर B |
| कोई सिम कार्ड नहीं लगाया गया है | OEM | OEM |
सत्यापन
आईएमएस को लागू करने की पुष्टि करने वाले टूल शामिल नहीं किए गए हैं, क्योंकि आईएमएस की खास बातें बहुत ज़्यादा हैं और पुष्टि करने के लिए खास उपकरणों का इस्तेमाल किया जाता है. इन टेस्ट से सिर्फ़ यह पुष्टि की जा सकती है कि टेलीफ़ोनी फ़्रेमवर्क, ImsService API को सही तरीके से जवाब देता है.
आईएमएस ऐप्लिकेशन डेवलप करना
Android टेलीफ़ोनी स्टैक के साथ इंटरफ़ेस करने वाला IMS ऐप्लिकेशन डेवलप करते समय, हमारा सुझाव है कि यह बताया जाए कि ऐप्लिकेशन, किसी खास कैरियर सदस्यता के लिए अटैच किए गए ImsService इंस्टेंस की स्थिति को सुन सकता है या उसमें बदलाव कर सकता है.
एमएमटीईएल और आरसीएस की सुविधाओं के लिए, ImsService की स्थिति को सुनने या उसमें बदलाव करने के लिए, ImsManager क्लास का इस्तेमाल करें. इससे आपको ImsMmTelManager, ImsRcsManager या आईएमएस से जुड़ी ProvisioningManager क्लास का इंस्टेंस मिलेगा. इसके बाद, ऐप्लिकेशन IMS से जुड़ी सेवा और प्रोविज़निंग की स्थितियों के बारे में सुन सकता है. जैसे:
- चालू की गई और उपलब्ध MMTEL या आरसीएस की सुविधाएं
- IMS रजिस्ट्रेशन की स्थिति में बदलाव होने पर अपडेट होता है
- आईएमएस की सुविधाओं के लिए, प्रोविज़निंग की स्थिति
- उपयोगकर्ता ने आईएमएस की कौन-कौनसी सुविधाएं चालू की हैं
ImsStateCallback का इस्तेमाल करना
ImsService एक ऐसी सेवा है जो हमेशा चालू रहती है. हालांकि, जब कोई नया सिम कार्ड या एम्बेड की गई सदस्यता चालू होती है या जब कैरियर कॉन्फ़िगरेशन बदलता है, तो सेवा बदल सकती है. ImsService, टेलीफ़ोनी प्रोसेस का हिस्सा नहीं है. इसलिए, अगर सदस्यता या कॉन्फ़िगरेशन में बदलाव की वजह से ImsService क्रैश हो जाता है या अनबाउंड हो जाता है, तो IMS API को ऐक्सेस करने की कोशिश करते समय किसी ऐप्लिकेशन को अप्रत्याशित अपवादों का सामना करना पड़ सकता है.
Android 13 या इसके बाद के वर्शन पर काम करने वाले डिवाइसों पर, किसी ऐप्लिकेशन से जुड़ी सदस्यता के लिए ImsService इंस्टेंस उपलब्ध है या नहीं, यह मॉनिटर करने के लिए ऐप्लिकेशन, ImsStateCallback क्लास का इस्तेमाल कर सकता है. ImsMmTelManager या ImsRcsManager का इंस्टेंस पाने के लिए, हमारा सुझाव है कि ऐप्लिकेशन पहले ImsMmTelManager#registerImsStateCallback या ImsRcsManager#registerImsStateCallback का इस्तेमाल करके, आईएमएस की स्थिति के कॉलबैक के लिए रजिस्टर करे.
ImsService के फिर से उपलब्ध होने पर, किसी खास सदस्यता के लिए कॉलबैक अपडेट पाना जारी रखने के लिए, ऐप्लिकेशन को ImsMmTelManager, ImsRcsManager या ProvisioningManager के ज़रिए रजिस्टर किए गए मौजूदा कॉलबैक को रद्द करना होगा या हटाना होगा. साथ ही, नए कॉलबैक रजिस्टर करने होंगे.
अगर कोई ऐसी सदस्यता है जो आईएमएस के साथ काम नहीं करती है, तो फ़्रेमवर्क ImsStateCallback#onUnavailable को कॉल करता है. इसकी वजह REASON_NO_IMS_SERVICE_CONFIGURED होती है.
इसका मतलब है कि सदस्यता के लिए, ImsService और आईएमएस से जुड़े एपीआई उपलब्ध नहीं हैं.
अगर टेलीफ़ोनी प्रोसेस क्रैश हो जाती है, तो ऐप्लिकेशन को ImsStateCallback#onError मिलता है. साथ ही, रजिस्टर किए गए ImsStateCallback इंस्टेंस पर अपडेट मिलना बंद हो जाते हैं.
इस समस्या को ठीक करने के लिए, ImsStateCallback इंस्टेंस को इससे जुड़ी सदस्यता के लिए फिर से रजिस्टर करें. इसके लिए, ImsMmTelManager#registerImsStateCallback या ImsRcsManager#registerImsStateCallback को कॉल करें.