Android 9 में, ImsService नाम का एक SystemApi इंटरफ़ेस पेश किया गया है. इससे आपको आईपी मल्टीमीडिया सबसिस्टम (आईएमएस) को लागू करने में मदद मिलती है. 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.ImsService
intent-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>
service
की परिभाषा में, यहां दिए गए एट्रिब्यूट शामिल हैं. ये एट्रिब्यूट, सही तरीके से काम करने के लिए ज़रूरी हैं:AndroidManifest.xml
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#create[...]Feature
को कॉल करेगा जिनके लिए ImsService ज़िम्मेदार होगी. अगर आईएमएस ऐप्लिकेशन की सुविधाओं में बदलाव होता है, तो ImsService#onUpdateSupportedImsFeatures
का इस्तेमाल करके फ़्रेमवर्क को यह सूचना दी जा सकती है कि वह उपलब्ध सुविधाओं का फिर से हिसाब लगाए. ImsService को शुरू करने और बाइंड करने के बारे में ज़्यादा जानकारी के लिए, यह डायग्राम देखें.
दूसरी इमेज. ImsService को शुरू करना और उसे बाइंड करना
ImsService लागू करने की सुविधा का पता लगाना और उसकी पुष्टि करना
AndroidManifext.xml में ImsService को सही तरीके से तय करने के बाद, प्लैटफ़ॉर्म को कॉन्फ़िगर करना होगा, ताकि वह ज़रूरत के मुताबिक ImsService से (सुरक्षित तरीके से) जुड़ सके. फ़्रेमवर्क, दो तरह की ImsServices से बाइंड होता है:
- कैरियर "override" ImsService: ये ImsService, डिवाइस में पहले से लोड होती हैं. हालांकि, ये एक या उससे ज़्यादा मोबाइल और इंटरनेट सेवा देने वाली कंपनियों से जुड़ी होती हैं. इन्हें सिर्फ़ तब बाइंड किया जाता है, जब डिवाइस में इनसे मैच करने वाला सिम कार्ड डाला जाता है. इसे
config_ims_mmtel_package_override_string
MMTEL की सुविधाएं लागू करने वाली 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, IMS की उन सुविधाओं (एमएमटीईएल और आरसीएस) को भी चालू या बंद करने की अनुमति देता है जिन्हें यह सपोर्ट करता है. इसके लिए, 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 का पैकेज नाम होना चाहिए.
आइए, हर सुविधा के बारे में विस्तार से जानते हैं. एक सिम कार्ड वाले डिवाइस (सिंगल या मल्टी-सिम) में, दो आईएमएस सुविधाएं उपलब्ध होती हैं: एमएमटेल और आरसीएस. फ़्रेमवर्क, हर सुविधा के लिए ऊपर बताए गए क्रम में बाइंड करने की कोशिश करेगा. अगर सुविधा, CarrierConfiguration ओवरराइड में तय की गई ImsService के लिए उपलब्ध नहीं है, तो फ़्रेमवर्क आपकी डिफ़ॉल्ट ImsService पर फ़ॉलबैक करेगा. इसलिए, उदाहरण के लिए, नीचे दी गई टेबल में बताया गया है कि फ़्रेमवर्क, आईएमएस की किस सुविधा का इस्तेमाल करेगा. इसमें तीन आईएमएस ऐप्लिकेशन, ImsServices को लागू करते हैं. ये ऐप्लिकेशन, सिस्टम पर इंस्टॉल किए गए हैं. सिस्टम में ये सुविधाएं हैं:
- मोबाइल और इंटरनेट सेवा देने वाली कंपनी A की ImsService, आरसीएस की सुविधा देती है
- मोबाइल और इंटरनेट सेवा देने वाली कंपनी B की ImsService, आरसीएस और MMTel की सुविधा देती है
- OEM ImsService, आरसीएस और MMTel के साथ काम करता है
सिम कार्ड डाला गया | आरसीएस की सुविधा | MMTel Feature |
---|---|---|
मोबाइल और इंटरनेट सेवा देने वाली कंपनी A | मोबाइल और इंटरनेट सेवा देने वाली कंपनी A | ओईएम |
मोबाइल और इंटरनेट सेवा देने वाली कंपनी B | मोबाइल और इंटरनेट सेवा देने वाली कंपनी B | मोबाइल और इंटरनेट सेवा देने वाली कंपनी B |
कोई सिम कार्ड नहीं लगाया गया है | ओईएम | ओईएम |
Validation
आईएमएस को लागू करने की पुष्टि करने वाले टूल शामिल नहीं किए गए हैं, क्योंकि आईएमएस की खास बातें बहुत ज़्यादा हैं और इसके लिए, पुष्टि करने वाले खास उपकरण इस्तेमाल किए जाते हैं. इन टेस्ट से सिर्फ़ यह पुष्टि की जा सकती है कि टेलीफ़ोनी फ़्रेमवर्क, ImsService API को सही तरीके से जवाब देता है.
IMS ऐप्लिकेशन डेवलप करना
Android टेलीफ़ोनी स्टैक के साथ इंटरफ़ेस करने वाला IMS ऐप्लिकेशन डेवलप करते समय, हमारा सुझाव है कि यह बताया जाए कि ऐप्लिकेशन, किसी खास कैरियर की सदस्यता के लिए अटैच किए गए ImsService इंस्टेंस की स्थिति को सुन सकता है या उसमें बदलाव कर सकता है.
एमएमटीईएल और आरसीएस सुविधाओं के लिए, ImsService की स्थिति को सुनने या उसमें बदलाव करने के लिए, ImsManager
क्लास का इस्तेमाल करें. इससे आपको ImsMmTelManager
, ImsRcsManager
या आईएमएस से जुड़ी ProvisioningManager
क्लास का इंस्टेंस मिलेगा. इसके बाद, ऐप्लिकेशन IMS से जुड़ी सेवा और प्रोविज़निंग की स्थितियों के बारे में सुन सकता है. जैसे:
- चालू की गई और उपलब्ध MMTEL या आरसीएस की सुविधाएं
- IMS रजिस्ट्रेशन की स्थिति में बदलाव होने पर अपडेट होता है
- IMS की सुविधाओं के लिए सेटअप की स्थिति
- उपयोगकर्ता ने 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
इंस्टेंस पर अपडेट मिलना बंद हो जाता है.
इस समस्या को ठीक करने के लिए, ImsMmTelManager#registerImsStateCallback
या ImsRcsManager#registerImsStateCallback
को कॉल करके, ImsStateCallback
इंस्टेंस को इससे जुड़ी सदस्यता के लिए फिर से रजिस्टर करें.