ব্যালেন্স নেই এমন ব্যবহারকারীদের জন্য ডিভাইসের আচরণ কাস্টমাইজ করা

ডেটা ব্যালেন্স না থাকা Android ডিভাইস নেটওয়ার্ক ট্রাফিককে অনুমতি দেয়, যার জন্য পরিষেবা প্রদানকারী ও টেলিকম কোম্পানিকে মিটিগেশন প্রোটোকল প্রয়োগ করতে হয়। Android একটি সাধারণ সমাধান প্রয়োগ করে যা পরিষেবা প্রদানকারী ও টেলিকম কোম্পানিকে এটি ইঙ্গিত করতে দেয় যে কোনও ডিভাইসের ব্যালেন্স শেষ হয়ে গেছে।

Android প্ল্যাটফর্ম, ক্যাপটিভ পোর্টাল শনাক্তকরণ সিগন্যালের উপর ভিত্তি করে ট্রাফিক কমানোর জন্য ডিফল্ট আচরণ সহ একটি ডিফল্ট কেরিয়ার অ্যাপ প্রদান করে। এছাড়াও, এটি পরিষেবা প্রদানকারী ও OEM-কে কম খরচে ও অত্যন্ত নমনীয়তার সাথে আচরণ কাস্টমাইজ করার সুযোগ দেয়।

উদাহরণ ও সোর্স

ডিফল্ট ক্যারিয়ার অ্যাপ এখানে থাকে:platform/frameworks/base/packages/CarrierDefaultApp/.

প্রয়োগ

ডিফল্ট ক্যারিয়ার অ্যাপটি কনফিগার করা হয়েছে যাতে কনফিগার না করা ক্যারিয়ারগুলির জন্য আরও ভালো অভিজ্ঞতা প্রদান করা যায়। পরিষেবা প্রদানকারী এই ডিফল্ট আচরণ ব্যবহার করতে পারে। এছাড়াও, ক্যারিয়ার কনফিগারেশন XML ফাইলে সিগন্যাল-অ্যাকশন ম্যাপিং যোগ করে ডিফল্ট অ্যাকশন ওভাররাইড করতে পারবেন। তারা ডিফল্ট অ্যাপ ব্যবহার না করার সিদ্ধান্ত নিতে পারে এবং পরিবর্তে তাদের নিজস্ব স্ট্যান্ডঅ্যালোন ক্যারিয়ার অ্যাপের সাথে 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
             });
    

    টেলিফোনি ফ্রেমওয়ার্ক এইসব অ্যাকশনকে সংশ্লিষ্ট সিগন্যালে ম্যাপ করে।

ডিফল্ট অ্যাকশন ওভাররাইড করা

আপনি সিগন্যাল কী (যা CarrierConfigManager.java-এ সংজ্ঞায়িত করা হয়েছে) এর সাথে অ্যাকশন আইডি যুক্ত করে ক্যারিয়ার কনফিগার XML ফাইলে কাজ করে এমন সিগন্যালের জন্য কাস্টম অ্যাকশন সংজ্ঞায়িত করতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত ম্যাপিং মিটার করা APN বন্ধ করে এবং রিডাইরেকশনের সময় একটি পোর্টাল বিজ্ঞপ্তি দেখায়:

<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. ব্যালেন্স শেষ হয়ে গেলে নেটওয়ার্ক ট্রাফিক বন্ধ হয়ে গেছে কিনা এবং বিজ্ঞপ্তি UI দেখা যাচ্ছে কিনা তা যাচাই করুন।
  4. ব্যালেন্স না থাকা অবস্থায় ভয়েস কল/VoLTE ফাংশন যাচাই করুন।
  5. ব্যালেন্স না থাকলে ভিডিও কলিং ব্লক করা হয়েছে কিনা তা যাচাই করুন।
  6. ওয়াই-ফাই চালু থাকলে, ব্যবহারকারী ওয়েব ব্রাউজ করা চালিয়ে যেতে পারবেন কিনা তা যাচাই করুন এবং ব্যালেন্স শেষ হয়ে গেলে ব্রাউজিং ট্রাফিক নেটওয়ার্ক ট্রাফিক চালু করে না।
  7. আউট-অফ-ব্যালেন্স অবস্থায় ওয়াই-ফাই, WFC ও ব্লুটুথ ফাংশন যাচাই করুন।
  8. ওয়াই-ফাই বন্ধ করুন। ব্যালেন্স শেষ হয়ে যাওয়া সংক্রান্ত বিজ্ঞপ্তি UI যাচাই করুন এবং সাধারণ ব্রাউজিং ট্রাফিক যেন টেলকো রেজিস্ট্রেশন ওয়েবসাইটে রিডাইরেক্ট না হয় তা নিশ্চিত করুন। যাচাই করুন বিজ্ঞপ্তি UI-তে লিঙ্কে ক্লিক করলে ব্রাউজারটি টেলকো রেজিস্ট্রেশন ওয়েবসাইটে নিয়ে যায়।
  9. বিমান মোড টগল করলে ট্রাফিক থ্রটলিং স্টেট রিসেট হয় না তা যাচাই করুন।
  10. চালু থাকা সিম কার্ড অদল-বদল করলে নেটওয়ার্ক ট্রাফিক স্টেট রিসেট হয়ে যায় কিনা তা যাচাই করুন।
  11. ব্যালেন্স শেষ হয়ে যাওয়া সিম কার্ড আবার ঢোকানোর ফলে ট্রাফিক রিডাইরেকশন আবার শুরু হয় এবং নেটওয়ার্ক ট্রাফিক থ্রটলিং আবার পাওয়া যায় কিনা তা যাচাই করুন।
  12. ফোন রিবুট করলে যে রিডাইরেকশন আবার অ্যাক্টিভেট হয়ে যায় এবং ট্রাফিক থ্রটল ও বিজ্ঞপ্তি UI ফিরে আসে তা যাচাই করুন।
  13. "ক্যাপটিভ পোর্টাল" বিজ্ঞপ্তিতে ট্যাপ করুন। ব্যবহারকারীকে ক্রেডিট যোগ করতে দেওয়ার জন্য বিধিনিষেধযুক্ত নেটওয়ার্ক কানেকশন তৈরি হয়েছে কিনা তা যাচাই করুন।
  14. সিম ব্যালেন্স রিফিল বা আবার চালু করার ফলে মোবাইল নেটওয়ার্ক ট্রাফিক রিস্টোর হয় এবং টেলকো লিঙ্ক ও ব্যালেন্স নেই সংক্রান্ত বিজ্ঞপ্তি আর দেখা যায় না কিনা তা যাচাই করুন।
  15. ডেটা পরিষেবা ফিরিয়ে আনার পরে স্যানিটি টেস্ট।

ডিফল্ট অ্যাপে ইউনিট টেস্টের কিছু উদাহরণ ও সেগুলি রান করানোর জন্য স্ক্রিপ্ট দেওয়া আছে (tests/runtest.sh দেখুন)। আপনি কাস্টমাইজ করা ভার্সন বা ব্যবহার প্রয়োগ করলে, আপনাকে সেইসব কাস্টমাইজেশনকে নির্দিষ্ট ইউনিট টেস্টে মিরর করতে হবে।