बैलेंस खत्म होने पर, डिवाइस के व्यवहार को पसंद के मुताबिक बनाना

जिन Android डिवाइसों में डेटा बैलेंस नहीं होता है उनमें नेटवर्क ट्रैफ़िक की अनुमति होती है. इसलिए, कैरिअर और टेलीकॉम कंपनियों को, इस समस्या को कम करने के लिए प्रोटोकॉल लागू करने पड़ते हैं. Android, एक सामान्य समाधान लागू करता है. इससे मोबाइल और इंटरनेट सेवा देने वाली कंपनियां यह बता सकती हैं कि किसी डिवाइस का बैलेंस खत्म हो गया है.

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

उदाहरण और सोर्स

डिफ़ॉल्ट कैरियर ऐप्लिकेशन यहां मौजूद है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;

ध्यान दें: अगर कोई कैरियर अपना स्टैंडअलोन ऐप्लिकेशन लागू करता है, तो वह इस सेक्शन में बताए गए सिग्नल के अलावा अन्य सिग्नल के लिए भी सहायता लागू कर सकता है. वे अपनी कार्रवाइयां भी तय और कॉन्फ़िगर कर सकते हैं.

सिग्नल और कार्रवाई के डिफ़ॉल्ट मैपिंग

डिफ़ॉल्ट कार्रवाइयां कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:

  1. सहायता पाने वाले सिग्नल के लिए कोई कुंजी तय करें.

    कार्रवाई के लिए डिफ़ॉल्ट सिग्नल मैपिंग, 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";
  2. सिग्नल की के साथ डिफ़ॉल्ट कार्रवाइयां जोड़ें.

    डिफ़ॉल्ट ऐक्शन आईडी, सिग्नल कुंजियों से जुड़े होते हैं:

    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
             });
    

    टेलीफ़ोनी फ़्रेमवर्क, इन कार्रवाइयों को उनसे जुड़े सिग्नल से मैप करता है.

डिफ़ॉल्ट कार्रवाइयों को बदलना

कैरियर कॉन्फ़िगरेशन की XML फ़ाइल में, काम करने वाले सिग्नल के लिए कस्टम ऐक्शन तय किए जा सकते हैं. इसके लिए, ऐक्शन आईडी को सिग्नल कुंजियों (CarrierConfigManager.java में तय की गई) से जोड़ें. उदाहरण के लिए, यहां दी गई मैपिंग से, मीटर के हिसाब से शुल्क लेने वाले एपीएन बंद हो जाते हैं और रीडायरेक्ट करने पर पोर्टल की सूचना दिखती है:

<string-array name="carrier_default_actions_on_redirection_string_array" num="2">
            <item value="1" />
            <item value="4" />
</string-array>

टेलीफ़ोनी फ़्रेमवर्क इन कॉन्फ़िगरेशन को लोड करता है और डिफ़ॉल्ट कार्रवाइयों को बदल देता है.

सत्यापन

इस सुविधा के लिए, CTS, CTS Verifier या GTS टेस्ट उपलब्ध नहीं हैं.

सुविधा की पुष्टि करने के लिए, मैन्युअल तरीके से पुष्टि करने वाली इन जांचों का इस्तेमाल करें:

  1. टेलीकॉम कंपनी के डिवाइस के बैलेंस खत्म होने के सिग्नल की सूचना की पुष्टि करें.
  2. खाते में बैलेंस न होने और वाई-फ़ाई बंद होने पर, ट्रैफ़िक रीडायरेक्ट करने की सुविधा पर पाबंदी लगने की पुष्टि करें.
  3. पुष्टि करें कि बैलेंस खत्म होने पर, नेटवर्क ट्रैफ़िक कम हो जाता है और सूचना वाला यूज़र इंटरफ़ेस दिखता है.
  4. बैलेंस खत्म होने पर, वॉइस कॉल/VoLTE फ़ंक्शन की पुष्टि करें.
  5. पुष्टि करें कि बैलेंस खत्म होने पर, वीडियो कॉल करने की सुविधा ब्लॉक हो जाती है.
  6. वाई-फ़ाई चालू होने पर, पुष्टि करें कि उपयोगकर्ता वेब ब्राउज़िंग जारी रख सकता है. साथ ही, बैलेंस खत्म होने पर ब्राउज़िंग ट्रैफ़िक, नेटवर्क ट्रैफ़िक में नहीं बदलता है.
  7. बैटरी कम होने पर, वाई-फ़ाई, डब्ल्यूएफ़सी, और ब्लूटूथ फ़ंक्शन की पुष्टि करें.
  8. वाई-फ़ाई बंद करें. पुष्टि करें कि बैलेंस खत्म होने की सूचना देने वाला यूज़र इंटरफ़ेस (यूआई) सही है. साथ ही, सामान्य ब्राउज़िंग ट्रैफ़िक को टेलीकॉम कंपनी की रजिस्ट्रेशन वेबसाइट पर रीडायरेक्ट नहीं किया जा रहा है. पुष्टि करें सूचना वाले यूज़र इंटरफ़ेस (यूआई) में मौजूद लिंक पर क्लिक करने से, ब्राउज़र को टेलीकॉम कंपनी की रजिस्ट्रेशन वाली वेबसाइट पर ले जाया जाता है.
  9. पुष्टि करें कि फ़्लाइट मोड को टॉगल करने से, ट्रैफ़िक थ्रॉटलिंग की स्थिति रीसेट नहीं होती है.
  10. पुष्टि करें कि चालू सिम को बदलने पर, नेटवर्क ट्रैफ़िक की स्थिति रीसेट हो जाती है.
  11. पुष्टि करें कि सिम कार्ड को फिर से डालने पर, ट्रैफ़िक रीडायरेक्ट करने की सुविधा फिर से शुरू हो जाती है और नेटवर्क ट्रैफ़िक थ्रॉटलिंग की सुविधा फिर से चालू हो जाती है.
  12. पुष्टि करें कि फ़ोन को रीबूट करने से, रीडायरेक्ट करने की सुविधा फिर से चालू हो जाती है. साथ ही, ट्रैफ़िक थ्रॉटलिंग और सूचना यूज़र इंटरफ़ेस (यूआई) वापस आ जाता है.
  13. "captiveportal" सूचना पर टैप करें. पुष्टि करें कि प्रतिबंधित नेटवर्क से कनेक्शन बनाया गया हो, ताकि उपयोगकर्ता क्रेडिट जोड़ सके.
  14. पुष्टि करें कि सिम में बैलेंस रीफ़िल करने या उसे फिर से चालू करने से, मोबाइल नेटवर्क का ट्रैफ़िक ठीक हो जाता है. साथ ही, टेलको लिंक और बैलेंस न होने की सूचना हट जाती है.
  15. डेटा सेवा के ठीक होने के बाद, सैनिटी टेस्ट.

डिफ़ॉल्ट ऐप्लिकेशन में, यूनिट टेस्ट के कुछ उदाहरण और उन्हें चलाने के लिए एक स्क्रिप्ट दी गई है (tests/runtest.sh देखें). जब आपको कोई कस्टम वर्शन या व्यवहार लागू करना हो, तो आपको उन कस्टम वर्शन या व्यवहार को यूनिट टेस्ट में भी शामिल करना चाहिए.