অ্যান্ড্রয়েড ১৩ বা তার উচ্চতর সংস্করণে চালিত ডিভাইসগুলোর জন্য, অ্যান্ড্রয়েড eUICC-এর জন্য একাধিক সক্রিয় প্রোফাইল (MEP) সমর্থন করে। এই বৈশিষ্ট্যটি ডিভাইসগুলোকে একটিমাত্র ই-সিম চিপ ব্যবহার করে ডুয়াল সিম সমর্থন করতে দেয়, যেটিতে একাধিক সিম প্রোফাইল থাকতে পারে এবং একই সময়ে দুটি ভিন্ন ক্যারিয়ারের সাথে সংযোগ স্থাপন করতে পারে। ডিভাইস নির্মাতাদের অবশ্যই তাদের ডিভাইসে এই বৈশিষ্ট্যটি অন্তর্ভুক্ত করার জন্য SoC বিক্রেতা এবং ই-সিম চিপসেট বিক্রেতাদের সাথে কাজ করতে হবে।
পটভূমি
অ্যান্ড্রয়েড ১২ এবং এর নিচের সংস্করণ চালিত ডিভাইসগুলিতে, AOSP একটিমাত্র ই-সিমকে একই সাথে একাধিক প্রোফাইল সমর্থন করার ক্ষেত্রে সীমিত সুবিধা প্রদান করে। ই-সিমের মাধ্যমে উল্লেখযোগ্য পরিমাণ জায়গা এবং খরচ সাশ্রয় হওয়া সত্ত্বেও, ডুয়াল সিম সমর্থনের এই অভাব ডিভাইস নির্মাতাদের শুধুমাত্র ই-সিম-ভিত্তিক ডিভাইস তৈরি করা থেকে বিরত রাখে। একটি শুধুমাত্র ই-সিম ডিভাইসে ডুয়াল সিম সমর্থন দেওয়ার জন্য, ডিভাইস নির্মাতাদের ডিভাইসের মধ্যে দুটি ই-সিম এলিমেন্ট স্থাপন করতে হয়, যা বিল অফ মেটেরিয়াল (BOM) খরচ বাড়িয়ে দেয় এবং সাবস্ক্রিপশন ব্যবস্থাপনার ক্ষেত্রে ব্যবহারকারীর অভিজ্ঞতাকে খারাপ করে তোলে। অ্যান্ড্রয়েড ১৩ থেকে AOSP-তে উপলব্ধ MEP ফিচারটি এই সমস্যার সমাধান করে।
eUICC স্থাপত্য
এই অংশে বিভিন্ন অ্যান্ড্রয়েড সংস্করণের জন্য MEP সহ ডিভাইসগুলোর ই-সিম চিপের গঠন এবং MEP বিহীন ডিভাইসগুলোর ই-সিম চিপের গঠন বর্ণনা করা হয়েছে।
অ্যান্ড্রয়েড ১৪
অ্যান্ড্রয়েড ১৪ বা তার উচ্চতর সংস্করণে চালিত ডিভাইসগুলির জন্য, অ্যান্ড্রয়েড GSMA SGP V22 3.0- এ নির্দিষ্ট করা ইস্যুকারী নিরাপত্তা ডোমেন রুট (ISD-R) এবং ই-সিম পোর্ট নির্বাচনের জন্য MEP-A1 এবং MEP-B বিকল্পগুলিকে সমর্থন করে। নিম্নলিখিত অংশে MEP-A1 এবং MEP-B ISD-R নির্বাচন মডেলগুলির বর্ণনা দেওয়া হলো:
MEP-A1: পোর্ট 0-তে ISD-R নির্বাচিত হয় (কমান্ড পোর্ট হলো 0) এবং eSIM পোর্ট 1 ও তার উপরের পোর্টগুলোতে প্রোফাইল নির্বাচিত হয়। ES10 কমান্ডগুলো সর্বদা পোর্ট 0-তে পাঠানো হয় এবং কমান্ড পোর্ট ও টার্গেট পোর্ট সর্বদা ভিন্ন হয়। LPA পোর্টটি নির্বাচন করে।

চিত্র ১. এমইপি-এ১ আইএসডি-আর নির্বাচন মডেল
MEP-B: যেকোনো পোর্টে ISD-R নির্বাচন করা হয় এবং যেকোনো পোর্টে একটি প্রোফাইল নির্ধারণ করা যায়। যে পোর্টে প্রোফাইলটি সক্রিয় বা নিষ্ক্রিয় করার প্রয়োজন হয় (যেখানে একটি রিফ্রেশ বাকি থাকে), সেই পোর্টে সক্রিয় এবং নিষ্ক্রিয় করার কমান্ড পাঠানো হয়। কমান্ড পোর্ট এবং টার্গেট পোর্ট সর্বদা একই থাকে।

চিত্র ২. এমইপি-বি আইএসডি-আর নির্বাচন মডেল
অ্যান্ড্রয়েড ১৩
অ্যান্ড্রয়েড ১৩ বা তার উচ্চতর সংস্করণে, MEP সমর্থনকারী ডিভাইসগুলিতে eSIM স্লটে একাধিক eUICC পোর্ট থাকে, যেখানে প্রতিটি পোর্টের জন্য একটি সক্রিয় প্রোফাইল থাকতে পারে। চিত্র ৩-এ যেমন দেখানো হয়েছে, এই আর্কিটেকচারের মাধ্যমে, একটি একক eUICC (একটি একক ফিজিক্যাল স্লট) ডুয়াল সিম ডুয়াল স্ট্যান্ডবাই (DSDS) সমর্থন করে, যেখানে প্রতিটি eUICC পোর্ট একটি মডেম বেসব্যান্ডের সাথে সংযুক্ত থাকে। অ্যান্ড্রয়েড ১৩-এর HAL এবং API-গুলি MEP ভ্যারিয়েন্টের উপর নির্ভরশীল নয়।

চিত্র ৩. এমইপি সমর্থনসহ ই-সিম চিপের গঠন (অ্যান্ড্রয়েড ১৩ বা উচ্চতর সংস্করণ)
অ্যান্ড্রয়েড ১২ এবং তার নিচের সংস্করণ
চিত্র ৪-এ যেমন দেখানো হয়েছে, MEP ছাড়া Android 12 বা তার নিচের সংস্করণে চালিত ডিভাইসগুলোর ক্ষেত্রে eSIM স্লট একবারে শুধুমাত্র একটি সক্রিয় প্রোফাইল সমর্থন করে। এর মানে হলো, ডিভাইসটি DSDS সমর্থন করতে পারে না।

চিত্র ৪. এমইপি সমর্থন ছাড়া ই-সিম চিপের গঠন (অ্যান্ড্রয়েড ১২ বা তার নিম্নতর সংস্করণ)
একাধিক সক্রিয় প্রোফাইলের জন্য এপিআই তথ্য প্রবাহ
চিত্র ৫-এ অ্যান্ড্রয়েড ১৩-এর eUICC-এর জন্য MEP-এর তথ্য প্রবাহ বর্ণনা করা হয়েছে। টেলিফোনি ফ্রেমওয়ার্কটিতে UiccPort ক্লাস অন্তর্ভুক্ত রয়েছে, যা eUICC-এর ভৌত কাঠামোকে উপস্থাপন করে। UiccPort ক্লাসটি সব ধরনের সিম কার্ডের জন্য ব্যবহৃত হয়: ফিজিক্যাল সিম (pSIM), ইন্টিগ্রেটেড সিম (iSIM), এবং এমবেডেড সিম (eSIM)। একাধিক পোর্টযুক্ত একটি eUICC-এর জন্য, একটিমাত্র UiccSlot অবজেক্ট এবং UiccCard অবজেক্ট একাধিক UiccPort ইনস্ট্যান্সের সাথে ম্যাপ করা থাকে। প্রতিটি UiccPort ইনস্ট্যান্স সর্বাধিক একটি UiccProfile ইনস্ট্যান্সের সাথে লিঙ্ক করতে পারে। এই প্রবাহটি UiccPort একটি লজিক্যাল স্লটের সাথে এবং UiccSlot (ভৌত স্লট)-কে একাধিক লজিক্যাল স্লটের সাথে ম্যাপ করার সুযোগ দেয়।

চিত্র ৫. এমইপি সহায়তায় ইইউআইসিসি-এর তথ্য প্রবাহ
বাস্তবায়ন
এই বিভাগে MEP ফিচারটি কীভাবে বাস্তবায়ন করতে হয় তা বর্ণনা করা হয়েছে, যার মধ্যে HAL-এর প্রয়োজনীয়তা, API এবং ইউজার ইন্টারফেস সম্পর্কিত বিস্তারিত তথ্য অন্তর্ভুক্ত রয়েছে। ডিভাইস নির্মাতাদের উচিত MEP সমর্থন করার জন্য SoC ভেন্ডর এবং eSIM চিপসেট ভেন্ডরদের সাথে কাজ করা।
HAL প্রয়োজনীয়তা
eUICC-এর জন্য MEP সমর্থন করতে, /platform/hardware/interfaces/radio/aidl/aidl_api তে অবস্থিত নিম্নলিখিত IRadio AIDL HAL API-গুলি প্রয়োগ করুন।
অ্যান্ড্রয়েড ১৪ বা তার উচ্চতর সংস্করণে চালিত ডিভাইসগুলিকে অবশ্যই HAL ইন্টারফেসের IRadio 2.1 সংস্করণ ব্যবহার করতে হবে, যা MultipleEnabledProfileMode (মোডেম বা eUICC দ্বারা সমর্থিত ISD-R সিলেকশন মডেল) ব্যবহার করে এবং ICC লজিক্যাল চ্যানেল অপারেশনের সময় ES10 APDU কমান্ডের তথ্য প্রেরণ করে।
কার্ডের অবস্থা
getIccCardStatusResponse মেথডের প্রতিক্রিয়া হিসেবে মোডেমটিকে অবশ্যই CardStatus API সমর্থন করতে হবে। প্রতিক্রিয়াটিতে অবশ্যই SimPortSlotMapping দ্বারা নির্দিষ্ট পোর্ট ইনডেক্স এবং ফিজিক্যাল স্লট ইনডেক্স অন্তর্ভুক্ত থাকতে হবে।
অ্যান্ড্রয়েড ১৪ বা তার উচ্চতর সংস্করণে চালিত ডিভাইসগুলোর ক্ষেত্রে, মোডেমটিকে অবশ্যই সমস্ত CardStatus ইভেন্টের মাধ্যমে সমর্থিত MEP মোড পাস করতে হবে।
সিমস্লটস্ট্যাটাস
getSimSlotsStatus মেথডের প্রতিক্রিয়া হিসেবে মোডেমটিকে অবশ্যই SimSlotStatus API সমর্থন করতে হবে। সিম স্লটের স্ট্যাটাসে SimPortInfo ইন্টারফেসের একটি অ্যারে অন্তর্ভুক্ত থাকে, যার মধ্যে পোর্ট ইনডেক্স, সক্রিয় প্রোফাইলের জন্য ICCID এবং পোর্টের অবস্থা থাকে। মোডেমটিকে অবশ্যই কমপক্ষে দুটি SimPortInfo অবজেক্ট ফেরত দিতে হবে।
অ্যান্ড্রয়েড ১৪ বা তার উচ্চতর সংস্করণে চালিত ডিভাইসগুলোর ক্ষেত্রে, মোডেমটিকে অবশ্যই সমস্ত CardStatus ইভেন্টের মাধ্যমে সমর্থিত MEP মোড পাস করতে হবে।
setSimSlotMapping
setSimSlotMapping মেথডটিতে অবশ্যই SimPortSlotMapping এর একটি অ্যারে পাস করতে হবে। অ্যারের ইন্ডেক্সটি হলো লজিক্যাল স্লট এবং SimPortSlotMapping সংশ্লিষ্ট ম্যাপ করা পোর্ট ও ফিজিক্যাল স্লট ইন্ডেক্স নির্দিষ্ট করে। setSimSlotMapping মেথডটি পোর্ট থেকে লজিক্যাল স্লটে ম্যাপিং সেট করে। LPA অ্যাপ সক্রিয় পোর্ট নির্বাচন করার জন্য এই মেথডটি ব্যবহার করে।
eUICC-এর জন্য MEP সমর্থনকারী API-সমূহ
AOSP টেলিফোনি স্ট্যাকের অংশ হিসেবে একাধিক সক্রিয় প্রোফাইল সমর্থনকারী অ্যান্ড্রয়েড ডিভাইসগুলোকে নিম্নলিখিত API-গুলো সমর্থন করতে হবে।
UiccCardInfo
- (অ্যান্ড্রয়েড ১৩ এবং উচ্চতর সংস্করণ)
isMultipleEnabledProfilesSupported: এই UICC-টি MEP সমর্থন করে কিনা তা ফেরত দেয়। - (অ্যান্ড্রয়েড ১৩ এবং উচ্চতর সংস্করণ)
getPorts: একটি নির্দিষ্ট UICC-এর জন্য সমস্ত সম্ভাব্য পোর্টের তালিকা ফেরত দেয়। যদি UICC-টি একটি pSIM বা eSIM হয় যা MEP সমর্থন করে না, তাহলে এটি একটি একক উপাদানের তালিকা ফেরত দেয়। - (অপ্রচলিত)
getIccId: একটি ICCID ফেরত দেয়। যেহেতু MEP যুক্ত ডিভাইসগুলির জন্য একটি UICC-এর একাধিক ICCID থাকতে পারে, তাই এর পরিবর্তেUiccPortInfo.getIccId()ব্যবহার করুন।
(অ্যান্ড্রয়েড ১৩ এবং উচ্চতর সংস্করণ) UiccPortInfo
-
getIccId: এই পোর্টে কোনো সক্রিয় সাবস্ক্রিপশন থাকলে ICCID ফেরত দেয়। -
getPortIndex: পোর্ট সূচকটি ফেরত দেয়। -
getLogicalSlotIndex: সক্রিয় লজিক্যাল মোডেম স্ট্যাকের সূচক ফেরত দেয়।
সাবস্ক্রিপশন তথ্য
- (অ্যান্ড্রয়েড ১৩ এবং উচ্চতর সংস্করণ)
getPortIndex: যে পোর্টে সাবস্ক্রিপশনটি সক্রিয় আছে, তার পোর্ট ইনডেক্স ফেরত দেয়। যদি সাবস্ক্রিপশনটি নিষ্ক্রিয় থাকে, তাহলেINVALID_PORT_ID -1ফেরত দেয়।
ইউইকম্যানেজার
-
switchToSubscription: একটি নির্দিষ্ট সাবস্ক্রিপশনে সুইচ করে। যেসব অ্যাপের সক্রিয় সাবস্ক্রিপশনগুলিতে ক্যারিয়ার প্রিভিলেজ নেই, তারা এটি ব্যবহার করে। কল করা হলে, কোনো পোর্ট উপলব্ধ না থাকলে প্ল্যাটফর্মটি অভ্যন্তরীণভাবে একটি তিন-পছন্দের সিলেকশন ডায়ালগের মাধ্যমে পোর্ট ইনডেক্স নির্ধারণ করে নির্বাচিত সক্রিয় সাবস্ক্রিপশনটি নিষ্ক্রিয় করে দেয়। Android 13 এবং তার পরবর্তী সংস্করণকে টার্গেট করা অ্যাপগুলিকে একটি অবৈধ সাবস্ক্রিপশন আইডি পাস করে সাবস্ক্রিপশন নিষ্ক্রিয় করার জন্য এই API ব্যবহার করা উচিত নয়; পরিবর্তে, তাদের অবশ্যই নির্দিষ্ট পোর্ট ইনডেক্স সহswitchToSubscriptionমেথডটি (Android 13-এ যোগ করা) ব্যবহার করতে হবে। - (অ্যান্ড্রয়েড ১৩ এবং উচ্চতর সংস্করণ)
switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback): একটি নির্দিষ্ট সাবস্ক্রিপশনে সুইচ করে। সক্রিয় সাবস্ক্রিপশনগুলোর ওপর ক্যারিয়ার প্রিভিলেজ থাকা কলিং অ্যাপগুলো নির্দিষ্ট করে দিতে পারে যে কোন পোর্টে সাবস্ক্রিপশনটি চালু করা হবে। - (অ্যান্ড্রয়েড ১৩ এবং উচ্চতর সংস্করণ)
isSimPortAvailable: প্রদত্ত পোর্ট ইনডেক্সটি উপলব্ধ আছে কিনা তা ফেরত দেয়। একটি পোর্ট উপলব্ধ থাকে যদি সেটিতে কোনো সাবস্ক্রিপশন সক্রিয় না থাকে অথবা কলিং অ্যাপটির নির্বাচিত পোর্টে ইনস্টল করা সাবস্ক্রিপশনের উপর ক্যারিয়ার প্রিভিলেজ থাকে।
ইউইকসার্ভিস
- (অ্যান্ড্রয়েড ১৩ এবং উচ্চতর সংস্করণ)
onSwitchToSubscriptionWithPort: একটি নির্দিষ্ট পোর্টে প্রদত্ত সাবস্ক্রিপশনে সুইচ করে। অ্যান্ড্রয়েড ১৩ এবং উচ্চতর সংস্করণে LPA ইমপ্লিমেন্টেশনকে অবশ্যই এটি সমর্থন করতে হবে।
টেলিফোনি ম্যানেজার
- (অ্যান্ড্রয়েড ১৩ এবং উচ্চতর সংস্করণ)
getSimApplicationState: কার্ড অ্যাপ্লিকেশনের অবস্থা নির্দেশকারী একটি ধ্রুবক মান রিটার্ন করে। এই API-টি একটি ফিজিক্যাল স্লট ইনডেক্স এবং একটি পোর্ট ইনডেক্স উভয়ই পাস করে।getSimApplicationState(int physicalSlotIndex)মেথডটি (যা এখন আর ব্যবহৃত হয় না) একটিsimApplicationStateঅবজেক্ট পাওয়ার জন্য শুধুমাত্র ফিজিক্যাল স্লট ইনডেক্স পাস করে। - (অ্যান্ড্রয়েড ১৩ এবং উচ্চতর সংস্করণ)
setSimSlotMapping(Collection<UiccSlotMapping> slots): লজিক্যাল স্লটগুলোকে ফিজিক্যাল স্লট এবং পোর্টের সাথে ম্যাপ করে। - (অ্যান্ড্রয়েড ১৩ এবং উচ্চতর সংস্করণ)
Collection<UiccSlotMapping> getSimSlotMapping: লজিক্যাল স্লট থেকে ফিজিক্যাল সিম স্লট এবং পোর্ট ইনডেক্সের ম্যাপিং সংগ্রহ করে।
ব্যবহারকারী ইন্টারফেস
eSIM পোর্ট নির্বাচনের অস্পষ্টতা দূর করার জন্য, MEP সমর্থনকারী ডিভাইসগুলিতে, ব্যবহারকারীদের একটি নতুন সাবস্ক্রিপশন সক্রিয় করার জন্য সক্রিয় সাবস্ক্রিপশনগুলির মধ্যে একটি নিষ্ক্রিয় করতে সক্ষম হতে হবে। Android 13-এ, AOSP-তে তিনটি বিকল্পসহ একটি ডায়ালগ বক্স রয়েছে, যা সেটিংস অ্যাপ থেকে সাবস্ক্রিপশন সক্রিয় করার ইউজার ফ্লো-তে প্রয়োগ করা যেতে পারে। চিত্র ৬-এ এই UX ফ্লো-টির একটি উদাহরণ দেখানো হয়েছে।

চিত্র ৬. সিম সাবস্ক্রিপশন সক্রিয় করার ব্যবহারকারী প্রবাহ।
বৈশিষ্ট্য পতাকা
MEP সমর্থন করার জন্য, ডিভাইসগুলিকে অবশ্যই নিম্নলিখিত ফিচার ফ্ল্যাগগুলি ঘোষণা করতে হবে:
এলপিএ বাস্তবায়ন
MEP সমর্থন করার জন্য, নিশ্চিত করুন যে আপনার LPA বাস্তবায়ন নিম্নলিখিত প্রয়োজনীয়তাগুলি পূরণ করে:
- একাধিক পোর্ট সমর্থন করার জন্য EuiccService- এর API-গুলো প্রয়োগ করে।
- পোর্ট নির্বাচন এবং প্রোফাইল সক্রিয় করার জন্য এপিআই ব্যবহার করে।
- এটি এমন একটি ইউজার এক্সপেরিয়েন্স (UX) প্রদান করে, যা ক্যারিয়ার অ্যাপগুলোকে নির্বাচিত পোর্টগুলোতে প্রোফাইল চালু করার সুযোগ দেয়।
বৈধতা
আপনার MEP ফিচারের ইমপ্লিমেন্টেশন পরীক্ষা করার জন্য, নিশ্চিত করুন যে বিল্ডগুলি নিম্নলিখিত CTS টেস্ট কেসগুলি (পাবলিক API-এর জন্য) পাস করে: /platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts ।
ডিভাইস প্রস্তুতকারকদের তাদের মোডেম, eUICC চিপ এবং eSIM OS বিক্রেতাদের সাথেও কাজ করে নিশ্চিত করা উচিত যে ডিভাইসটি নিম্নলিখিত কাজগুলো করতে পারে:
- দুটি ই-সিম প্রোফাইল সক্রিয় করে দুটি ভিন্ন নেটওয়ার্কে সংযুক্ত করা যেতে পারে।
- যেকোনো ই-সিম পোর্টে ই-সিম প্রোফাইল সক্রিয় এবং নিষ্ক্রিয় করা যায়।
- ক্যারিয়ার অ্যাপের মাধ্যমে একটি ইউএক্স ফ্লো চালু হয়, যা ব্যবহারকারীদের প্রোফাইল পরিবর্তন করার সুযোগ দেয়।
বাহকদের জন্য সুপারিশ
ব্যবহারকারীরা যখন এক পোর্ট থেকে অন্য পোর্টে ই-সিম প্রোফাইল স্থানান্তর করেন, তখন যাতে তাদের পরিষেবা ব্যাহত না হয়, তা নিশ্চিত করতে আমরা সুপারিশ করি যে পরিষেবা প্রদানকারীরা নিম্নলিখিত বিষয়গুলির জন্য সহায়তা প্রদান করবে:
- IMEI এবং SIM এর ফ্লুইড ম্যাপিং
- প্রতিটি eUICC আইডেন্টিফায়ার (EID)-এর জন্য একাধিক ICCID বা SIM