ডোমেন নির্বাচন পরিষেবা

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

ডোমেন নির্বাচন পরিষেবার আর্কিটেকচার ডায়াগ্রাম যা অ্যান্ড্রয়েড প্ল্যাটফর্ম এবং বিক্রেতা বাস্তবায়নের সাথে এর মিথস্ক্রিয়া দেখায়।

চিত্র ১. ডোমেইন নির্বাচন বৈশিষ্ট্যের জন্য স্থাপত্য চিত্র

উদাহরণ এবং উৎস

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

বাস্তবায়ন

অ্যান্ড্রয়েড-চালিত ডিভাইসে ডোমেইন নির্বাচন বৈশিষ্ট্যটি বাস্তবায়ন করতে, নিম্নলিখিত পদক্ষেপগুলি প্রয়োজন:

  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 অনুমতিপ্রাপ্ত একটি প্রক্রিয়াই অ্যাপের সাথে আবদ্ধ হতে পারে। এটি একটি দুর্বৃত্ত অ্যাপকে পরিষেবার সাথে আবদ্ধ হতে বাধা দেয়, কারণ ফ্রেমওয়ার্ক দ্বারা শুধুমাত্র সিস্টেম অ্যাপগুলিকে অনুমতি দেওয়া যেতে পারে।

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

ডিভাইস ওভারলেতে কনফিগারেশন সংজ্ঞায়িত করুন

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

যেহেতু অ্যান্ড্রয়েড থার্ড-পার্টি ডাউনলোডযোগ্য 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 এ Compatibility Test Suite (CTS) পরীক্ষা চালান।