असंतुलित उपयोगकर्ताओं के लिए डिवाइस व्यवहार को अनुकूलित करना

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

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

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

डिफ़ॉल्ट कैरियर ऐप platform/frameworks/base/packages/CarrierDefaultApp/ .

कार्यान्वयन

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

कार्यान्वयन परिचय

सिग्नल

एंड्रॉइड फ्रेमवर्क निम्नलिखित पैरामीटरयुक्त सिग्नलों पर क्रियाओं को कॉन्फ़िगर करने का समर्थन करता है:

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

    टेलीफोनी ढाँचा इन क्रियाओं को संबंधित संकेतों पर मैप करता है।

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

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

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

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

मान्यकरण

इस सुविधा के लिए कोई सीटीएस, सीटीएस सत्यापनकर्ता या जीटीएस परीक्षण नहीं हैं।

सुविधा को मान्य करने के लिए इन मैन्युअल सत्यापन परीक्षणों का उपयोग करें:

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

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