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