तीसरे पक्ष के कॉलिंग ऐप्लिकेशन के साथ काम करना

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 ऑपरेटर का कॉल. ऐसे में, आपके डायलर या फ़ोन ऐप्लिकेशन को उपयोगकर्ता को यह बताना चाहिए कि मोबाइल नेटवर्क के कॉल का जवाब देने पर, तीसरे पक्ष का मौजूदा कॉल खत्म हो जाएगा.

उपयोगकर्ता के लिए यह अनुभव ज़रूरी है, क्योंकि हो सकता है कि तीसरे पक्ष के कॉलिंग ऐप्लिकेशन से कोई कॉल चल रहा हो, जिसे फ़्रेमवर्क होल्ड न कर पाए. मोबाइल नेटवर्क से आने वाले नए कॉल का जवाब देने पर, तीसरे पक्ष का मौजूदा कॉल डिसकनेक्ट हो जाता है.

उदाहरण के लिए, इमेज में यूज़र इंटरफ़ेस देखें:

किसी तीसरे पक्ष के ऐप्लिकेशन से चल रहे कॉल के दौरान, इनकमिंग कॉल आने पर कॉल डिसकनेक्ट हो जाना

पहली इमेज. इनकमिंग कॉल की वजह से, तीसरे पक्ष का मौजूदा कॉल डिसकनेक्ट हो रहा है.

आपका डायलर ऐप्लिकेशन, कॉल के एक्स्ट्रा की जांच करके यह पता लगा सकता है कि किसी इनकमिंग कॉल की वजह से, कोई दूसरा कॉल डिसकनेक्ट हो रहा है या नहीं. पक्का करें कि 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 तरीका, तीसरे पक्ष के कॉलिंग ऐप्लिकेशन से की गई कॉल लॉग एंट्री से जुड़े ऐप्लिकेशन का नाम दिखाता है.

सत्यापन

यह टेस्ट करने के लिए कि आपका डिवाइस, तीसरे पक्ष के कॉलिंग ऐप्लिकेशन के साथ काम करता है या नहीं, Telecomm टेस्ट ऐप्लिकेशन का इस्तेमाल करें. यह ऐप्लिकेशन, खुद से मैनेज होने वाले ConnectionService API को लागू करता है. यह ऐप्लिकेशन, /packages/services/Telecomm/testapps/ में मौजूद है.

  1. अपने Android सोर्स रिपॉज़िटरी के रूट से, टेस्ट ऐप्लिकेशन बनाएं. इसके लिए, यह कमांड इस्तेमाल करें:

    mmma packages/services/Telecomm/testapps/

  2. adb install -g -r <apk path> का इस्तेमाल करके, बिल्ड एपीके इंस्टॉल करें. इसके बाद, आपके लॉन्चर में, खुद से मैनेज होने वाले सैंपल का आइकॉन जुड़ जाता है.

  3. टेस्ट ऐप्लिकेशन खोलने के लिए, आइकॉन पर टैप करें.

मौजूदा कॉल को डिसकनेक्ट करने वाले इनकमिंग कॉल को हैंडल करना

यह पुष्टि करने के लिए कि इनकमिंग कॉल की वजह से, तीसरे पक्ष का मौजूदा कॉल डिसकनेक्ट हो जाता है, यह तरीका अपनाएं.

तीसरे पक्ष के कॉलिंग ऐप्लिकेशन के लिए टेस्ट ऐप्लिकेशन

तीसरी इमेज. ConnectionService API के सैंपल लागू करने के साथ टेस्ट ऐप्लिकेशन.

  1. होल्ड किया जा सकता है विकल्प साफ़ करें.
  2. आउटगोइंग कॉल का नया सैंपल शुरू करने के लिए, आउटगोइंग पर टैप करें.
  3. कॉल को चालू करने के लिए, चालू बटन पर टैप करें.
  4. टेस्ट किए जा रहे डिवाइस के फ़ोन नंबर पर, किसी दूसरे फ़ोन से कॉल करें. इससे वह स्थिति बनती है जिसमें आपके डायलर को किसी ऐसे ऐप्लिकेशन का नाम मिलता है जिसका कॉल डिसकनेक्ट हो जाएगा.
  5. जब कॉल खत्म हो जाए, तब टेस्ट ऐप्लिकेशन में मौजूद डिसकनेक्ट करें बटन पर टैप करें.

तीसरे पक्ष के कॉलिंग ऐप्लिकेशन से की गई कॉल की लॉग एंट्री

ऊपर दिया गया तरीका पूरा करने के बाद, टेस्ट ऐप्लिकेशन को सिस्टम कॉल लॉग में कॉल लॉग करना चाहिए. यह पुष्टि करने के लिए कि डिवाइस, तीसरे पक्ष के कॉलिंग ऐप्लिकेशन से किए गए कॉल को लॉग करता है, अपना डायलर ऐप्लिकेशन खोलें और पुष्टि करें कि कॉल, सिस्टम कॉल लॉग में दिखता है.