Android 9 में पेश है एक नया SystemApi इंटरफ़ेस ImsService ताकि आपको आईपी मल्टीमीडिया सबसिस्टम (IMS) को लागू करने में मदद मिल सके. ImsService API, Android प्लैटफ़ॉर्म और वेंडर के बीच का कोई आसान इंटरफ़ेस या कैरियर की ओर से दिया गया आईएमएस लागू करना.
पहला डायग्राम. ImsService की खास जानकारी
ImsService इंटरफ़ेस का इस्तेमाल करके, IMS लागू करने वाला प्लैटफ़ॉर्म को सिग्नल देने से जुड़ी जानकारी, जैसे कि आईएमएस रजिस्ट्रेशन की जानकारी, एसएमएस आईएमएस इंटिग्रेशन के साथ ही, वॉइस और वीडियो उपलब्ध कराने के लिए MmTel सुविधा के इंटिग्रेशन भी हुआ है कॉल किया जा रहा है. ImsService API, एक Android System API है. इसका मतलब है कि यह ऐप्लिकेशन बनाने के बजाय, सीधे Android SDK से बनाया गया हो. एक आईएमएस डिवाइस पर पहले से इंस्टॉल किए गए ऐप्लिकेशन को Play Store को अपडेट किया जा सके.
उदाहरण और सोर्स
Android, एओएसपी पर ऐसा ऐप्लिकेशन उपलब्ध कराता है जो एओएसपी के कुछ हिस्सों को जांच और डेवलपमेंट के लिए, ImsService API का इस्तेमाल किया जा सकता है. आप पर ऐप्लिकेशन /testapps/ImsTestService.
ImsService API के लिए दस्तावेज़ यहां देखे जा सकते हैं: ImsService और एपीआई की अन्य क्लास में भी उपलब्ध हो सकते हैं.
लागू करना
ImsService API एक हाई लेवल एपीआई है, जो आपको कई तरीकों से IMS लागू करने देता है, 3D मॉडल के लिए उपलब्ध हार्डवेयर के हिसाब से तय होता है. उदाहरण के लिए, लागू करने की प्रक्रिया में बदलाव यह इस बात पर निर्भर करता है कि आईएमएस लागू करने की प्रक्रिया पूरी तरह से ऐप्लिकेशन पर है या नहीं प्रोसेसर हो सकता है या वह मॉडम पर पूरी तरह या कुछ हद तक ऑफ़लोड हो गया है. Android यह काम करता है बेसबैंड प्रोसेसर को ऑफ़लोड करने के लिए कोई सार्वजनिक एचएएल उपलब्ध न कराएं मॉडम के HAL एक्सटेंशन का इस्तेमाल करके ऑफ़लोडिंग होनी चाहिए.
पुराने आईएमएस के साथ काम करता है
Android 9 में ImsService API शामिल है, लेकिन
डिवाइस, जो आईएमएस के पुराने वर्शन का इस्तेमाल कर रहे हैं, वे एपीआई के साथ काम नहीं करते.
इन डिवाइसों के लिए, पुराने एआईडीएल इंटरफ़ेस और रैपर क्लास की जगह बदली गई है
को android.telephony.ims.compat
नेमस्पेस पर ले जाया जाएगा. Android में अपग्रेड करते समय
9, पुराने डिवाइसों को जारी रखने के लिए ये काम करने होंगे
पुराने एपीआई के साथ काम करता है.
-
android.telephony.ims.compat
नेमस्पेस एपीआई. - AndroidManifest.xml में ImsService सेवा की परिभाषा में बदलाव करके,
इसके बजाय, इंटेंट फ़िल्टर की
android.telephony.ims.compat.ImsService
कार्रवाईandroid.telephony.ims.ImsService
कार्रवाई.
इसके बाद, फ़्रेमवर्क कंपैटबिलिटी लेयर का इस्तेमाल करके ImsService से बाइंड होगा
लेगसी वर्शन के साथ काम करने के लिए, Android 9 में उपलब्ध कराया गया
ImsService
लागू करना.
फ़्रेमवर्क के साथ ImsService रजिस्ट्रेशन
ImsService API को एक सेवा के तौर पर लागू किया जाता है, जिसे Android
आईएमएस लागू करने से जुड़ी जानकारी देने के लिए बाइंड करता है. तीन चरण में
ऐसे ऐप्लिकेशन को रजिस्टर करना ज़रूरी है जो ImsService को
फ़्रेमवर्क शामिल है. सबसे पहले, ImsService लागू करने की प्रक्रिया को खुद को
ऐप्लिकेशन के AndroidManifest.xml
का इस्तेमाल करने वाला प्लैटफ़ॉर्म; दूसरा, यह ज़रूरी है कि
यह तय करना होगा कि लागू करने पर आईएमएस की कौनसी सुविधाएं काम करती हैं (MmTel या आरसीएस); तीसरा,
इसकी पुष्टि, मोबाइल और इंटरनेट सेवा देने वाली कंपनी में, भरोसेमंद आईएमएस लागू करने के तौर पर की जानी चाहिए
कॉन्फ़िगरेशन या डिवाइस ओवरले है.
सेवा की परिभाषा
IMS ऐप्लिकेशन,
मेनिफ़ेस्ट में 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
.
आईएमएस की सुविधा के बारे में खास बातें
इसमें ImsService को Android सेवा के तौर पर परिभाषित करने के बाद AndroidManifest.xml में, ImsService के साथ काम करने वाली IMS सुविधाओं को तय किया जाना चाहिए. फ़िलहाल, Android पर MmTel और आरसीएस की सुविधाएं काम करती हैं. हालांकि, सिर्फ़ MmTel ही जिसे फ़्रेमवर्क में इंटिग्रेट किया गया है. हालांकि, इसमें कोई आरसीएस एपीआई इंटिग्रेट नहीं किया गया है नहीं है, तब भी इस फ़्रेमवर्क की सुविधा के रूप में इसे घोषित करने के ImsService.
android.telephony.ims.ImsFeature
में बताई गई मान्य सुविधाओं के बारे में नीचे बताया गया है
ImsService, आईएमएस के बारे में जानकारी दे सकता है. साथ ही, उदाहरण भी दे सकता है कि
ऐप्लिकेशन इनमें से किसी एक या सभी सुविधाओं को लागू करना चाहेगा. हर एक के बाद
सुविधा के बारे में बताती है, तो यह पेज बताता है कि ImsService
की सुविधा देता है.
सुविधा
ImsService
, IMS MMTEL की सुविधा लागू करता है. इसमें यह सुविधा मिलती है
सभी आईएमएस मीडिया (IR.92 और IR.94 विवरण)
आपातकालीन कॉल करने के लिए आईएमएस पीडीएन. ImsService
को लागू करने की सुविधा
के लिए MMTEL सुविधाओं का इस्तेमाल करने से
android.telephony.ims.MmTelFeature
बेस क्लास और पसंद के मुताबिक सामान लौटाने की सुविधा
MmTelFeature
लागू किया गया
ImsService#createMmTelFeature
.
FEATURE_EAGENCY_MMTEL
इस सुविधा का एलान करने से, सिर्फ़ उस प्लैटफ़ॉर्म को सिग्नल मिलता है जो आपातकालीन स्थिति में
आपातकालीन सेवाओं के लिए आईएमएस पीडीएन का इस्तेमाल किया जा सकता है. अगर इस सुविधा का एलान न किया गया हो
आपका ImsService
, प्लैटफ़ॉर्म हमेशा सर्किट स्विच फ़ॉलबैक पर डिफ़ॉल्ट होगा
आपातकालीन सेवाओं के लिए. इसके लिए FEATURE_MMTEL
सुविधा तय करना ज़रूरी है
सुविधा है.
फ़ीचर_आरसीएस
ImsService API, आईएमएस आरसीएस की कोई सुविधा लागू नहीं करता, लेकिन
android.telephony.ims.RcsFeature
बेस क्लास अब भी काम की हो सकती है. फ़्रेमवर्क
अपने-आप ImsService से बाइंड कर देता है और ImsService#createRcsFeature
को कॉल करता है
जब यह पता चलता है कि पैकेज को आरसीएस की सुविधा देनी चाहिए. अगर सिम कार्ड से
अगर आरसीएस सेवा हटा दी गई है, तो फ़्रेमवर्क अपने-आप
RcsFeature#onFeatureRemoved
और फिर संबंधित ImsService
को हटा देता है
से संपर्क करें. इस सुविधा से, आपके कारोबार के हिसाब से
बाइंडिंग लॉजिक नहीं हैं जो आरसीएस की सुविधा के ज़रिए उपलब्ध कराना पड़ता.
इस्तेमाल की जा सकने वाली सुविधाओं का रजिस्ट्रेशन
टेलीफ़ोनी फ़्रेमवर्क, उन सुविधाओं को क्वेरी करने के लिए सबसे पहले ImsService से बाइंड करता है जिनमें
यह ImsService#querySupportedImsFeatures
API का इस्तेमाल करके काम करता है. इसके बाद
फ़्रेमवर्क यह तय करता है कि ImsService किन सुविधाओं के साथ काम करेगा. साथ ही, यह
हर उस सुविधा के लिए ImsService#create[...]Feature
जो ImsService होगी
ज़िम्मेदार है. अगर IMS ऐप्लिकेशन में काम करने वाली सुविधाओं में बदलाव किए जा सकते हैं, तो आपको
फ़्रेमवर्क को सिग्नल देने के लिए, ImsService#onUpdateSupportedImsFeatures
का इस्तेमाल कर सकता है
काम करने वाली सुविधाओं की फिर से गणना करें. ज़्यादा जानकारी के लिए, यहां दिया गया डायग्राम देखें
ImsService को शुरू करने और लिंक करने पर असर डाल सकता है.
इमेज 2: ImsService शुरू करना और बाइंडिंग
ImsService लागू करने के लिए फ़्रेमवर्क की पहचान करना और उसकी पुष्टि करना
AndroidManifest.xml में ImsService को सही ढंग से परिभाषित करने के बाद, प्लैटफ़ॉर्म को ImsService से बाइंड (सुरक्षित) करने के लिए कॉन्फ़िगर किया जाना चाहिए, जब उचित. यह फ़्रेमवर्क दो तरह के ImsServices से जुड़ा होता है:
- कैरियर "ओवरराइड करें" ImsService: इन ImsServices को
लेकिन एक या ज़्यादा सेल्युलर कैरियर से अटैच हैं और
मेल खाने वाला सिम कार्ड डाले जाने पर सीमित करें. इसे
config_ims_mmtel_package_override_string
MMTEL सुविधाएं लागू करने वाले ImsServices के लिए CarrierConfig कुंजी.config_ims_rcs_package_override_string
आरसीएस की सुविधाएं लागू करने के लिए, ImsServices.
- डिवाइस "डिफ़ॉल्ट" ImsService: यह लोड किया गया डिफ़ॉल्ट ImsService है
डिवाइस पर, OEM की ओर से
उन सभी स्थितियों में, जब मोबाइल और इंटरनेट सेवा देने वाली कंपनी ImsService उपलब्ध न हो और इन मामलों में काम की हो
ऐसी स्थितियां जिनमें डिवाइस में कोई सिम कार्ड या सिम कार्ड नहीं डाला गया हो
Insert के बाद, इसके साथ कोई कैरियर ImsService इंस्टॉल नहीं है. यह है
इन कॉन्फ़िगरेशन का इस्तेमाल करके डिवाइस ओवरले में तय किया गया है:
config_ims_mmtel_package
: MMTEL की सुविधाएं लागू करती हैंconfig_ims_rcs_package
: आरसीएस की सुविधाएं लागू की गई हैं
Android पर ऐसे ऐप्लिकेशन काम नहीं करते जिनमें ImsService को तीसरे पक्ष की मदद से डाउनलोड किया जा सकता है लागू करना होता है, इसलिए यहां तय किए गए कोई भी ImsService लागू करने की तरीके बताए गए हैं सिस्टम ऐप्लिकेशन होना ज़रूरी है और यह /system/priv-app/ में मौजूद होना चाहिए या /product/priv-app/ फ़ोल्डर को सबमिट कर सकता है, ताकि उचित अनुमतियां दी जा सकें (जैसे, फ़ोन, माइक्रोफ़ोन, जगह की जानकारी, कैमरा, और संपर्कों को ऐक्सेस करने की अनुमतियां). यह पुष्टि करके कि क्या लागू किए गए आईएमएस का पैकेज नाम, CarrierConfig या डिवाइस से मेल खाता है ओवरले वैल्यू ऊपर बताई गई हैं. हालांकि, सिर्फ़ भरोसेमंद और पहले से इंस्टॉल किए गए ऐप्लिकेशन ही सीमित.
पसंद के मुताबिक बनाएं
ImsService को लागू करने वाले ऐप्लिकेशन सिर्फ़ उन डिवाइसों पर लागू होते हैं जहां वे
कैरियर के रूप में कॉन्फ़िगर किए गए हों "ओवरराइड करें" ImsService या डिवाइस "डिफ़ॉल्ट"
MMTEL या आरसीएस सुविधाओं के लिए ImsService कॉन्फ़िगरेशन.
ImsService उन IMS सुविधाओं को भी अनुमति देता है जो उसके साथ काम करती हैं (MMTEL और आरसीएस)
डिफ़ॉल्ट रूप से चालू या बंद करने के लिए,
ImsService#onUpdateSupportedImsFeatures
तरीका. यह फ़्रेमवर्क को ट्रिगर करता है,
फिर से हिसाब लगाएं कि कौनसी ImsServices बाध्यता है और वे कौनसी सुविधाएं इस्तेमाल करती हैं. अगर
IMS ऐप्लिकेशन, ImsService जैसे फ़्रेमवर्क को अपडेट करता है और उनमें कोई सुविधा नहीं है
तब तक अनबाउंड होगा, जब तक फ़ोन को फिर से चालू नहीं किया जाता या नया सिम कार्ड नहीं डाला जाता
आईएमएस ऐप्लिकेशन से मेल खाता हो.
एक से ज़्यादा ImsService के लिए बाइंडिंग प्राथमिकता
फ़्रेमवर्क उन सभी संभावित ImsServices के लिए बाइंडिंग का इस्तेमाल नहीं कर सकता जिन्हें डिवाइस पर पहले से लोड किया जाता है और हर सिम स्लॉट के लिए ज़्यादा से ज़्यादा दो ImsServices से जुड़ा होता है (हर सुविधा के लिए एक ImsService) हर सुविधा के हिसाब से इस क्रम में:
- CarrierConfig वैल्यू की मदद से तय किया गया ImsService पैकेज का नाम
सिम कार्ड होने पर
config_ims_[mmtel/rcs]_package_override_string
सम्मिलित किया गया. - इसके लिए डिवाइस ओवरले मान में तय किया गया ImsService पैकेज नाम
config_ims_[mmtel/rcs]_package
इसमें वह केस भी शामिल है जिसमें सिम नहीं है कार्ड डाला गया. इस ImsService को आपातकालीन MmTel की सुविधा के साथ काम करना चाहिए.
आपके पास या तो अपने ImsService का पैकेज नाम होना चाहिए जो हर उस कैरियर के लिए CarrierConfig जो उस पैकेज या डिवाइस ओवरले, अगर आपका ImsService डिफ़ॉल्ट होगा, जैसा कि ऊपर बताया गया है.
चलिए, इसे हर सुविधा के हिसाब से देखते हैं. किसी डिवाइस (एक या कई सिम वाले) के लिए एक सिम कार्ड लोड होने पर, दो आईएमएस सुविधाएं हो सकती हैं: MMTel और आरसीएस. फ़्रेमवर्क हर सुविधा और अगर सुविधा, मोबाइल और इंटरनेट सेवा देने वाली कंपनी में तय की गई ImsService के लिए उपलब्ध नहीं है कॉन्फ़िगरेशन ओवरराइड, फ़्रेमवर्क आपके डिफ़ॉल्ट ImsService पर फ़ॉलबैक होगा. उदाहरण के लिए, नीचे दी गई टेबल में बताया गया है कि फ़्रेमवर्क किस आईएमएस की सुविधा के साथ काम करेगा सिस्टम पर इंस्टॉल किए गए ImsServices को लागू करने के लिए, दिए गए तीन IMS ऐप्लिकेशन का इस्तेमाल करें ये सुविधाएं मिलती हैं:
- Carrier A ImsService, आरसीएस के साथ काम करता है
- Carrier B ImsService, आरसीएस और MMTel के साथ काम करता है
- OEM ImsService, आरसीएस और MMTel के साथ काम करता है
सिम कार्ड डाला गया | आरसीएस की सुविधा | MMTel की सुविधा |
---|---|---|
कैरियर A | कैरियर A | OEM |
कैरियर B | कैरियर B | कैरियर B |
कोई सिम कार्ड नहीं लगाया गया है | OEM | OEM |
पुष्टि करें
आईएमएस के बाद से, आईएमएस लागू होने की पुष्टि करने वाले टूल शामिल नहीं किए गए हैं स्पेसिफ़िकेशन बहुत बड़े होते हैं और इनमें पुष्टि करने के लिए खास उपकरणों का इस्तेमाल किया जाता है. कॉन्टेंट बनाने टेस्ट सिर्फ़ यह पुष्टि कर सकते हैं कि टेलीफ़ोनी फ़्रेमवर्क ImsService API.
IMS ऐप्लिकेशन डेवलप करें
Android टेलीफ़ोनी स्टैक के साथ इंटरफ़ेस करने वाला IMS ऐप्लिकेशन बनाते समय, हम यह बताने की सलाह देते हैं कि ऐप्लिकेशन, सूचना सुनने या उसमें बदलाव करने की ImsService इंस्टेंस, जो मोबाइल और इंटरनेट सेवा देने वाली किसी खास कंपनी की सदस्यता के लिए अटैच किया गया है.
MMTEL और आरसीएस सुविधाओं के लिए ImsService की स्थिति सुनने या उसमें बदलाव करने के लिए, इसका इस्तेमाल करें
यह
ImsManager
क्लास का इस्तेमाल करके
ImsMmTelManager
ImsRcsManager
,
या आईएमएस के लिए बना
ProvisioningManager
क्लास. इसके बाद, ऐप्लिकेशन, आईएमएस की खास सेवा और प्रावधान करने की स्थितियों को सुन सकता है
जैसे:
- MMTEL या आरसीएस की सुविधाएं चालू हैं और उपलब्ध हैं
- आईएमएस रजिस्ट्रेशन की स्थिति में बदलाव होने पर अपडेट
- IMS सुविधाओं की प्रावधान स्थिति
- उपयोगकर्ता ने आईएमएस की ये सुविधाएं चालू की हैं
ImsStateCallback का इस्तेमाल करें
हालांकि 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 और IMS से जुड़े एपीआई,
की सदस्यता लें.
अगर टेलीफ़ोनी प्रोसेस बंद हो जाती है, तो ऐप्लिकेशन को
ImsStateCallback#onError
और उसे अब रजिस्टर किए गए ImsStateCallback
इंस्टेंस के लिए अपडेट नहीं मिलेंगे.
इस स्थिति से वापस पाने के लिए, इसके लिए ImsStateCallback
इंस्टेंस फिर से रजिस्टर करें
जुड़ी हुई सदस्यता को पाने के लिए कॉल करें
ImsMmTelManager#registerImsStateCallback
या
ImsRcsManager#registerImsStateCallback
.