আপনার অ্যাপে 5G ক্ষমতা যোগ করুন

অ্যান্ড্রয়েড ১১ আপনার অ্যাপে ৫জি সাপোর্ট করার কার্যকারিতা যোগ করেছে। এই আলোচনায় সেই কার্যকারিতাটি তুলে ধরা হয়েছে এবং আপনার অ্যাপে ৫জি-নির্দিষ্ট কার্যকারিতা যোগ করে কীভাবে ব্যবহারকারীর অভিজ্ঞতা উন্নত করা যায়, তার একটি সার্বিক ধারণা দেওয়া হয়েছে।

5G এর জন্য তৈরি করুন

5G কীভাবে ব্যবহার করবেন সেই সিদ্ধান্ত নেওয়ার সময়, আপনি কী ধরনের অভিজ্ঞতা তৈরি করতে চাইছেন, তা নিয়ে ভাবুন। যেসব উপায়ে 5G আপনার অ্যাপকে উন্নত করতে পারে, তার মধ্যে কয়েকটি হলো:

  • 5G-এর গতি এবং ল্যাটেন্সির উন্নতির কারণে বর্তমান অভিজ্ঞতা স্বয়ংক্রিয়ভাবে আরও দ্রুত এবং উন্নত হোক।
  • ব্যবহারকারীর অভিজ্ঞতা উন্নত করুন, যেমন 4k ভিডিও দেখিয়ে অথবা উচ্চ-রেজোলিউশনের গেম অ্যাসেট ডাউনলোড করে।
  • অতিরিক্ত ডেটা ব্যবহারের জন্য ব্যবহারকারীর কোনো খরচ হবে না, এটি নিশ্চিত করার পর, এমন সব অভিজ্ঞতা অন্তর্ভুক্ত করুন যা সাধারণত শুধু ওয়াই-ফাই-এর মাধ্যমেই পাওয়া যায়; যেমন, আনলিমিটেড ওয়াই-ফাই-এর জন্য সংরক্ষিত কন্টেন্ট আগে থেকেই ডাউনলোড করে রাখা।
  • 5G-এর এমন অনন্য অভিজ্ঞতা প্রদান করুন যা শুধুমাত্র উচ্চ গতি এবং কম ল্যাটেন্সিতে কাজ করে।

5G কার্যকারিতা

অ্যান্ড্রয়েড ১১-এ নিম্নলিখিত কার্যকারিতা পরিবর্তন এবং উন্নতিগুলো আনা হয়েছে:

মিটারিং পরীক্ষা করুন

NET_CAPABILITY_TEMPORARILY_NOT_METERED হলো অ্যান্ড্রয়েড ১১-এ যুক্ত হওয়া একটি ক্যাপাবিলিটি, যা সেলুলার ক্যারিয়ারদের দেওয়া তথ্যের ভিত্তিতে আপনাকে জানায় যে আপনি যে নেটওয়ার্কটি ব্যবহার করছেন তা আনমিটারড কিনা।

নতুন ফ্ল্যাগটি NET_CAPABILITY_NOT_METERED পাশাপাশি ব্যবহৃত হয়। বিদ্যমান ফ্ল্যাগটি নির্দেশ করে যে একটি নেটওয়ার্ক সর্বদা আনমিটারড কিনা, এবং এটি ওয়াই-ফাই ও সেলুলার উভয় সংযোগের ক্ষেত্রেই প্রযোজ্য।

দুটি ফ্ল্যাগের মধ্যে পার্থক্য হলো, নেটওয়ার্কের ধরন পরিবর্তন না হলেও NET_CAPABILITY_TEMPORARILY_NOT_METERED ফ্ল্যাগটি পরিবর্তিত হতে পারে। অ্যান্ড্রয়েড ১১-কে লক্ষ্য করে তৈরি অ্যাপগুলো NET_CAPABILITY_TEMPORARILY_NOT_METERED ফ্ল্যাগটি ব্যবহার করতে পারে। অ্যান্ড্রয়েড ৯ এবং তার নিচের সংস্করণে চালিত ডিভাইসগুলোতে, অপারেটিং সিস্টেম এই ফ্ল্যাগটি সম্পর্কে কোনো তথ্য দেয় না। অ্যান্ড্রয়েড ১০-এ চালিত অ্যাপগুলোর ক্ষেত্রে, এটি কোন ডিভাইসে চলছে তার উপর নির্ভর করে এই ফ্ল্যাগটি উপলব্ধ থাকতে পারে।

একবার আপনি নিশ্চিত হয়ে গেলে যে বর্তমান নেটওয়ার্কটি সাময়িকভাবে বা স্থায়ীভাবে আনমিটারড, তখন আপনি উচ্চ-রেজোলিউশনের কন্টেন্ট (যেমন 4k ভিডিও) প্রদর্শন করতে, লগ আপলোড করতে, ফাইল ব্যাক আপ করতে এবং আগে থেকেই কন্টেন্ট ডাউনলোড করতে পারবেন।

নিম্নলিখিত বিভাগগুলিতে আপনার অ্যাপে মিটার-চেকিং যুক্ত করার ধাপগুলি আলোচনা করা হয়েছে।

একটি নেটওয়ার্ক কলব্যাক নিবন্ধন করুন

NetworkCapabilities কখন পরিবর্তিত হয় তা জানতে ConnectivityManager.registerDefaultNetworkCallback() ব্যবহার করে একটি নেটওয়ার্ক কলব্যাকের জন্য নিবন্ধন করুন। আপনি আপনার NetworkCallbackonCapabilitiesChanged() পদ্ধতিটি ওভাররাইড করে NetworkCapabilities এর পরিবর্তনগুলি শনাক্ত করতে পারেন।

registerDefaultNetworkCallback() ফাংশনটি নিবন্ধিত হওয়ার সাথে সাথেই রেজিস্টার্ড কলব্যাকটিকে ট্রিগার করে, যা অ্যাপকে বর্তমান অবস্থা সম্পর্কে তথ্য দেয়। যখন স্টেট আনমিটারড থেকে মিটারড বা এর বিপরীতক্রমে পরিবর্তিত হয়, তখন অ্যাপের যথাযথ ব্যবস্থা গ্রহণের জন্য ফিউচার কলব্যাকগুলো অত্যন্ত গুরুত্বপূর্ণ।

মিটার আছে কিনা যাচাই করুন

নিম্নলিখিত কোডের আউটপুট পরীক্ষা করতে, নেটওয়ার্ক কলব্যাকে প্রাপ্ত NetworkCapabilites অবজেক্টটি ব্যবহার করুন:

কোটলিন

NetworkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED) ||
  NetworkCapabilities.hasCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED)

জাভা

NetworkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED) ||
  NetworkCapabilities.hasCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED)

যদি মানটি 'true' হয়, তাহলে আপনি নেটওয়ার্কটিকে আনমিটারড হিসেবে বিবেচনা করতে পারেন।

অতিরিক্ত বিবেচ্য বিষয়

এই কার্যকারিতাটি নিয়ে কাজ করার সময় নিম্নলিখিত বিষয়গুলো মনে রাখবেন:

  • NET_CAPABILITY_TEMPORARILY_NOT_METERED ফ্ল্যাগটি ব্যবহার করার জন্য আপনার অ্যাপটিকে Android 11 SDK-এর সাথে কম্পাইল করতে হবে।

  • NET_CAPABILITY_NOT_METERED ক্যাপাবিলিটিটি একটি নেটওয়ার্কে স্থায়ী। এই ক্যাপাবিলিটিযুক্ত কোনো নেটওয়ার্ক যদি তার সক্ষমতা হারায় (মিটারড হয়ে যায়), তবে সেটি স্বয়ংক্রিয়ভাবে সংযোগ বিচ্ছিন্ন করে ফেলবে।

  • এর বিপরীতে, কোনো নেটওয়ার্ক সংযোগ বিচ্ছিন্ন না হয়েও NET_CAPABILITY_TEMPORARILY_NOT_METERED পরিবর্তিত হতে পারে। তাই, নেটওয়ার্কটি যখন তার মিটারড স্ট্যাটাসে ফিরে আসে (অর্থাৎ NET_CAPABILITY_TEMPORARILY_NOT_METERED ক্যাপাবিলিটিটি হারায়), তখন তা হ্যান্ডেল করার জন্য অ্যাপগুলোকে অবশ্যই onCapabilitiesChanged() কলব্যাকটি শুনতে হবে।

  • একটি নেটওয়ার্কে একই সময়ে NET_CAPABILITY_NOT_METERED এবং NET_CAPABILITY_TEMPORARILY_NOT_METERED উভয়ই থাকতে পারে না।

5G সনাক্তকরণ

অ্যান্ড্রয়েড ১১ থেকে, একটি কলব্যাক-ভিত্তিক এপিআই কল ব্যবহার করে ডিভাইসটি ৫জি নেটওয়ার্কে সংযুক্ত আছে কিনা তা শনাক্ত করা যায়। সংযোগটি ৫জি এনআর (স্ট্যান্ডঅ্যালোন) নাকি এনএসএ (ননস্ট্যান্ডঅ্যালোন) নেটওয়ার্ক, তাও যাচাই করা যায়।

এই এপিআই কলটির কিছু ব্যবহার নিচে দেওয়া হলো:

  • আপনি যে একটি অনন্য 5G অভিজ্ঞতা প্রদান করছেন, তা তুলে ধরতে আপনার অ্যাপে 5G ব্র্যান্ডিং প্রদর্শন করুন।

  • শুধুমাত্র 5G নেটওয়ার্কে থাকলেই অ্যাপে একটি অনন্য 5G অভিজ্ঞতা সক্রিয় করা যায়। এই স্ট্যাটাস চেকের সাথে আপনার মিটার আছে কিনা তাও যাচাই করে নেওয়া উচিত।

  • বিশ্লেষণমূলক উদ্দেশ্যে ৫জি সংযোগগুলোর ওপর নজর রাখা।

5G ডিভাইস ছাড়াই 5G শনাক্তকরণ পরীক্ষা করতে, আপনি অ্যান্ড্রয়েড এসডিকে এমুলেটরে যুক্ত করা ফিচারগুলো ব্যবহার করতে পারেন।

5G সনাক্ত করুন

ব্যবহারকারীর 5G নেটওয়ার্ক সংযোগ আছে কিনা তা নির্ধারণ করতে, LISTEN_DISPLAY_INFO_CHANGED পাস করে TelephonyManager.listen() কল করুন। প্রদর্শনের জন্য ব্যবহৃত নেটওয়ার্কের ধরন নির্ধারণ করতে onDisplayInfoChanged() মেথডটি ওভাররাইড করুন। একটি ব্যতিক্রম হলো, যদি ক্যারিয়ার তাদের mmWave নেটওয়ার্কের জন্য RAT হিসেবে 5G দেখানোর সিদ্ধান্ত নেয়, তাহলে OVERRIDE_NETWORK_TYPE_NR_NSA রিটার্ন করা হয়।

নিম্নলিখিত সারণিতে মানগুলির সাথে সঙ্গতিপূর্ণ নেটওয়ার্কগুলি দেখানো হয়েছে:

রিটার্ন টাইপ নেটওয়ার্ক
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO অ্যাডভান্সড প্রো এলটিই (5Ge)
OVERRIDE_NETWORK_TYPE_NR_NSA 5G সাব-6 নেটওয়ার্কের জন্য NR (5G)
OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE 5G mmWave নেটওয়ার্কের জন্য (5G+/5G UW)

ব্যান্ডউইথ অনুমান

ব্যান্ডউইথ অনুমান করতে NetworkCapabilities অবজেক্টটি ব্যবহৃত হয়, যা আপনি মিটারিং নির্ধারণের সময়ও ব্যবহার করে থাকেন। আপনি সেই অবজেক্টটি ব্যবহার করে ব্যান্ডউইথের আনুমানিক হিসাব পেতে পারেন।

ফ্রেমওয়ার্ক সাপোর্টের আপগ্রেড এবং 5G সমর্থনের জন্য প্ল্যাটফর্ম/মোডেমের বাগ ফিক্স করার কারণে অ্যান্ড্রয়েড ১১-এ getLinkDownstreamBandwidthKbps() এবং getLinkUpstreamBandwidthKbps() ব্যান্ডউইথ অনুমান পদ্ধতির নির্ভরযোগ্যতা ও নির্ভুলতা উন্নত হয়েছে।

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