সেল ব্রডকাস্ট

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

প্যাকেজ ফরম্যাট

সেলব্রডকাস্ট মডিউলটি নিম্নলিখিত পরিষেবা এবং অ্যাপ নিয়ে গঠিত।

  • CellBroadcastService পরিষেবাটি CellBroadcast SMS ডিকোডিং, ওয়্যারলেস ইমার্জেন্সি অ্যালার্ট (WEA) 3.0-এর জন্য জিওফেন্সিং, মেসেজ ডুপ্লিকেশন চেক এবং অ্যাপে মেসেজ ব্রডকাস্ট করা সমর্থন করে। এটি একটি ওয়ান-টু-মেনি জিওটার্গেটেড এবং জিওফেন্সড মেসেজিং পরিষেবা, যা একটি নির্দিষ্ট এলাকার মধ্যে একই সময়ে একাধিক মোবাইল ফোন ব্যবহারকারীর কাছে মেসেজ পৌঁছে দেওয়ার জন্য ডিজাইন করা হয়েছে। এই পরিষেবাটি ETSI GSM কমিটি এবং 3GPP দ্বারা সংজ্ঞায়িত এবং এটি টেলিযোগাযোগ মানগুলির একটি অংশ।

  • CellBroadcastReceiver অ্যাপটি একটি ডিফল্ট সিস্টেম অ্যাপ, যা জরুরি এবং অ-জরুরি সতর্কতা (যেমন অ্যাম্বার এবং প্রেসিডেন্সিয়াল অ্যালার্ট) পরিচালনা করে এবং ক্যারিয়ার ও আঞ্চলিক নিয়মকানুন অনুসারে ব্যবহারকারীদের কাছে তথ্য উপস্থাপন করে।

সেলব্রডকাস্ট বার্তা প্রবাহ

নিম্নোক্ত চিত্রে সেলব্রডকাস্ট বার্তা প্রবাহ দেখানো হয়েছে।

সেল ব্রডকাস্ট রিসিভার বার্তা প্রবাহ

চিত্র ১. সেল ব্রডকাস্ট রিসিভার বার্তা প্রবাহ

  1. রেডিও ইন্টারফেস লেয়ার (RIL) একটি CDMA/GSM সেলব্রডকাস্ট SMS সম্পর্কে InBoundSMSHandler অবহিত করে।

  2. ফ্রেমওয়ার্কটি আগত বার্তাটি পার্স ও প্রসেস করার জন্য সেলব্রডকাস্ট এসএমএস-টি সিবিএস মডিউলে ফরোয়ার্ড করে।

  3. বার্তাটি প্রক্রিয়াজাত হওয়ার পর, CellBroadcastService ইন্টেন্টটি সিস্টেমের ডিফল্ট CellBroadcastReceiver অ্যাপে ফরোয়ার্ড করে দেয়।

  4. CellBroadcastReceiver অ্যাপটি ব্যবহারকারীকে বার্তাটি প্রদর্শন করে।

মডিউল ফরম্যাট

CellBroadcastService এবং CellBroadcastReceiver অ্যাপ দুটি একটিমাত্র APEX ফাইলে ( com.android.cellbroadcast ) অন্তর্ভুক্ত, যা Android 11 বা তার উচ্চতর সংস্করণে চালিত ডিভাইসগুলোর জন্য উপলব্ধ। এই মডিউলটি package/app/CellBroadcastReceiver এ কোড অন্তর্ভুক্ত করে এবং বিদ্যমান ফ্রেমওয়ার্ক ক্লাসগুলোকে packages/modules/CellBroadcastService এ স্থানান্তর করে।

মডিউল নির্ভরতা

CellBroadcast মডিউলটি শুধুমাত্র স্থিতিশীল @SystemApi (কোনো @hide API নয়) ব্যবহার করে ফ্রেমওয়ার্কের সাথে যোগাযোগ করে এবং নিম্নলিখিত স্ট্যাটিক লাইব্রেরিগুলোর উপর নির্ভরশীল।

  • Androidx.legacy_legacy-support-v13
  • Androidx.recyclerview_recyclerview
  • Androidx.preference_preference
  • androidx.legacy_legacy-preference-v14
  • androidx.appcompat_appcompat

আপনি রানটাইম রিসোর্স ওভারলে (RRO) ব্যবহার করে কনফিগারেশনটি কাস্টমাইজ করতে পারেন।

অনুমতি কনফিগারেশন

CellBroadcast মডিউলটি প্ল্যাটফর্ম সিগনেচারের পরিবর্তে একটি গুগল সিগনেচার দিয়ে স্বাক্ষরিত, যার ফলে মডিউলটি সিগনেচার পারমিশন ব্যবহারের সুযোগ হারায়। এর পরিবর্তে, অ্যান্ড্রয়েড ১১ CellBroadcast মডিউলের ভিতরে com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY নতুন সিগনেচার পারমিশনটি সংজ্ঞায়িত করে; শুধুমাত্র মডিউলের ভেতরের প্যাকেজগুলোই এই পারমিশনটি পেতে পারে, কারণ সেগুলো একই কী (key) দিয়ে স্বাক্ষরিত। এই পারমিশনটি CellBroadcastReceiver অ্যাপকে CellBroadcastService-এর ভেতরের ডেটাবেসে সম্পূর্ণ অ্যাক্সেস দেয়।

প্ল্যাটফর্মটি জরুরি সতর্কতার ইতিহাস অ্যাক্সেস করার জন্য ডিফল্ট সিস্টেম এসএমএস অ্যাপকে android.permission.READ_CELL_BROADCASTS রানটাইম পারমিশন প্রদান করে।

CellBroadcast মডিউলটি একীভূত করুন

এই অংশে সেলব্রডকাস্ট মডিউলটি কীভাবে একীভূত করতে হয় তা বর্ণনা করা হয়েছে।

সেটিংসের সাথে একীভূত করুন

আপনি সেটিংস অ্যাপে CellBroadcast সেটিংস কোথায় যুক্ত করবেন তা নির্ধারণ করতে পারেন (ব্যবহারকারীরা সেটিংস > অ্যাপস ও নোটিফিকেশন > অ্যাডভান্সড > ইমার্জেন্সি অ্যালার্ট থেকে CellBroadcast সেটিংস পেজটি অ্যাক্সেস করতে পারেন)। সেটিংস অ্যাপ থেকে CellBroadcastReceiver অ্যাপটি চালু করতে, com.android.cellbroadcastreceiver প্যাকেজ নামটি দিয়ে নিম্নলিখিত সেটিং কনফিগারেশনগুলো পরিবর্তন করুন।

<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>

মেসেজিং অ্যাপের সাথে একীভূত করুন

CellBroadcast মেসেজ হিস্ট্রি খোলার জন্য আপনি মেসেজিং অ্যাপে একটি অ্যাপ লিঙ্ক যুক্ত করতে পারেন। অ্যান্ড্রয়েড মেসেজিং অ্যাপে, এটি Settings > Advanced > Emergency alert-এর মধ্যে অন্তর্ভুক্ত করা হয়েছে। আপনার নিজের মেসেজিং অ্যাপে একটি লিঙ্ক যুক্ত করতে, মেসেজিং অ্যাপে পাথটি নির্ধারণ করুন এবং CellBroadcast মডিউলের জন্য কম্পোনেন্ট নামটি com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity হিসেবে কনফিগার করুন।

এসএমএস ইনবক্সের সাথে সংযুক্ত করুন

একটি রানটাইম রিসোর্স ওভারলে ব্যবহার করে নিম্নলিখিত কনফিগারেশনটি ওভাররাইড করার মাধ্যমে আপনি ডিফল্ট মেসেজিং অ্যাপে সেলব্রডকাস্ট বার্তা প্রদর্শন সক্ষম করতে পারেন।

<item type="bool" name="enable_write_alerts_to_sms_inbox" />

যেহেতু অনুমতি প্রদান করা CellBroadcast মডিউলের আওতার বাইরে, তাই এন্ড-টু-এন্ড সাপোর্ট প্রদানের জন্য আপনাকে অবশ্যই CellBroadcast মডিউলকে AppOpsManager.OP_WRITE_SMS অনুমতিটি প্রদান করতে হবে। একটি AOSP রেফারেন্স ইমপ্লিমেন্টেশনের জন্য, এই SmsApplication.java প্যাচটি দেখুন।

CellBroadcastReceiver অ্যাপটি চালু করুন

CellBroadcastReceiver অ্যাপটি চালু করার নিম্নলিখিত উপায়গুলো রয়েছে।

  • সেটিংস অ্যাপ মেনু।

  • একটি অ্যাপ (তৃতীয় পক্ষের অ্যাপ সহ), যেমন একটি মেসেজ অ্যাপ, যা সেলব্রডকাস্ট মেসেজ হিস্টোরির সাথে সংযুক্ত থাকে।

  • (ঐচ্ছিক) অ্যান্ড্রয়েড হোম স্ক্রিন থেকে OEM দ্বারা যোগ করা একটি লঞ্চ আইকন। বিস্তারিত জানতে, লঞ্চ আইকন যোগ করা দেখুন।

CellBroadcastReceiver অ্যাপের সেটিংস

নিম্নলিখিত স্ক্রিনশটগুলিতে CellBroadcastReceiver অ্যাপের সেটিংস মেনু দেখানো হয়েছে।

CellBroadcastReceiver অ্যাপের সেটিংস মেনু

চিত্র ২. CellBroadcastReceiver অ্যাপের সেটিংস মেনু

জরুরি সতর্কতার ইতিহাস

চিত্র ৩. জরুরি সতর্কতার ইতিহাস স্ক্রিন

লঞ্চ আইকন যোগ করুন

আপনি অ্যাপ লঞ্চার থেকে এবং আপনার নিজস্ব লঞ্চ আইকনগুলোর মাধ্যমে সেলব্রডকাস্ট মেসেজ হিস্ট্রি অ্যাক্সেস করা সক্ষম করতে পারেন।

  • অ্যাপ লঞ্চার থেকে মেসেজ হিস্ট্রি অ্যাক্সেস করা সক্ষম করতে, একটি RRO ব্যবহার করে নিম্নলিখিত কনফিগারেশনটি ওভাররাইড করুন।

    <item type="bool" name="show_message_history_in_launcher" />
    
  • AOSP-এর ডিফল্ট আইকনটি পরিবর্তন করতে, একটি RRO ব্যবহার করে নিম্নলিখিত কনফিগারেশনটি পরিবর্তন করুন।

    <!-- Customize launcher icon for cellbroadcast history -->
    <item type="mipmap" name="ic_launcher_cell_broadcast" />
    

CMAS গোপন কোডটি সক্রিয় করুন

CMAS গোপন কোড, *#*#CMAS#*#* (ডায়াল প্যাডে *#*#2627#*#* ) সক্রিয় করতে, একটি ডায়ালার অ্যাপকে অবশ্যই *#*# code #*#* ফর্ম্যাটে বিশেষ ডায়ালার কোডটির জন্য লিসেন করতে হবে এবং sendDialerSpecialCode পাবলিক মেথডটি ব্যবহার করে কোডটি হ্যান্ডেল করতে হবে।

এলাকা সংক্রান্ত তথ্যের প্রয়োজনীয়তা: চ্যানেল ৫০

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

অ্যান্ড্রয়েড CellBroadcastService ইমপ্লিমেন্টেশনটি সেটিংস এবং SysUI অ্যাপের জন্য সেল ব্রডকাস্ট সার্ভিসে নিম্নলিখিত API-গুলো সমর্থন করে, যার মাধ্যমে ব্রডকাস্ট চ্যানেল ৫০-এর তথ্য পাওয়া যায়। এটি ইমপ্লিমেন্ট করতে, নিম্নলিখিত পদক্ষেপগুলো অনুসরণ করুন:

  • একটি RRO-এর মাধ্যমে android.telephony.action.AREA_INFO_UPDATED ব্রডকাস্টটি রেজিস্টার করুন এবং রিসিভার প্যাকেজের নাম config_area_info_receiver_packages কে ওভাররাইড করুন।

  • CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE এর সাথে সংযুক্ত করুন।

যেহেতু সেটিংস এবং SysUI অ্যাপগুলো CellBroadcast মডিউলের আওতার বাইরে, তাই এন্ড-টু-এন্ড সাপোর্ট প্রদানের জন্য আপনাকে অবশ্যই SystemUI অথবা সেটিংস অ্যাপে আপনার পরিবর্তনগুলো প্রয়োগ করতে হবে। একটি রেফারেন্স ইমপ্লিমেন্টেশনের জন্য CellBroadcastService সেটিংস অ্যাপটি দেখুন।

কাস্টমাইজেশন

আপনি সরাসরি CellBroadcast মডিউলের সোর্স কোড পরিবর্তন করতে পারবেন না, তবে রানটাইম রিসোর্স ওভারলে (RRO) ব্যবহার করে প্যারামিটার সক্রিয় (বা নিষ্ক্রিয়) করতে পারেন (উদাহরণস্বরূপ, আপনি নোটিফিকেশনের রঙ এবং ডায়ালগের মাত্রা কাস্টমাইজ করতে পারেন)। CellBroadcast মডিউলে ব্যবহৃত প্যারামিটারগুলির ডিফল্ট মান ওভাররাইড করতে, টার্গেট প্যাকেজের নাম পরিবর্তন করে com.android.cellbroadcastreceiver করুন। এছাড়াও:

  • ওভারলেযোগ্য কনফিগারেশনগুলির তালিকার জন্য overlayable.xml ফাইলটি দেখুন।

  • বাস্তবায়নের একটি উদাহরণের জন্য, AOSP-তে থাকা RROSampleTestApp দেখুন।

যদি ইমপ্লিমেন্টেশনে UI স্ট্রিং অনুবাদ রিসোর্স অনুপস্থিত থাকে অথবা অনুবাদগুলো আপনার প্রত্যাশা পূরণ না করে, তাহলে আপনি একটি RRO ব্যবহার করে অনুবাদ রিসোর্স ওভাররাইড করতে পারেন অথবা সেলব্রডকাস্ট মডিউলে স্ট্রিং অনুবাদ আপস্ট্রিম করার জন্য গুগল অনুবাদ দলের সাথে কাজ করতে পারেন। আপনি যদি অনুবাদ রিসোর্স ওভাররাইড করেন, তবে ওভাররাইডের অনুমতি দেওয়ার জন্য গুগলকে অবশ্যই overlayable.xml এ সেই স্ট্রিংগুলো প্রকাশ করতে হবে। UI কাস্টমাইজেশনের জন্য আপনার যদি আরও কনফিগারেশনের প্রয়োজন হয়, তাহলে সেলব্রডকাস্ট সাপোর্ট গ্রুপের সাথে যোগাযোগ করুন।

ডেটা স্থানান্তর করুন

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

যেসব ডিভাইস CellBroadcast মডিউল ব্যবহার করার জন্য আপগ্রেড করা হয়েছে, সেগুলিতে মডিউলটি সু-সংজ্ঞায়িত cellbroadcast-legacy অথরিটির মাধ্যমে AOSP LegacyCellBroadcastApp অথবা OEM-সংজ্ঞায়িত CellBroadcastContentProvider APK থেকে ডেটা সংগ্রহ করে।

একটি OEM-সংজ্ঞায়িত CellBroadcastContentProvider APK ব্যবহার করুন

একটি CellBroadcastContentProvider APK নির্ধারণ করার সময়, APK-টিকে অবশ্যই এই নির্দিষ্টকরণগুলি অনুসরণ করতে হবে।

  • এই APK-টি একটি হেডলেস APK, যা cellbroadcast-legacy অথরিটি সম্পন্ন একটি ContentProvider অবজেক্টের মাধ্যমে শুধুমাত্র এর ডাটাবেস এবং SharedPreferences এর বিষয়বস্তু প্রকাশ করে এবং এটি থার্ড-পার্টি অ্যাপের কাছে অ্যাক্সেসযোগ্য নয়।

  • APK-টি OEM দ্বারা তৈরি এবং মালিকানাধীন, যেখানে OEM তাদের গোপন API স্কিমা হোস্ট করা চালিয়ে যেতে পারে।

SharedPreferences CellBroadcast মডিউলে স্থানান্তরিত করতে, CellBroadcastContentProvider APK-কে অবশ্যই নিম্নলিখিত প্যারামিটারসহ ContentProvider.call মেথডটি সমর্থন করতে হবে:

  • কর্তৃপক্ষ: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI
  • পদ্ধতি: @SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
  • আর্গুমেন্ট: @SystemAPI CellBroadcast.Preference

    এটি CellBroadcast মডিউলের জন্য সমর্থিত শেয়ার্ড প্রেফারেন্স কী-গুলোর একটি তালিকা। ডেটাটি ContentProvider.call মেথডের জন্য SharedPreferences থেকে নেওয়া হয়েছে।

CellBroadcast মডিউলে মেসেজ হিস্ট্রি স্থানান্তর করতে, CellBroadcastContentProvider APK-কে অবশ্যই নিম্নলিখিত প্যারামিটারসহ ContentProvider.query মেথডটি সাপোর্ট করতে হবে:

  • অথরিটি: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI । কোয়েরি কলামগুলো CellBroadcast মডিউলের জন্য সমর্থিত মেসেজ প্রোপার্টিগুলোর তালিকা দেয়। এটি ContentProvider.query মেথডের জন্য (আপনার ডাটাবেস থেকে) ডেটা গ্রহণ করে।

CellBroadcastContentProvider, LegacyCellBroadcastContentProvider দেখুন।

পরীক্ষা

অ্যান্ড্রয়েড কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) অ্যাপ-নির্ভর সিস্টেম এপিআই-গুলোর কার্যকারিতা যাচাই করে। এছাড়াও আপনি CellBroadcast মডিউলের unit tests/testappsp চালাতে পারেন।

যদি OEM কোনো ডিভাইসের জন্য CMAS সিক্রেট কোড সক্রিয় করে থাকে, তাহলে সেই ডিভাইসটি নিম্নলিখিত বৈশিষ্ট্যসহ ডিবাগ মোড সমর্থন করতে পারে।

  • টেস্ট অ্যালার্টগুলো একটি অন/অফ টগল সহ 'অন্যান্য অ্যালার্ট'-এর অধীনে শ্রেণীবদ্ধ করা হয়েছে।

  • ইতিহাসে সেই সমস্ত বার্তা অন্তর্ভুক্ত থাকে যা গ্রহণ করা হয়েছে কিন্তু প্রদর্শন করা হয়নি, যেমন সদৃশ বার্তা বা অন্য ভাষার বার্তা।

  • বার্তাগুলিতে ক্রমিক নম্বর, বার্তা আইডি এবং মেয়াদ শেষ হওয়ার তারিখ সহ সমস্ত উপলব্ধ প্যারামিটার প্রদর্শিত হয়।

ডিবাগ মোড চালু করতে, ডায়ালারে *#*#CMAS#*#* ডায়াল করুন।

যোগাযোগ করুন

সেলব্রডকাস্ট মডিউল সম্পর্কে আরও বিস্তারিত জানতে বা কোনো প্রশ্ন থাকলে, সেলব্রডকাস্ট সাপোর্ট গ্রুপের সাথে যোগাযোগ করুন।