עבור מכשירים עם אנדרואיד 13 ומעלה, אנדרואיד תומך במספר פרופילים מאושרים (MEP) עבור eUICC. תכונה זו מאפשרת למכשירים לקבל תמיכה ב-SIM כפול באמצעות שבב eSIM יחיד, שיכול להיות בעל מספר פרופילי SIM ויכול להתחבר לשני ספקים שונים בו-זמנית. יצרני מכשירים חייבים לעבוד עם ספקי SoC וספקי ערכות שבבים eSIM כדי לשלב תכונה זו במכשירים שלהם.
רקע כללי
במכשירים המריצים אנדרואיד 12 ומטה, AOSP מספקת תמיכה מוגבלת בכך שהיא מאפשרת ל-eSIM יחיד לתמוך במספר פרופילים בו-זמנית. למרות החיסכון המשמעותי בשטח ובעלויות שמציע eSIM, חוסר זה בתמיכה ב-SIM כפול מונע מיצרני מכשירים לאמץ מכשירי eSIM בלבד. כדי לספק תמיכה ב-SIM כפול במכשיר eSIM בלבד, יצרני המכשירים צריכים לארוז שני רכיבי eSIM במכשיר, מה שמגדיל את עלויות כתב החומרים (BOM) ומוביל לחוויות משתמש גרועות לניהול מנויים. תכונת MEP הזמינה ב-AOSP מאנדרואיד 13 מטפלת בבעיה זו.
ארכיטקטורת eUICC
סעיף זה מתאר את ארכיטקטורת שבב eSIM עבור מכשירים עם MEP עבור גרסאות אנדרואיד שונות וארכיטקטורת שבב eSIM עבור מכשירים ללא MEP.
אנדרואיד 14
עבור מכשירים עם אנדרואיד 14 ומעלה, אנדרואיד תומכת באפשרויות MEP-A1 ו-MEP-B לבחירת שורש תחום האבטחה של המנפיק (ISD-R) ובחירת יציאות eSIM כמפורט ב- GSMA SGP V22 3.0 . להלן מתארים את דגמי הבחירה MEP-A1 ו-MEP-B ISD-R.
MEP-A1: ISD-R נבחר ביציאה 0 (יציאת הפקודה היא 0) ופרופילים נבחרים ביציאות eSIM 1 ומעלה. פקודות ES10 נשלחות תמיד ליציאה 0, ויציאת הפקודה ויציאת היעד תמיד שונות. ה-LPA בוחר את היציאה.
איור 1. מודל בחירת MEP-A1 ISD-R
MEP-B: ISD-R נבחר בכל יציאה ולכל יציאה ניתן להקצות פרופיל. פקודות ההפעלה וההשבתה נשלחות ליציאה שבה יש להפעיל או לבטל את הפרופיל (כאשר רענון ממתין). יציאת הפקודה ויציאת היעד תמיד זהים.
איור 2. מודל בחירת MEP-B ISD-R
אנדרואיד 13
באנדרואיד 13 ומעלה, במכשירים התומכים ב-MEP, חריץ ה-eSIM מכיל יציאות eUICC מרובות שבהן יכול להיות פרופיל מופעל. כפי שמוצג באיור 3, עם ארכיטקטורה זו, eUICC יחיד (חריץ פיזי יחיד) תומך כפול SIM כפול המתנה (DSDS) על ידי כך שכל יציאת eUICC מקשר לפס בסיס מודם. אנדרואיד 13 HAL וממשקי API אינם תלויים בגרסה של MEP.
איור 3. ארכיטקטורת שבב eSIM עם תמיכת MEP (אנדרואיד 13 ומעלה)
אנדרואיד 12 ומטה
עבור מכשירים עם אנדרואיד 12 ומטה ללא MEP כפי שמוצג באיור 4, חריץ ה-eSIM תומך רק בפרופיל מאופשר בודד בו-זמנית והמכשיר אינו יכול לתמוך ב-DSDS.
איור 4. ארכיטקטורת שבב eSIM ללא תמיכת MEP (אנדרואיד 12 ומטה)
זרימת מידע API עבור מספר פרופילים מופעלים
איור 5 מתאר את זרימת המידע עבור MEP עבור eUICC באנדרואיד 13. מסגרת הטלפוניה כוללת את המחלקה UiccPort
, המייצגת את המבנה הפיזי ב-eUICC. מחלקת UiccPort
משמשת עבור כל סוגי כרטיסי ה-SIM: SIM פיזי (pSIM), SIM משולב (iSIM) ו-SIM משובץ (eSIM). עבור eUICC עם מספר יציאות, אובייקט UiccSlot
יחיד ואובייקט UiccCard
ממפים למספר מופעי UiccPort
. כל מופע UiccPort
יכול לקשר לכל היותר מופע אחד UiccProfile
. זרימה זו מאפשרת UiccPort
למפות למשבצת לוגית ול- UiccSlot
(משבצת פיזית) למפות למספר משבצות לוגיות.
איור 5. זרימת מידע עבור eUICC עם תמיכת MEP
יישום
סעיף זה מתאר כיצד ליישם את תכונת MEP כולל פרטים על דרישות HAL, ממשקי API וממשק משתמש. יצרני מכשירים צריכים לעבוד עם ספקי SoC וספקי ערכות שבבים eSIM כדי לתמוך ב-MEP.
דרישות HAL
כדי לתמוך ב-MEP עבור eUICC, הטמע את ממשקי ה-API הבאים של IRadio AIDL HAL, הממוקמים ב- /platform/hardware/interfaces/radio/aidl/aidl_api
.
מכשירים המריצים אנדרואיד 14 ומעלה חייבים להשתמש בגרסת IRadio 2.1 של ממשקי HAL, המשתמשים ב- MultipleEnabledProfileMode
(מודל בחירת ISD-R נתמך על ידי המודם או eUICC) ומעבירים מידע פקודות ES10 APDU במהלך פעולות ערוץ לוגי של ICC.
CardStatus
המודם חייב לתמוך ב- CardStatus
API כתגובה לשיטת getIccCardStatusResponse
. התגובה חייבת לכלול את אינדקס היציאה ואת אינדקס המשבצות הפיזי שצוינו על ידי SimPortSlotMapping
.
עבור מכשירים עם אנדרואיד 14 ומעלה, המודם חייב לעבור את מצב MEP הנתמך עם כל אירועי CardStatus.
SimSlotStatus
המודם חייב לתמוך ב- SimSlotStatus
API כתגובה לשיטת getSimSlotsStatus
. מצב חריץ ה-SIM כולל מערך של ממשק SimPortInfo
, הכולל את אינדקס היציאה, ה-ICCID עבור הפרופיל המופעל ומצב היציאה. המודם חייב להחזיר לפחות שני אובייקטים SimPortInfo
.
עבור מכשירים עם אנדרואיד 14 ומעלה, המודם חייב לעבור את מצב MEP הנתמך עם כל אירועי CardStatus.
setSimSlotMapping
שיטת setSimSlotMapping
חייבת לעבור מערך של SimPortSlotMapping
. האינדקס של המערך הוא החריץ הלוגי ו- SimPortSlotMapping
מציין את היציאה ממופה ואת אינדקס החריץ הפיזי המתאימים. שיטת setSimSlotMapping
מגדירה את המיפוי מיציאות למשבצות לוגיות. אפליקציית LPA משתמשת בשיטה זו כדי לבחור את היציאה הפעילה.
ממשקי API התומכים ב-MEP עבור eUICC
מכשירי אנדרואיד התומכים במספר פרופילים מאושרים כחלק מחסנית הטלפוניה של AOSP נדרשים לתמוך בממשקי ה-API הבאים.
UiccCardInfo
- (אנדרואיד 13 ומעלה)
isMultipleEnabledProfilesSupported
: מחזירה אם UICC זה תומך ב-MEP. - (אנדרואיד 13 ומעלה)
getPorts
: מחזירה את רשימת כל היציאות האפשריות עבור UICC מסוים. אם ה-UICC הוא pSIM או eSIM שאינו תומך ב-MEP, מחזיר רשימה של רכיב אחד. - (הוצא משימוש)
getIccId
: מחזירה ICCID. מכיוון של-UICC יכול להיות יותר מ-ICCID אחד עבור מכשירים עם MEP, השתמש במקום זאתUiccPortInfo.getIccId()
.
(אנדרואיד 13 ומעלה) UiccPortInfo
-
getIccId
: מחזיר את ה-ICCID אם יש מנוי מופעל ביציאה זו. -
getPortIndex
: מחזירה את אינדקס היציאה. -
getLogicalSlotIndex
: מחזירה את אינדקס מחסנית המודם הלוגי הפעיל.
מידע על מנוי
- (אנדרואיד 13 ומעלה)
getPortIndex
: מחזירה את אינדקס הפורטים שבו המנוי מופעל. אם המנוי מושבת, מחזירINVALID_PORT_ID -1
.
EuiccManager
-
switchToSubscription
: עובר למנוי נתון. בשימוש על ידי אפליקציות שאין להן הרשאות ספק במינויים פעילים. כאשר מתקשרים, הפלטפורמה פותרת באופן פנימי את אינדקס היציאה באמצעות דו-שיח לבחירת שלוש אפשרויות כדי להשבית את המנוי הפעיל שנבחר אם אין יציאות זמינות. אפליקציות הממוקדות ל-Android 13 ומעלה אינן רשאיות להשתמש ב-API זה כדי להשבית מנוי על ידי העברת מזהה מנוי לא חוקי ; במקום זאת עליהם להשתמש בשיטתswitchToSubscription
(נוספה באנדרואיד 13) עם אינדקס היציאה שצוין. - (אנדרואיד 13 ומעלה)
switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback)
: עובר למנוי נתון. התקשרות לאפליקציות עם הרשאות ספק על המינויים הפעילים יכולה לציין באיזו יציאה לאפשר את המנוי. - (אנדרואיד 13 ומעלה)
isSimPortAvailable
: מחזירה אם אינדקס היציאה החולפת זמין. יציאה זמינה אם לא הופעל מנוי או שלאפליקציה המתקשרת יש הרשאות ספק על המנוי המותקן ביציאה שנבחרה.
EuiccService
- (אנדרואיד 13 ומעלה)
onSwitchToSubscriptionWithPort
: עובר למנוי נתון ביציאה שצוינה. יישום LPA חייב לתמוך בכך באנדרואיד 13 ומעלה.
מנהל טלפוניה
- (אנדרואיד 13 ומעלה)
getSimApplicationState
: מחזירה קבועה המציינת את מצב אפליקציית הכרטיס. API זה מעביר גם אינדקס משבצות פיזי וגם אינדקס יציאה. השיטהgetSimApplicationState(int physicalSlotIndex)
(הוצאה משימוש) מעבירה רק את אינדקס המשבצות הפיזי כדי לקבל אובייקטsimApplicationState
. - (אנדרואיד 13 ומעלה)
setSimSlotMapping(Collection<UiccSlotMapping> slots)
: ממפה את המשבצות הלוגיות למשבצות וליציאות פיזיות. - (אנדרואיד 13 ומעלה)
Collection<UiccSlotMapping> getSimSlotMapping
: מקבל את המיפוי ממשבצות לוגיות לחריצי סים פיזיים ואינדקסים של יציאות.
ממשק משתמש
כדי לפתור את העמימות של בחירת יציאת eSIM, במכשירים התומכים ב-MEP, המשתמשים חייבים להיות מסוגלים להשבית את אחד המנויים הפעילים כדי לאפשר מנוי חדש. באנדרואיד 13, AOSP כולל זרימת משתמש עם תיבת דו -שיח של שלוש אפשרויות שניתן להחיל על מנוי המאפשר זרימת משתמשים מאפליקציית ההגדרות. איור 6 מציג דוגמה לזרימת UX זו.
איור 6. זרימת משתמש להפעלת מנוי SIM
תכונה דגלים
כדי לתמוך ב-MEP, המכשירים חייבים להצהיר על דגלי התכונות הבאים:
יישום LPA
כדי לתמוך ב-PEP, ודא שהטמעת ה-LPA שלך עומדת בדרישות הבאות:
- מיישם את ממשקי ה-API של EuiccService כדי לתמוך במספר יציאות.
- משתמש בממשקי ה- API לבחירת יציאה והפעלת פרופיל.
- מספק UX המאפשר לאפליקציות ספקים לאפשר פרופילים ביציאות נבחרות.
מַתַן תוֹקֵף
כדי לבדוק את היישום שלך של תכונת MEP, ודא שה-builds עוברים את מקרי הבדיקה הבאים של CTS (עבור ממשקי API ציבוריים): /platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts
.
יצרני מכשירים צריכים לעבוד גם עם ספקי המודם, שבב ה-eUICC ומערכת ההפעלה eSIM שלהם כדי להבטיח שהמכשיר יכול לבצע את הפעולות הבאות:
- ניתן להפעיל שני פרופילי eSIM ולצרף אותם לשתי רשתות שונות.
- ניתן להפעיל ולבטל פרופילי eSIM בכל יציאת eSIM.
- יש זרימת UX המופעלת על ידי אפליקציית הספק המאפשרת למשתמשים להחליף פרופילים.
המלצה למובילים
כדי להבטיח שמשתמשים לא יאבדו את השירות כשהם מעבירים פרופילי eSIM מנמל אחד לאחר, אנו ממליצים לספקים לספק תמיכה בפעולות הבאות:
- מיפוי נוזלי של IMEI ו-SIM
- מספר ICCIDs או SIMs עבור כל מזהה eUICC (EID)