Android 9 में, तीसरे पक्ष के कॉलिंग ऐप्लिकेशन को बेहतर तरीके से काम करने में मदद करने के लिए, एपीआई उपलब्ध हैं. तीसरे पक्ष के कॉलिंग ऐप्लिकेशन आम तौर पर, टेलीफ़ोनी एपीआई पर निर्भर करते हैं. जैसे, PHONE_STATE ब्रॉडकास्ट. इससे वे मोबाइल और इंटरनेट सेवा देने वाली कंपनी के फ़ोन कॉल के साथ-साथ काम कर पाते हैं. इस वजह से, तीसरे पक्ष के कॉलिंग ऐप्लिकेशन को मोबाइल और इंटरनेट सेवा देने वाली कंपनी के कॉल को प्राथमिकता देनी होती है. साथ ही, अक्सर वे अपने ऐप्लिकेशन में आने वाले कॉल को चुपचाप अस्वीकार कर देते हैं या मोबाइल और इंटरनेट सेवा देने वाली कंपनी के कॉल के लिए, मौजूदा कॉल को खत्म कर देते हैं.
Android 9 में मौजूद एपीआई की मदद से, तीसरे पक्ष के ऐप्लिकेशन और मोबाइल और इंटरनेट सेवा देने वाली कंपनी के कॉल के बीच, एक साथ कॉल करने की सुविधा मिलती है. उदाहरण के लिए, कैरियर कॉल में शामिल होने के दौरान, तीसरे पक्ष के ऐप्लिकेशन से आने वाला कॉल रिसीव किया जा सकता है. फ़्रेमवर्क यह पक्का करता है कि जब उपयोगकर्ता तीसरे पक्ष के ऐप्लिकेशन से कॉल करता है, तो कैरियर कॉल होल्ड रहे.
Android 9 में, तीसरे पक्ष के कॉलिंग ऐप्लिकेशन को, खुद से मैनेज होने वाली ConnectionService क्लास लागू करने का सुझाव दिया जाता है. इस क्लास का इस्तेमाल करके, कॉलिंग ऐप्लिकेशन बनाने के बारे में ज़्यादा जानने के लिए, Core-Telecom
लाइब्रेरी का इस्तेमाल करके कॉलिंग ऐप्लिकेशन बनाना लेख पढ़ें.
खुद से मैनेज होने वाली ConnectionService क्लास, डेवलपर को यह विकल्प भी देती है
कि वे अपने ऐप्लिकेशन में किए गए कॉल को, सिस्टम कॉल लॉग में लॉग करें. इसके लिए,
EXTRA_LOG_SELF_MANAGED_CALLS देखें. Android
Compatibility Definition Document (CDD) (सेक्शन 7.4.1.2) में दी गई ज़रूरी शर्तों के मुताबिक, आपको यह पक्का करना होगा
कि आपका डायलर या फ़ोन ऐप्लिकेशन, कॉल लॉग की ये एंट्री दिखाए. साथ ही, यह भी दिखाए कि कॉल,
तीसरे पक्ष के किस कॉलिंग ऐप्लिकेशन से किया गया है. AOSP डायलर ऐप्लिकेशन, इस ज़रूरी शर्त को कैसे पूरा करता है, यह जानने के लिए, तीसरे पक्ष के
कॉलिंग ऐप्लिकेशन से किए गए कॉल की लॉग एंट्री देखें.
ऐप्लिकेशन की ज़िम्मेदारी होती है कि वे अपने ऐप्लिकेशन के कनेक्शन पर CAPABILITY_SUPPORT_HOLD और
CAPABILITY_HOLD सेट करें. हालांकि, ऐसा हो सकता है कि कुछ मामलों में कोई ऐप्लिकेशन, कॉल को होल्ड न कर पाए. फ़्रेमवर्क में, इस तरह के मामलों को हल करने के लिए प्रावधान शामिल हैं.
स्थिति
आपको अपने डायलर ऐप्लिकेशन में बदलाव करके, इन स्थितियों को मैनेज करना चाहिए.
ऐसे इनकमिंग कॉल मैनेज करना जिनसे मौजूदा कॉल डिसकनेक्ट हो जाता है
मान लें कि तीसरे पक्ष के किसी ऐप्लिकेशन से कॉल किया जा रहा है. जैसे, SuperCaller से कॉल किया जा रहा है. इस ऐप्लिकेशन में कॉल को होल्ड करने की सुविधा नहीं है. इस दौरान, उपयोगकर्ता को मोबाइल और इंटरनेट सेवा देने वाली कंपनी (जैसे, FooCom) से कॉल आता है. ऐसे में, आपके डायलर या फ़ोन ऐप्लिकेशन को उपयोगकर्ता को यह बताना चाहिए कि मोबाइल नेटवर्क से आने वाले कॉल का जवाब देने पर, तीसरे पक्ष के ऐप्लिकेशन से किया जा रहा कॉल खत्म हो जाएगा.
उपयोगकर्ता के लिए यह अनुभव ज़रूरी है, क्योंकि हो सकता है कि तीसरे पक्ष के किसी कॉलिंग ऐप्लिकेशन से किया जा रहा कॉल, फ़्रेमवर्क की मदद से होल्ड न किया जा सके. मोबाइल और इंटरनेट सेवा देने वाली कंपनी से आने वाले नए कॉल का जवाब देने पर, तीसरे पक्ष के ऐप्लिकेशन से किया जा रहा कॉल डिसकनेक्ट हो जाता है.
उदाहरण के लिए, इमेज में उपयोगकर्ता इंटरफ़ेस देखें:
पहली इमेज. तीसरे पक्ष के ऐप्लिकेशन से किया जा रहा कॉल, इनकमिंग कॉल की वजह से डिसकनेक्ट हो रहा है.
आपका डायलर ऐप्लिकेशन, कॉल के एक्स्ट्रा की जांच करके यह पता लगा सकता है कि किसी इनकमिंग कॉल की वजह से, दूसरा कॉल डिसकनेक्ट हो रहा है या नहीं. पक्का करें कि
EXTRA_ANSWERING_DROPS_FG_CALL को TRUE पर सेट किया गया हो. साथ ही,
EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME को उस ऐप्लिकेशन के नाम पर सेट किया गया हो
जिसका कॉल, मोबाइल और इंटरनेट सेवा देने वाली कंपनी से आने वाले कॉल का जवाब देने पर डिसकनेक्ट हो जाता है.
तीसरे पक्ष के कॉलिंग ऐप्लिकेशन से किए गए कॉल की लॉग एंट्री
तीसरे पक्ष के कॉलिंग ऐप्लिकेशन के डेवलपर, अपने ऐप्लिकेशन में किए गए कॉल को, सिस्टम कॉल लॉग में लॉग करने का विकल्प चुन सकते हैं. इसके लिए, EXTRA_LOG_SELF_MANAGED_CALLS देखें. इसका मतलब है कि कॉल लॉग में ऐसी एंट्री हो सकती हैं जो मोबाइल नेटवर्क से किए गए कॉल के लिए नहीं हैं.
जब AOSP डायलर ऐप्लिकेशन, तीसरे पक्ष के कॉलिंग ऐप्लिकेशन से किए गए कॉल की लॉग एंट्री दिखाता है, तो कॉल लॉग में उस ऐप्लिकेशन का नाम दिखता है जिससे कॉल किया गया था. जैसा कि इमेज में दिखाया गया है:
दूसरी इमेज. डायलर ऐप्लिकेशन पर, तीसरे पक्ष के कॉलिंग ऐप्लिकेशन के नाम के साथ कॉल लॉग एंट्री.
कॉल लॉग एंट्री से जुड़े ऐप्लिकेशन का नाम जानने के लिए, PHONE_ACCOUNT_COMPONENT_NAME और PHONE_ACCOUNT_ID कॉलम का इस्तेमाल करके, कॉल लॉग प्रोवाइडर में मौजूद PhoneAccountHandle का इंस्टेंस बनाएं. इससे
कॉल लॉग एंट्री के सोर्स की पहचान होती है. TelecomManager क्लास की जानकारी पाने के लिए,
से क्वेरी करें.PhoneAccount यह पता लगाने के लिए कि कॉल लॉग एंट्री,
तीसरे पक्ष के कॉलिंग ऐप्लिकेशन से है या नहीं, PhoneAccount क्षमताओं की जांच करें. इससे यह पता चलेगा
कि CAPABILITY_SELF_MANAGED सेट है या नहीं.
तीसरे पक्ष के कॉलिंग ऐप्लिकेशन से किए गए कॉल की लॉग एंट्री से जुड़े ऐप्लिकेशन का नाम जानने के लिए, लौटाए गए PhoneAccount का getLabel तरीका इस्तेमाल करें.
वीओआईपी कॉल लॉग इंटिग्रेशन के कंट्रोल
Android 17 (एपीआई लेवल 37) से, तीसरे पक्ष के वीओआईपी कॉलिंग ऐप्लिकेशन, Core-Telecom और CallsManager के साथ इंटिग्रेट हो सकते हैं. साथ ही, वे अपने कॉल इतिहास को सीधे Android के नेटिव सिस्टम कॉल लॉग (CallLog.Calls) में लिख सकते हैं.
Android इकोसिस्टम में, उपयोगकर्ता की निजता और डेटा की सुरक्षा को पक्का करने के लिए,
Android 17 (एपीआई लेवल 37) और इसके बाद के वर्शन वाले सभी डिवाइसों में, टेलीकॉम
फ़ीचर फ़्लैग (android.software.telecom) होना चाहिए. साथ ही, उनमें android.app.role.DIALER
की भूमिका होनी चाहिए. Android
Compatibility Definition Document (CDD)के मुताबिक, इनमें हर ऐप्लिकेशन के लिए वीओआईपी कॉल लॉग इंटिग्रेशन कंट्रोल की सुविधा होनी चाहिए.
डिवाइस में लागू करने से जुड़ी ज़रूरी शर्तें
डिवाइसों में, सेटिंग स्क्रीन होनी चाहिए. इसे उपयोगकर्ता ऐक्सेस कर सकते हैं. आम तौर पर, यह सेटिंग > कॉलिंग खाते > इंटिग्रेट किए गए कॉल लॉग में मौजूद होती है. इसकी मदद से, उपयोगकर्ता तीसरे पक्ष के अलग-अलग वीओआईपी ऐप्लिकेशन के लिए, कॉल लॉग इंटिग्रेशन को देख और टॉगल कर सकते हैं.
इस ज़रूरी शर्त को पूरा करने के लिए, आपको स्टॉक प्लैटफ़ॉर्म के डिफ़ॉल्ट को इंटिग्रेट करना होगा:
- प्लैटफ़ॉर्म सेटिंग इंटिग्रेशन: पक्का करें कि आपके डिवाइस में
com.android.phone.settings.PhoneAccountSettingsActivityशामिल हो. यह सुविधा, Android प्लैटफ़ॉर्म में पहले से मौजूद होती है (com.android.phone). - इंटेंट रिज़ॉल्यूशन की ज़रूरी शर्त: आपके डिवाइस को, स्टॉक प्लैटफ़ॉर्म की मैनेजमेंट स्क्रीन पर,
TelecomManager.ACTION_CONFIGURE_CALL_LOG_INTEGRATION(android.telecom.action.CONFIGURE_CALL_LOG_INTEGRATION) इंटेंट को रिज़ॉल्व करना होगा.
जब कोई ऐप्लिकेशन, सिस्टम प्रॉम्प्ट या डीप लिंक, इनमें से किसी को शुरू करता है, तो इंटेंट को PhoneAccountSettingsActivity को सफलतापूर्वक लॉन्च करना होगा. साथ ही, ActivityNotFoundException नहीं दिखाना होगा:
Intent intent = new Intent(TelecomManager.ACTION_CONFIGURE_CALL_LOG_INTEGRATION);
context.startActivity(intent);
सत्यापन
यह टेस्ट करने के लिए कि आपका डिवाइस, तीसरे पक्ष के कॉलिंग ऐप्लिकेशन के साथ काम करता है या नहीं, Telecomm टेस्ट ऐप्लिकेशन का इस्तेमाल करें. यह ऐप्लिकेशन, खुद से मैनेज होने वाली ConnectionService क्लास को लागू करता है. यह ऐप्लिकेशन
में मौजूद है
/packages/services/Telecomm/testapps/.
अपने Android सोर्स रिपॉज़िटरी के रूट से, टेस्ट ऐप्लिकेशन बनाएं. इसके लिए, यह कमांड इस्तेमाल करें:
mmma packages/services/Telecomm/testapps/adb install -g -r <apk path>का इस्तेमाल करके, बिल्ड एपीके इंस्टॉल करें. इसके बाद, आपके लॉन्चर में, खुद से मैनेज होने वाले सैंपल का आइकॉन जुड़ जाता है.टेस्ट ऐप्लिकेशन खोलने के लिए, आइकॉन पर टैप करें.
ऐसे इनकमिंग कॉल मैनेज करना जिनसे मौजूदा कॉल डिसकनेक्ट हो जाता है
यह पुष्टि करने के लिए कि किसी इनकमिंग कॉल की वजह से, तीसरे पक्ष के ऐप्लिकेशन से किया जा रहा कॉल डिसकनेक्ट हो जाता है, यह तरीका अपनाएं.
तीसरी इमेज. ConnectionService क्लास के सैंपल लागू करने वाला टेस्ट ऐप्लिकेशन.
- होल्ड किया जा सकता है विकल्प साफ़ करें.
- आउटगोइंग कॉल का नया सैंपल शुरू करने के लिए, आउटगोइंग पर टैप करें.
- कॉल को चालू करने के लिए, चालू बटन पर टैप करें.
- टेस्ट किए जा रहे डिवाइस के फ़ोन नंबर पर, किसी दूसरे फ़ोन से कॉल करें. इससे वह स्थिति शुरू हो जाती है जिसमें आपके डायलर को किसी ऐसे ऐप्लिकेशन का नाम मिलता है जिसका कॉल डिसकनेक्ट हो जाएगा.
- जब कॉल खत्म हो जाए, तो टेस्ट ऐप्लिकेशन में मौजूद डिसकनेक्ट करें बटन पर टैप करें.
तीसरे पक्ष के कॉलिंग ऐप्लिकेशन से किए गए कॉल की लॉग एंट्री
ऊपर दिया गया तरीका पूरा करने के बाद, टेस्ट ऐप्लिकेशन को सिस्टम कॉल लॉग में कॉल लॉग करना चाहिए. यह पुष्टि करने के लिए कि डिवाइस, तीसरे पक्ष के कॉलिंग ऐप्लिकेशन से किए गए कॉल को लॉग करता है, अपना डायलर ऐप्लिकेशन खोलें और पुष्टि करें कि कॉल, सिस्टम कॉल लॉग में दिखता है.
वीओआईपी कॉल लॉग इंटिग्रेशन के कंट्रोल
Android 17 और इसके बाद के वर्शन पर, वीओआईपी कॉल लॉग इंटिग्रेशन इंटेंट की ज़रूरी शर्त के मुताबिक काम करने की पुष्टि करने के लिए, CtsTelecomTestCases Compatibility Test Suite (CTS) टेस्ट चलाएं. यह टेस्ट, पैकेज की सीमाओं के बीच यह पुष्टि करता है कि TelecomManager#ACTION_CONFIGURE_CALL_LOG_INTEGRATION (android.telecom.action.CONFIGURE_CALL_LOG_INTEGRATION) भेजने पर, डिवाइस पर एक्सपोर्ट किए गए मान्य ऐक्टिविटी हैंडलर (resolveActivity की जांच) को रिज़ॉल्व किया जाता है.