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

আপনার অ্যাপে 5G কাজ করার জন্য Android 11-এ কার্যকারিতা যোগ করা হয়েছে। এই বিষয়টি কার্যকারিতা কভার করে এবং আপনার অ্যাপে 5G-নির্দিষ্ট কার্যকারিতা যোগ করলে ব্যবহারকারীর অভিজ্ঞতা কীভাবে উন্নত হতে পারে তার একটি ওভারভিউ দেয়।

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

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

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

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

Android 11-এ নিম্নলিখিত কার্যকারিতা পরিবর্তন ও উন্নতি করা হয়েছে:

মিটার্ডনেস চেক করুন

NET_CAPABILITY_TEMPORARILY_NOT_METERED হল Android ১১-এ যোগ করা একটি ক্ষমতা যা আপনাকে বলে যে আপনি যে নেটওয়ার্ক ব্যবহার করছেন সেটি মোবাইল পরিষেবা প্রদানকারীর দেওয়া তথ্যের ভিত্তিতে আনলিমিটেড কিনা।

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

দুটি ফ্ল্যাগের মধ্যে পার্থক্য হল NET_CAPABILITY_TEMPORARILY_NOT_METERED নেটওয়ার্কের ধরন পরিবর্তন না করেই পরিবর্তন হতে পারে। Android ১১-কে টার্গেট করে এমন অ্যাপ NET_CAPABILITY_TEMPORARILY_NOT_METERED ফ্ল্যাগ ব্যবহার করতে পারে। Android 9 এবং তার আগের ভার্সনে চলা ডিভাইসে, OS ফ্ল্যাগ সম্পর্কে রিপোর্ট করবে না। Android 10-এ চলা অ্যাপের জন্য, এই ফ্ল্যাগ উপলভ্য হতে পারে, এটি নির্ভর করে যে ডিভাইসে এটি চলছে তার উপর।

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

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

নেটওয়ার্ক কলব্যাক রেজিস্টার করুন

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

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

মিটার করা হয়েছে কিনা তা চেক করুন

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

Kotlin

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)

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

বিবেচনায় রাখার মতো আরও জিনিস

এই ফাংশনালিটি ব্যবহার করার সময়, নিম্নলিখিত বিষয়গুলি মনে রাখবেন:

  • NET_CAPABILITY_TEMPORARILY_NOT_METERED ফ্ল্যাগ ব্যবহার করার জন্য আপনাকে Android ১১ 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 শনাক্তকরণ

Android 11 থেকে শুরু করে, আপনি কলব্যাক-ভিত্তিক API কল ব্যবহার করে ডিভাইসটি 5G নেটওয়ার্কের সাথে কানেক্ট করা আছে কিনা তা শনাক্ত করতে পারবেন। কানেকশনটি 5G NR (স্ট্যান্ডঅ্যালোন) নাকি NSA (নন-স্ট্যান্ডঅ্যালোন) নেটওয়ার্ক তা আপনি চেক করে দেখতে পারেন।

এই API কলের কিছু ব্যবহারের মধ্যে অন্তর্ভুক্ত থাকতে পারে:

  • আপনার অ্যাপে 5G ব্র্যান্ডিং দেখানো যাতে আপনি যে অনন্য 5G অভিজ্ঞতা অফার করছেন তা হাইলাইট করা যায়।

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

  • বিশ্লেষণের উদ্দেশ্যে 5G কানেকশনের উপর নজর রাখা।

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

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

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

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

রিটার্নের ধরন নেটওয়ার্ক
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO Advanced pro LTE (5Ge)
OVERRIDE_NETWORK_TYPE_NR_NSA 5G Sub-6 নেটওয়ার্কের জন্য NR (5G)
OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE 5G mmWave নেটওয়ার্কের জন্য (5G+/5G UW)

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

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

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

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