搭載 Android 13 以上版本的裝置:Android 支援 eUICC 已啟用多個設定檔 (MEP)。這項功能可讓裝置 可透過單一 eSIM 卡晶片支援雙 SIM 卡,搭配多張 SIM 卡 設定檔,並同時與兩家不同的貨運公司連線。裝置 製造商必須與 SoC 供應商和 eSIM 卡晶片組合作 ,在自家裝置上整合這項功能。
背景
在搭載 Android 12 以下版本的裝置上,Android 開放原始碼計畫會提供 只能為單一 eSIM 卡支援多個設定檔 雖然 eSIM 卡可節省大量空間和成本效益, 由於缺少雙 SIM 卡支援,因此裝置製造商無法採用 eSIM 卡限定功能 裝置。如要在僅支援 eSIM 卡的裝置上提供雙 SIM 卡支援, 製造商必須將兩個 eSIM 卡元素裝入裝置, 物料費用 (BOM) 成本,導致使用者體驗不佳 以自動化做法管理成本Android 開放原始碼計畫提供的 MEP 功能: Android 13 解決了這個問題。
eUICC 架構
本節說明使用 MEP 的裝置適用的 eSIM 卡晶片架構 搭載的 Android 版本和 eSIM 卡晶片架構, MEP。
Android 14
搭載 Android 14 以上版本的裝置:Android 支援 MEP-A1 和 MEP-B 核發者安全性網域根 (ISD-R) 和 所選的 eSIM 卡通訊埠 GSMA SGP V22 3.0。 以下說明 MEP-A1 和 MEP-B ISD-R 選擇模式。
MEP-A1:已在通訊埠 0 中選取 ISD-R (指令通訊埠為 0), 系統會在 eSIM 卡通訊埠 1 和更高版本中選取設定檔。ES10 指令一律會 且指令通訊埠和目標通訊埠一律不同。 LPA 會選擇通訊埠。
圖 1. MEP-A1 ISD-R 選擇模式
MEP-B:在任何通訊埠中選取 ISD-R,任何通訊埠都能指派 啟用和停用指令會傳送至 必須啟用或停用設定檔 (亦即尚待重新整理)。 指令通訊埠和目標通訊埠一律相同
圖 2. MEP-B ISD-R 選擇模式
Android 13
在 Android 13 以上版本、支援 MEP 的裝置上 eSIM 卡插槽包含多個 eUICC 連接埠,且可啟用通訊埠 如圖 3 所示,使用此架構時,單一 eUICC (單一 實體插槽) 可提供個別 eUICC 連接埠,以支援雙 SIM 卡雙待機 (DSDS) 連結至數據機基頻。Android 13 HAL 和 API MEP 變化版本各自獨立。
圖 3:支援 MEP 的 eSIM 卡晶片架構 (Android 13 以上版本)
Android 12 以下版本
若是搭載 Android 12 以下版本且不含 MEP (如圖 4 所示) 的裝置, eSIM 卡插槽僅支援一部裝置,且一次只能啟用一個設定檔 不支援 DSDS。
圖 4:不支援 MEP 的 eSIM 卡晶片架構 (Android 12 或 較低)
多個已啟用設定檔的 API 資訊流程
圖 5 說明 eUICC 的 MEP 資訊流程。
Android 13。電話架構包含
UiccPort
類別,代表 eUICC 上的實體結構。
UiccPort
類別適用於所有類型的 SIM 卡:實體 SIM 卡 (pSIM 卡)、
整合式 SIM 卡 (iSIM) 和嵌入式 SIM 卡 (eSIM 卡)。適用於有多個 eUICC 的 eUICC
一個 UiccSlot
物件和 UiccCard
物件
多個 UiccPort
執行個體。每個 UiccPort
執行個體最多只能連結一個
UiccProfile
執行個體。此流程可讓 UiccPort
對應至邏輯運算單元
UiccSlot
(實體)
) 對應到多個邏輯運算單元。
圖 5. eUICC 支援 MEP 的資訊流程
實作
本節說明如何實作 MEP 功能,包括詳細說明 HAL 需求、API 和使用者介面。裝置製造商 與 SoC 廠商和 eSIM 卡晶片組廠商合作,支援 MEP。
HAL 相關規定
如要支援 eUICC 的 MEP,請實作下列 IRadio AIDL HAL API (位於
英吋
/platform/hardware/interfaces/radio/aidl/aidl_api
。
在搭載 Android 14 以上版本的裝置上,必須使用 IRadio 2.1 版本的 HAL
介面,透過
MultipleEnabledProfileMode
(數據機或 eUICC 支援的 ISD-R 選擇模型) 並傳遞 ES10 APDU
命令資訊。
CardStatus
數據機必須支援
CardStatus
做為回應
getIccCardStatusResponse
方法。回應必須包含通訊埠索引和實體運算單元索引
指定的
SimPortSlotMapping
。
搭載 Android 14 以上版本的裝置:數據機 必須通過 MEP 模式 則會傳回所有 CardStatus 事件
SIM 卡插槽狀態
數據機必須支援
SimSlotStatus
做為回應
getSimSlotsStatus
方法。SIM 卡插槽狀態包括
SimPortInfo
介面,其中包括通訊埠索引、已啟用設定檔的 ICCID,以及
通訊埠狀態數據機必須傳回至少兩個 SimPortInfo
物件。
搭載 Android 14 以上版本的裝置:數據機 必須通過 MEP 模式 則會傳回所有 CardStatus 事件
setSimSlotMapping
setSimSlotMapping
方法必須傳送
SimPortSlotMapping
。
陣列的索引是邏輯運算單元
SimPortSlotMapping
會指定對應的對應通訊埠和實體運算單元
索引。setSimSlotMapping
方法會將通訊埠的對應關係設為邏輯
版位。LPA 應用程式會使用
即可選取使用中的通訊埠。
支援 eUICC 的 MEP 的 API
Android 裝置在 Android 開放原始碼計畫中支援多個已啟用的設定檔 必須啟用電話堆疊來支援下列 API。
UiccCardInfo
- (Android 13 以上版本)
isMultipleEnabledProfilesSupported
:傳回這個 UICC 是否支援 MEP。 - (Android 13 以上版本)
getPorts
: 退貨程序 特定 UICC 的所有可用通訊埠清單。如果 UICC 是 pSIM 卡 或 eSIM 卡不支援 MEP,傳回一個元素清單。 - (已淘汰)
getIccId
: 傳回 ICCID。因為一個 UICC 可能會針對裝置有多個 ICCID 與 MEP 搭配使用,請改用UiccPortInfo.getIccId()
。
(Android 13 以上版本) UiccPortInfo
getIccId
: 如果這個通訊埠已啟用訂閱項目,系統會傳回 ICCID。getPortIndex
: 傳回通訊埠索引。getLogicalSlotIndex
: 傳回使用中的邏輯數據機堆疊索引。
訂閱資訊
- (Android 13 以上版本)
getPortIndex
: 傳回啟用訂閱的通訊埠索引。如果 訂閱項目已停用,會傳回INVALID_PORT_ID -1
。
EuiccManager
switchToSubscription
: 切換至指定訂閱項目。供沒有電信業者的應用程式使用 權限呼叫時,平台 透過選取三選選擇的方式,內部解析通訊埠索引 對話方塊 如果沒有可用通訊埠,即可停用所選有效訂閱項目。 指定 Android 13 以上版本的應用程式不得使用 即可停用這個 API 來停用訂閱功能 訂閱 ID 無效; 而是必須使用switchToSubscription
方法 (已在 Android 13 中新增) 搭配通訊埠索引 。- (Android 13 以上版本)
switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback)
: 切換至指定訂閱項目。具備電信業者權限的通話應用程式 有效訂閱項目可以指定要啟用訂閱的通訊埠 保持開啟。 - (Android 13 以上版本)
isSimPortAvailable
: 傳回是否已提供傳遞的通訊埠索引。有可用的通訊埠 如果尚未啟用訂閱服務,或通話應用程式具有電信業者權限 而非特定通訊埠的安裝訂閱項目
EuiccService
- (Android 13 以上版本)
onSwitchToSubscriptionWithPort
: 在指定通訊埠上切換至指定的訂閱項目。導入 LPA 必須在 Android 13 以上版本中支援這項功能。
電話管理工具
- (Android 13 以上版本)
getSimApplicationState
: 傳回代表卡片應用程式狀態的常數。這個 API 會傳遞實體運算單元索引和通訊埠索引。getSimApplicationState(int physicalSlotIndex)
方法 (已淘汰) 只會傳遞實體運算單元索引以取得simApplicationState
物件。 - (Android 13 以上版本)
setSimSlotMapping(Collection<UiccSlotMapping> slots)
: 將邏輯運算單元對應至實體運算單元和通訊埠。 - (Android 13 以上版本)
Collection<UiccSlotMapping> getSimSlotMapping
: 取得邏輯運算單元與實體 SIM 卡運算單元和通訊埠索引的對應關係。
使用者介面
為解決難以選取 eSIM 卡連接埠選項的問題,請在支援 MEP 的裝置上 使用者必須能停用其中一個有效訂閱項目,才能啟用新的 訂閱項目中的所有進階功能!在 Android 13 中,Android 開放原始碼計畫提供使用者流程 是複選題 對話方塊 您可以在「設定」應用程式中,將其套用至訂閱項目,藉此啟用使用者流程。 圖 6 是此使用者體驗流程的範例。
圖 6. 啟用 SIM 卡訂閱的使用者流程
Feature flags
如要支援 MEP,裝置必須宣告下列功能旗標:
導入 LPA
如要支援 MEP,請確保您的 LPA 導入方式符合下列規定:
- 導入來自 EuiccService 的 API 支援多個通訊埠
- 使用 API 選取通訊埠及啟用設定檔。
- 提供使用者體驗,允許電信業者應用程式啟用所選通訊埠上的設定檔。
驗證
如要測試 MEP 功能的實作,請確定建構已通過
以下是 CTS 測試案例 (適用於公用 API):
/platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts
。
裝置製造商也必須支援數據機、eUICC 晶片和 eSIM 卡 OS ,確保裝置可執行下列操作:
- 你可以啟用兩個 eSIM 卡設定檔,並將其連接至兩個不同的網路。
- 你可以在任何 eSIM 卡連接埠上啟用及停用 eSIM 卡設定檔。
- 電信業者應用程式會觸發使用者體驗流程,讓使用者切換應用程式時
推薦電信業者
確保使用者將 eSIM 卡設定檔移動後不會失去服務 通訊埠,建議電信業者提供下列支援:
- IMEI 和 SIM 卡的浮動對應
- 每個 eUICC ID (EID) 都有多個 ICCID 或 SIM 卡