Android 9 में, तीसरे पक्ष के कॉलिंग ऐप्लिकेशन को बेहतर तरीके से सपोर्ट करने के लिए एपीआई उपलब्ध कराए गए हैं. कॉल करने के लिए तीसरे पक्ष के ऐप्लिकेशन, आम तौर पर टेलीफ़ोनी एपीआई पर निर्भर करते हैं. जैसे, PHONE_STATE
ब्रॉडकास्ट, ताकि वे कैरियर के फ़ोन कॉल के साथ काम कर सकें. इस वजह से, तीसरे पक्ष के कॉलिंग ऐप्लिकेशन को कैरियर कॉल को प्राथमिकता देनी होती है. साथ ही, वे अक्सर ऐप्लिकेशन में आने वाले कॉल को चुपचाप अस्वीकार कर देते हैं या कैरियर कॉल के लिए रास्ता बनाने के लिए, चालू कॉल को बंद कर देते हैं.
Android 9 में मौजूद एपीआई, तीसरे पक्ष के ऐप्लिकेशन और कैरियर कॉल के बीच एक साथ कॉल करने की सुविधा देते हैं. इससे, उदाहरण के लिए, किसी कैरियर कॉल में शामिल होने के दौरान, तीसरे पक्ष से आने वाले कॉल को रिसीव किया जा सकता है. फ़्रेमवर्क यह पक्का करने की ज़िम्मेदारी लेता है कि जब उपयोगकर्ता तीसरे पक्ष की कॉल में शामिल हो, तब कैरियर कॉल जारी रहे.
Android 9 में, तीसरे पक्ष के कॉलिंग ऐप्लिकेशन को खुद मैनेज किए गए ConnectionService
एपीआई को लागू करने के लिए कहा गया है. इस एपीआई का इस्तेमाल करके कॉलिंग ऐप्लिकेशन बनाने के तरीके के बारे में ज़्यादा जानने के लिए, कॉलिंग ऐप्लिकेशन बनाना लेख पढ़ें.
सेल्फ़-मैनेज किए जाने वाले ConnectionService
एपीआई की मदद से, डेवलपर अपने ऐप्लिकेशन में कॉल लॉग करने की सुविधा चालू कर सकते हैं. इससे सिस्टम कॉल लॉग में कॉल लॉग हो जाते हैं (EXTRA_LOG_SELF_MANAGED_CALLS
देखें).
Android Compatibility Definition Document (CDD) (सेक्शन 7.4.1.2) में दी गई ज़रूरी शर्तों के मुताबिक, आपको यह पक्का करना होगा कि आपका डायलर या फ़ोन ऐप्लिकेशन, कॉल लॉग की इन एंट्री को दिखाता हो. साथ ही, तीसरे पक्ष के उस कॉलिंग ऐप्लिकेशन का नाम दिखाता हो जिससे कॉल किया गया है. AOSP डायलर ऐप्लिकेशन, इस ज़रूरी शर्त को कैसे पूरा करता है, इसका उदाहरण देखने के लिए तीसरे पक्ष के कॉलिंग ऐप्लिकेशन से की गई कॉल की लॉग एंट्री देखें.
ऐप्लिकेशन, अपने कनेक्शन पर CAPABILITY_SUPPORT_HOLD
और CAPABILITY_HOLD
सेट करने के लिए ज़िम्मेदार होते हैं. हालांकि, ऐसा हो सकता है कि कुछ मामलों में कोई ऐप्लिकेशन कॉल को होल्ड न कर पाए. इस फ़्रेमवर्क में, इस तरह के मामलों को हल करने के प्रावधान शामिल हैं.
स्थिति
आपको अपने डायलर ऐप्लिकेशन में बदलाव करना चाहिए, ताकि इन स्थितियों को हैंडल किया जा सके.
ऐसे इनकमिंग कॉल मैनेज करना जिनसे मौजूदा कॉल डिसकनेक्ट हो जाता है
अगर किसी तीसरे पक्ष की कॉल (जैसे, SuperCaller कॉल) चल रही है और उसमें कॉल होल्ड करने की सुविधा नहीं है, तो ऐसे में अगर उपयोगकर्ता को मोबाइल कॉल (जैसे, FooCom का इस्तेमाल करके) मिलती है, तो आपके Dialer या Phone ऐप्लिकेशन को उपयोगकर्ता को यह बताना चाहिए कि मोबाइल नेटवर्क की कॉल का जवाब देने पर, तीसरे पक्ष की कॉल बंद हो जाएगी.
उपयोगकर्ता अनुभव के लिहाज़ से यह ज़रूरी है, क्योंकि तीसरे पक्ष के कॉलिंग ऐप्लिकेशन पर कोई ऐसी कॉल चल रही हो सकती है जिसे फ़्रेमवर्क होल्ड नहीं कर सकता. मोबाइल पर आने वाले नए कॉल का जवाब देने पर, तीसरे पक्ष के साथ चल रहा कॉल डिसकनेक्ट हो जाता है.
उदाहरण के लिए, इस इमेज में यूज़र इंटरफ़ेस देखें:
पहली इमेज. किसी तीसरे पक्ष के ऐप्लिकेशन से चल रहे कॉल के दौरान, कोई इनकमिंग कॉल आने पर कॉल डिसकनेक्ट हो जाता है.
आपका डायलर ऐप्लिकेशन, कॉल एक्स्ट्रा की जांच करके यह पता लगा सकता है कि इनकमिंग कॉल की वजह से कोई दूसरा कॉल डिसकनेक्ट हो गया है या नहीं.
पक्का करें कि
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
का इंस्टेंस बनाएं. इससे कॉल लॉग की एंट्री के सोर्स की पहचान की जा सकती है. PhoneAccount की जानकारी पाने के लिए, यह क्वेरी
TelecomManager
करें.
यह पता लगाने के लिए कि कॉल लॉग की कोई एंट्री, तीसरे पक्ष के कॉलिंग ऐप्लिकेशन से है या नहीं, देखें कि
PhoneAccount
की सुविधाएं
उपलब्ध हैं या नहीं. साथ ही, यह भी देखें कि
CAPABILITY_SELF_MANAGED
सेट है या नहीं.
PhoneAccount
से मिले getLabel
तरीके से, तीसरे पक्ष के कॉलिंग ऐप्लिकेशन से कॉल लॉग एंट्री से जुड़े ऐप्लिकेशन का नाम मिलता है.
Validation
यह जांच करने के लिए कि आपका डिवाइस, तीसरे पक्ष के कॉलिंग ऐप्लिकेशन के साथ काम करता है या नहीं, Telecomm test ऐप्लिकेशन का इस्तेमाल करें. यह ऐप्लिकेशन, खुद से मैनेज किए जाने वाले ConnectionService API को लागू करता है. यह ऐप्लिकेशन /packages/services/Telecomm/testapps/
में मौजूद है.
Android सोर्स रिपॉज़िटरी के रूट से, टेस्ट ऐप्लिकेशन बनाएं. इसके लिए, यह कमांड इस्तेमाल करें:
mmma packages/services/Telecomm/testapps/
adb install -g -r <apk path>
का इस्तेमाल करके, बिल्ड किए गए APK को इंस्टॉल करें. इसके बाद, आपके लॉन्चर में, खुद मैनेज किया जाने वाला सैंपल आइकॉन जोड़ दिया जाता है.टेस्ट ऐप्लिकेशन खोलने के लिए, आइकॉन पर टैप करें.
ऐसे इनकमिंग कॉल मैनेज करना जिनसे मौजूदा कॉल डिसकनेक्ट हो जाता है
इस बात की पुष्टि करने के लिए कि किसी तीसरे पक्ष की सेवा से की जा रही कॉल के दौरान आने वाली कॉल से, वह कॉल डिसकनेक्ट हो जाती है, यह तरीका अपनाएं.
तीसरी इमेज. ConnectionService API को लागू करने के सैंपल के साथ ऐप्लिकेशन की जांच करें.
- पकड़ा जा सकता है विकल्प से सही का निशान हटाएं.
- आउटगोइंग कॉल का नया सैंपल शुरू करने के लिए, आउटगोइंग पर टैप करें.
- कॉल को चालू करने के लिए, चालू करें बटन पर टैप करें.
- किसी दूसरे फ़ोन से, उस डिवाइस के फ़ोन नंबर पर कॉल करें जिसकी जांच की जा रही है. इससे ऐसा हो सकता है कि आपके डायलर को किसी ऐसे ऐप्लिकेशन का नाम मिले जिसका कॉल डिसकनेक्ट हो जाएगा.
- जब आपको टेस्ट बंद करना हो, तब टेस्ट ऐप्लिकेशन में मौजूद डिसकनेक्ट करें बटन पर टैप करें.
कॉल करने के लिए तीसरे पक्ष के ऐप्लिकेशन से की गई कॉल की जानकारी
ऊपर दिए गए चरणों को पूरा करने के बाद, टेस्ट ऐप्लिकेशन को सिस्टम कॉल लॉग में कॉल लॉग करना चाहिए. यह पुष्टि करने के लिए कि डिवाइस, तीसरे पक्ष के कॉलिंग ऐप्लिकेशन से कॉल लॉग करता है, डायलर ऐप्लिकेशन खोलें और पुष्टि करें कि कॉल, सिस्टम कॉल लॉग में दिखता है.