जिन Android डिवाइसों में डेटा बैलेंस नहीं है वे नेटवर्क ट्रैफ़िक को अनुमति देते हैं. इसलिए, मोबाइल और इंटरनेट सेवा देने वाली कंपनियों को ट्रैफ़िक कम करने के प्रोटोकॉल लागू करने पड़ते हैं. Android एक सामान्य समाधान लागू करता है, जिससे कैरियर और टेल्को को यह बताने में मदद मिलती है कि किसी डिवाइस में बैलेंस खत्म हो गया है.
Android प्लैटफ़ॉर्म, कैप्टिव पोर्टल का पता लगाने वाले सिग्नल के आधार पर, ट्रैफ़िक कम करने के लिए डिफ़ॉल्ट कैरियर ऐप्लिकेशन उपलब्ध कराता है. इससे कैरियर और OEM को, कम लागत और ज़्यादा सुविधाओं के साथ, व्यवहार को पसंद के मुताबिक बनाने का मौका भी मिलता है.
उदाहरण और सोर्स
डिफ़ॉल्ट मोबाइल और इंटरनेट सेवा देने वाली कंपनी का ऐप्लिकेशन, platform/frameworks/base/packages/CarrierDefaultApp/.
पर मौजूद होता है
लागू करना
डिफ़ॉल्ट कैरियर ऐप्लिकेशन को कॉन्फ़िगर किया गया है, ताकि बिना कॉन्फ़िगर किए गए कैरियर के लिए बेहतर अनुभव दिया जा सके. मोबाइल और इंटरनेट सेवा देने वाली कंपनियां, इस डिफ़ॉल्ट तरीके का इस्तेमाल कर सकती हैं. मोबाइल और इंटरनेट सेवा देने वाली कंपनी की कॉन्फ़िगरेशन एक्सएमएल फ़ाइल में सिग्नल-ऐक्शन मैपिंग जोड़कर, डिफ़ॉल्ट तरीके को बदला जा सकता है. वे डिफ़ॉल्ट ऐप्लिकेशन का इस्तेमाल न करने का फ़ैसला ले सकते हैं और इसके बजाय, अपने स्टैंडअलोन मोबाइल और इंटरनेट सेवा देने वाली कंपनी के ऐप्लिकेशन के साथ UICC की सुविधाओं का इस्तेमाल कर सकते हैं.
लागू करने के बारे में जानकारी
सिग्नल
Android फ़्रेमवर्क, पैरामीटर वाले इन सिग्नल के लिए कार्रवाइयां कॉन्फ़िगर करने की सुविधा देता है:
TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED
ये सिग्नल frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java
में मौजूद हैं.
कौनसी कार्रवाइयां की जा सकती हैं
डिफ़ॉल्ट कैरियर ऐप्लिकेशन, काम करने वाली कार्रवाइयों का एक सेट तय करता है. इन कार्रवाइयों को काम करने वाले सिग्नल पर मैप किया जा सकता है. इनके बारे में CarrierActionUtils.java
में बताया गया है:
public static final int CARRIER_ACTION_ENABLE_METERED_APNS = 0; public static final int CARRIER_ACTION_DISABLE_METERED_APNS = 1; public static final int CARRIER_ACTION_DISABLE_RADIO = 2; public static final int CARRIER_ACTION_ENABLE_RADIO = 3; public static final int CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION = 4; public static final int CARRIER_ACTION_SHOW_NO_DATA_SERVICE_NOTIFICATION = 5; public static final int CARRIER_ACTION_CANCEL_ALL_NOTIFICATIONS = 6;
ध्यान दें: अगर कोई कैरियर अपना स्टैंडअलोन ऐप्लिकेशन लागू करता है, तो वह इस सेक्शन में बताए गए सिग्नल के अलावा, अन्य सिग्नल के लिए भी सहायता लागू कर सकता है. वे अपनी कार्रवाइयां भी तय और कॉन्फ़िगर कर सकते हैं.
सिग्नल-ऐक्शन की डिफ़ॉल्ट मैपिंग
डिफ़ॉल्ट कार्रवाइयों को कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:
- काम करने वाले सिग्नल के लिए कोई कुंजी तय करें.
सिग्नल से ऐक्शन की डिफ़ॉल्ट मैपिंग,
CarrierConfigManager.java
में बताई गई है. काम करने वाले हर सिग्नल की एक कुंजी होती है:public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY = "carrier_default_actions_on_redirection_string_array"; public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_DCFAILURE_STRING_ARRAY = "carrier_default_actions_on_dcfailure_string_array";
- सिग्नल बटन के साथ डिफ़ॉल्ट कार्रवाइयां जोड़ें.
डिफ़ॉल्ट ऐक्शन आईडी, सिग्नल कुंजियों से जुड़े होते हैं:
sDefaults.putStringArray(KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY, new String[]{ "1, 4" //1: CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION // 4: CARRIER_ACTION_DISABLE_METERED_APNS });
टेलीफ़ोनी फ़्रेमवर्क, इन कार्रवाइयों को उनसे जुड़े सिग्नल से मैप करता है.
डिफ़ॉल्ट कार्रवाइयों को बदलना
कैरियर कॉन्फ़िगरेशन एक्सएमएल फ़ाइल में, काम करने वाले सिग्नल के लिए कस्टम ऐक्शन तय किए जा सकते हैं. इसके लिए, ऐक्शन आईडी को सिग्नल बटन (CarrierConfigManager.java
में तय किए गए) से जोड़ें. उदाहरण के लिए, यहां दी गई मैपिंग, मीटर किए गए एपीएन बंद कर देती है और रीडायरेक्ट करने पर पोर्टल की सूचना दिखाती है:
<string-array name="carrier_default_actions_on_redirection_string_array" num="2"> <item value="1" /> <item value="4" /> </string-array>
टेलीफ़ोन फ़्रेमवर्क, इन कॉन्फ़िगरेशन को लोड करता है और डिफ़ॉल्ट कार्रवाइयों को बदल देता है.
पुष्टि करें
इस सुविधा के लिए, सीटीएस, सीटीएस की पुष्टि करने वाला टूल या जीटीएस टेस्ट नहीं हैं.
इस सुविधा की पुष्टि करने के लिए, मैन्युअल तरीके से पुष्टि करने वाले इन टेस्ट का इस्तेमाल करें:
- टेलीकॉम कंपनी की ओर से, डिवाइस में बैलेंस खत्म होने की सूचना की पुष्टि करना.
- पुष्टि करें कि बैलेंस खत्म होने पर और वाई-फ़ाई बंद होने पर, ट्रैफ़िक को रीडायरेक्ट करने की सुविधा को कम किया गया है.
- पुष्टि करें कि नेटवर्क ट्रैफ़िक कम हो गया है और बैलेंस खत्म होने पर सूचना वाला यूज़र इंटरफ़ेस दिखता है.
- बैलेंस खत्म होने पर, वॉइस कॉल/VoLTE फ़ंक्शन की पुष्टि करना.
- पुष्टि करें कि बैलेंस खत्म होने पर, वीडियो कॉल करने की सुविधा ब्लॉक हो.
- पुष्टि करें कि वाई-फ़ाई चालू होने पर, उपयोगकर्ता वेब ब्राउज़िंग जारी रख सकता है. साथ ही, बैलेंस खत्म होने पर, ब्राउज़िंग ट्रैफ़िक नेटवर्क ट्रैफ़िक को चालू नहीं करता.
- बैलेंस न होने पर, वाई-फ़ाई, WFC, और ब्लूटूथ की सुविधाओं की पुष्टि करना.
- वाई-फ़ाई बंद करें. बैलेंस खत्म होने की सूचना वाले यूज़र इंटरफ़ेस की पुष्टि करें. साथ ही, यह भी देखें कि सामान्य ब्राउज़िंग ट्रैफ़िक को टेलीकॉम कंपनी की रजिस्ट्रेशन वेबसाइट पर रीडायरेक्ट न किया जा रहा हो. पुष्टि करने के लिए, सूचना के यूज़र इंटरफ़ेस (यूआई) में मौजूद लिंक पर क्लिक करने से, ब्राउज़र टेलीकॉम कंपनी के रजिस्ट्रेशन की वेबसाइट पर पहुंच जाता है.
- पुष्टि करें कि फ़्लाइट मोड को टॉगल करने से, ट्रैफ़िक को कम करने की स्थिति रीसेट न हो.
- पुष्टि करें कि चालू सिम को बदलने से, नेटवर्क ट्रैफ़िक की स्थिति रीसेट हो जाती है.
- पुष्टि करें कि बैलेंस खत्म हो चुके सिम कार्ड को फिर से डालने पर, ट्रैफ़िक रीडायरेक्ट करने की सुविधा फिर से शुरू हो जाती है और नेटवर्क ट्रैफ़िक को फिर से कम किया जाता है.
- पुष्टि करें कि फ़ोन को रीबूट करने से, रीडायरेक्ट करने की सुविधा फिर से चालू हो जाती है और ट्रैफ़िक थ्रॉटल और सूचना वाले यूज़र इंटरफ़ेस (यूआई) को वापस लाया जाता है.
- "कैप्टिव पोर्टल" सूचना पर टैप करें. पुष्टि करें कि उपयोगकर्ता को क्रेडिट जोड़ने की अनुमति देने के लिए, पाबंदी वाला नेटवर्क कनेक्शन स्थापित किया गया है.
- पुष्टि करें कि सिम कार्ड में बैलेंस फिर से भरने या उसे फिर से चालू करने से, मोबाइल नेटवर्क ट्रैफ़िक ठीक हो जाता है. साथ ही, टेल्को लिंक और बैलेंस न होने की सूचना भी हट जाती है.
- डेटा सेवा वापस पाने के बाद, उसकी जांच करना.
डिफ़ॉल्ट ऐप्लिकेशन में, यूनिट टेस्ट के कुछ उदाहरण और उन्हें चलाने के लिए स्क्रिप्ट दी गई है (tests/runtest.sh
देखें). जब कोई कस्टमाइज़ किया गया वर्शन या व्यवहार लागू किया जाता है, तो आपको उन कस्टमाइज़ेशन को खास यूनिट टेस्ट में दिखाना चाहिए.