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

চিত্র ১. ডোমেইন নির্বাচন বৈশিষ্ট্যের স্থাপত্য চিত্র
উদাহরণ এবং উৎস
অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্ট (AOSP)-এর TelephonyDomainSelectionService এ অ্যান্ড্রয়েড ডোমেইন সিলেকশন ফিচারের জন্য একটি রেফারেন্স ইমপ্লিমেন্টেশন প্রদান করে। DomainSelectionService API-এর বিস্তারিত ডকুমেন্টেশনের জন্য, DomainSelectionService এবং API-এর অন্যান্য ক্লাসগুলো দেখুন।
বাস্তবায়ন
অ্যান্ড্রয়েড চালিত ডিভাইসে ডোমেইন নির্বাচন বৈশিষ্ট্যটি বাস্তবায়ন করতে নিম্নলিখিত পদক্ষেপগুলি প্রয়োজন:
একটি ডোমেইন সিলেকশন অ্যাপ তৈরি করুন। সার্ভিসটি অবশ্যই
AndroidManifest.xmlফাইলে সংজ্ঞায়িত করতে হবে।প্ল্যাটফর্মকে
DomainSelectionServiceইমপ্লিমেন্টেশনের সাথে বাইন্ড করার জন্য ডিভাইস ওভারলেতে একটি কনফিগারেশন যোগ করুন।ডোমেইন সিলেকশন ফিচারের জন্য প্রয়োজনীয় রেডিও হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL) ইন্টারফেসগুলো সমর্থন করুন।
এই অংশে এই ধাপগুলো সম্পর্কে আরও বিস্তারিত তথ্য দেওয়া হয়েছে।
AndroidManifest.xml-এ সার্ভিস এন্ট্রি যোগ করুন
আপনার ডোমেইন সিলেকশন অ্যাপে ফ্রেমওয়ার্কের সাথে DomainSelectionService সার্ভিসটি রেজিস্টার করার জন্য, ম্যানিফেস্ট ফাইলে নিম্নলিখিত ফরম্যাট ব্যবহার করে একটি সার্ভিস এন্ট্রি যোগ করুন:
<service
android:name="com.example.domainselection.DomainSelectionService"
android:directBootAware="true"
android:persistent="true"
…
android:permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE"
…
<intent-filter>
<action android:name="android.telephony.DomainSelectionService"/>
</intent-filter>
…
</service>
ডোমেইন নির্বাচন বৈশিষ্ট্যটি কার্যকর করার জন্য AndroidManifest.xml এ পরিষেবা সংজ্ঞায় নিম্নলিখিত বৈশিষ্ট্যগুলি অবশ্যই সংজ্ঞায়িত করতে হবে:
-
directBootAware="true": ব্যবহারকারী ডিভাইসটি আনলক করার আগেই টেলিফোনি দ্বারা সার্ভিসটিকে খুঁজে পাওয়া এবং চালু করার অনুমতি দেয়। ব্যবহারকারী ডিভাইসটি আনলক করার আগে সার্ভিসটি ডিভাইসের এনক্রিপ্টেড স্টোরেজ অ্যাক্সেস করতে পারে না। আরও তথ্যের জন্য, ‘সাপোর্ট ডাইরেক্ট বুট মোড’ এবং ‘ফাইল-ভিত্তিক এনক্রিপশন’ দেখুন। -
persistent="true": সার্ভিসটিকে স্থায়ীভাবে চালু রাখে এবং মেমরি পুনরুদ্ধারের জন্য সিস্টেম দ্বারা বন্ধ হতে দেয় না। এই অ্যাট্রিবিউটটি শুধুমাত্র তখনই কাজ করে যখন অ্যাপটি একটি সিস্টেম অ্যাপ হিসাবে বিল্ড করা হয়। -
permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE": এটি নিশ্চিত করে যে শুধুমাত্র সেই প্রসেসটিই অ্যাপটির সাথে বাইন্ড করতে পারবে, যাকেBIND_DOMAIN_SELECTION_SERVICEপারমিশনটি দেওয়া হয়েছে। এটি কোনো অনাকাঙ্ক্ষিত অ্যাপকে সার্ভিসটির সাথে বাইন্ড করা থেকে বিরত রাখে, কারণ ফ্রেমওয়ার্কের পক্ষ থেকে শুধুমাত্র সিস্টেম অ্যাপগুলোকেই এই পারমিশনটি দেওয়া যেতে পারে।
সার্ভিসটিকে অবশ্যই android.telephony.DomainSelectionService অ্যাকশন সহ intent-filter এলিমেন্টটি নির্দিষ্ট করতে হবে। এর ফলে ফ্রেমওয়ার্ক DomainSelectionService সার্ভিসটি খুঁজে পায়।
ডিভাইস ওভারলেতে কনফিগারেশন সংজ্ঞায়িত করুন
প্ল্যাটফর্মটি যাতে DomainSelectionService পরিষেবার সাথে নিরাপদে সংযুক্ত হতে পারে, তার জন্য ডিভাইস ওভারলেতে নিম্নলিখিত কনফিগারেশনটি যোগ করুন:
-
config_domain_selection_service_component_name:DomainSelectionServiceসার্ভিসের কম্পোনেন্টের নাম (একটি সংক্ষিপ্তComponentNameস্ট্রিং)।
যেহেতু অ্যান্ড্রয়েড তৃতীয় পক্ষের ডাউনলোডযোগ্য DomainSelectionService ইমপ্লিমেন্টেশন সহ অ্যাপ সমর্থন করে না, তাই ডোমেইন সিলেকশন অ্যাপটিকে অবশ্যই একটি সিস্টেম অ্যাপ হতে হবে যা /system_ext/priv-app/ অথবা /product/priv-app/ ফোল্ডারে থাকে। ফ্রেমওয়ার্কটি যাচাই করে দেখে যে ইমপ্লিমেন্টেশনের প্যাকেজ নামটি ডিভাইস ওভারলে মানের সাথে মেলে কিনা, যাতে কেবল বিশ্বস্ত, আগে থেকে ইনস্টল করা অ্যাপগুলোই সংযুক্ত থাকে।
রেডিও HAL ইন্টারফেস সমর্থন করে
ডোমেইন নির্বাচন বৈশিষ্ট্যটি সক্রিয় করতে, নিম্নলিখিত প্রয়োজনীয় রেডিও HAL ইন্টারফেসগুলিকে সমর্থন করুন:
void setEmergencyMode(int serial, EmergencyMode emcModeType); void triggerEmergencyNetworkScan(int serial, EmergencyNetworkScanTrigger request); void cancelEmergencyNetworkScan(int serial, boolean resetScan); void exitEmergencyMode(int serial);void emergencyNetworkScanResult(RadioIndicationType type, EmergencyRegResult result);
বৈধতা
টেলিফোনি ফ্রেমওয়ার্কটি DomainSelectionService ইন্টারফেসে সঠিকভাবে সাড়া দিচ্ছে কিনা তা পরীক্ষা করতে, DomainSelectionServiceTestOnMockModem এ থাকা কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) টেস্টগুলো চালান।