ডোমেন বেছে নেওয়ার পরিষেবা

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

ডোমেন বেছে নেওয়ার পরিষেবার আর্কিটেকচার ডায়াগ্রাম, যা Android প্ল্যাটফর্ম ও ভেন্ডর ইমপ্লিমেন্টেশনের সাথে এর ইন্টার‍্যাকশন দেখায়

ছবি ১. ডোমেন বেছে নেওয়ার ফিচারের জন্য আর্কিটেকচার ডায়াগ্রাম

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

Android ওপেন সোর্স প্রজেক্টে (AOSP) ডোমেন বেছে নেওয়ার ফিচারের জন্য Android একটি রেফারেন্স ইমপ্লিমেন্টেশন প্রদান করে, যা TelephonyDomainSelectionService-এ উপলভ্য। DomainSelectionService API-এর বিস্তারিত ডকুমেন্টেশনের জন্য, DomainSelectionService এবং API-এর অন্যান্য ক্লাস দেখুন।

প্রয়োগ

Android-চালিত ডিভাইসে ডোমেন বেছে নেওয়ার ফিচার প্রয়োগ করতে, নিম্নলিখিত ধাপগুলি অনুসরণ করতে হবে:

  1. ডোমেন বেছে নেওয়ার অ্যাপ তৈরি করুন। পরিষেবাটি AndroidManifest.xml ফাইলে সংজ্ঞায়িত করতে হবে।

  2. প্ল্যাটফর্মকে DomainSelectionService ইমপ্লিমেন্টেশনের সাথে বাইন্ড করতে দেওয়ার জন্য ডিভাইস ওভারলেতে একটি কনফিগারেশন যোগ করুন।

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

পরিষেবাটিকে অবশ্যই intent-filter এলিমেন্টের সাথে android.telephony.DomainSelectionService অ্যাকশন নির্দিষ্ট করতে হবে। এটি ফ্রেমওয়ার্ককে DomainSelectionService পরিষেবা খুঁজতে দেয়।

ডিভাইস ওভারলেতে কনফিগারেশন নির্ধারণ করুন

DomainSelectionService পরিষেবার সাথে প্ল্যাটফর্ম নিরাপদে বাইন্ড করতে, ডিভাইস ওভারলেতে নিম্নলিখিত কনফিগারেশন যোগ করুন:

  • config_domain_selection_service_component_name: DomainSelectionService পরিষেবার জন্য কম্পোনেন্টের নাম (একটি ফ্ল্যাটেন করা ComponentName স্ট্রিং)।

Android যেহেতু থার্ড-পার্টি ডাউনলোড করা DomainSelectionService ইমপ্লিমেন্টেশন সহ অ্যাপ কাজ করে না, তাই ডোমেন বেছে নেওয়ার অ্যাপকে অবশ্যই একটি সিস্টেম অ্যাপ হতে হবে যা /system_ext/priv-app/ বা /product/priv-app/ ফোল্ডারে থাকে। ফ্রেমওয়ার্ক যাচাই করে দেখে যে ইমপ্লিমেন্টেশনের প্যাকেজের নাম ডিভাইস ওভারলে ভ্যালুর সাথে ম্যাচ করছে কিনা, যাতে শুধু বিশ্বাসযোগ্য, আগে থেকে ইনস্টল করা অ্যাপ বাউন্ড করা যায়।

রেডিও HAL ইন্টারফেস কাজ করে

ডোমেন বেছে নেওয়ার ফিচার চালু করতে, নিম্নলিখিত প্রয়োজনীয় রেডিও HAL ইন্টারফেস সাপোর্ট করুন:

  • IRadioNetwork

    void setEmergencyMode(int serial, EmergencyMode emcModeType);
    void triggerEmergencyNetworkScan(int serial,
            EmergencyNetworkScanTrigger request);
    void cancelEmergencyNetworkScan(int serial, boolean resetScan);
    void exitEmergencyMode(int serial);
    
  • IRadioNetworkIndication

    void emergencyNetworkScanResult(RadioIndicationType type,
            EmergencyRegResult result);
    

যাচাইকরণ

টেলিফোনি ফ্রেমওয়ার্ক DomainSelectionService ইন্টারফেসের সাথে সঠিকভাবে কাজ করছে কিনা তা পরীক্ষা করতে, DomainSelectionServiceTestOnMockModem-এ কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) টেস্ট রান করুন।