Android 13 eUICC MEP

多个启用的配置文件

书签边框

对于运行 Android 13 或更高版本的设备,Android 支持 eUICC 的多个启用的配置文件 (MEP)。此功能允许设备使用单个 eSIM 芯片支持双 SIM 卡,该芯片可以具有多个 SIM 配置文件,并且可以同时连接到两个不同的运营商。设备制造商必须与 SoC 供应商和 eSIM 芯片组供应商合作,将此功能集成到其设备上。

背景

在运行 Android 12 及更低版本的设备上,AOSP 提供有限的支持,允许单个 eSIM 同时支持多个配置文件。尽管 eSIM 可以显着节省空间和成本,但由于缺乏双 SIM 卡支持,设备制造商无法采用纯 eSIM 设备。为了在纯 eSIM 设备上提供双 SIM 卡支持,设备制造商必须将两个 eSIM 元件封装到设备中,这会增加物料清单 (BOM) 成本,并导致订阅管理的用户体验不佳。Android 13 的 AOSP 中提供的 MEP 功能解决了这个问题。

eUICC架构变更

本部分对运行 Android 13 且具有 MEP 的设备和运行不带 MEP Android 12 及更低版本的设备的 eSIM 芯片架构进行了比较。对于支持 MEP 的设备(如图 1 所示),eSIM 插槽包含多个 eUICC 端口,其中每个端口都可以有一个启用的配置文件。借助此架构,单个 eUICC(单个物理插槽)通过将每个 eUICC 端口链接到调制解调器基带来支持双 SIM 卡双待 (DSDS)。图 2 描述了没有 MEP 的设备的 eSIM 芯片架构。

Android 13 eUICC MEP_第1张图片

图 1.支持 MEP 的 eSIM 芯片架构(Android 13 或更高版本)

Android 13 eUICC MEP_第2张图片

 

图 2.不支持 MEP 的 eSIM 芯片架构(Android 12 或更低版本)

多个启用的配置文件的 API 信息流

图 3 描述了 Android 13 中 eUICC 的 MEP 信息流。电话框架包含 UiccPort表示 eUICC 上物理结构的类。该类 UiccPort适用于所有类型的 SIM 卡:物理 SIM (pSIM)、集成 SIM (iSIM) 和嵌入式 SIM (eSIM)。对于具有多个端口的 eUICC,单个UiccSlot对象和UiccCard对象映射到多个UiccPort实例。每个UiccPort实例最多可以链接到一个 UiccProfile实例。此流程允许UiccPort映射到一个逻辑插槽和 UiccSlot(物理插槽)映射到多个逻辑插槽。

Android 13 eUICC MEP_第3张图片

 

图 3.具有 MEP 支持的 eUICC 信息流

执行

本节介绍如何实现 MEP 功能,包括有关 HAL 要求、API 和用户界面的详细信息。设备制造商应与 SoC 供应商和 eSIM 芯片组供应商合作来支持 MEP。

HAL 要求

要支持 eUICC 的 MEP,请实现以下 IRadio 2.0 AIDL HAL API。

卡状态

调制解调器必须支持 CardStatus API 作为对该方法的响应 getIccCardStatusResponse 。响应必须包括 指定的端口索引和物理槽索引 SimPortSlotMapping。

SimSlot状态

调制解调器必须支持 SimSlotStatus API 作为对该方法的响应 getSimSlotsStatus 。SIM 插槽状态包括接口数组 SimPortInfo ,其中包括端口索引、已启用配置文件的 ICCID 以及端口状态。调制解调器必须返回至少两个SimPortInfo对象。

设置SimSlotMapping

该 setSimSlotMapping 方法必须传递一个 SimPortSlotMapping. 数组的索引是逻辑槽位, SimPortSlotMapping指定对应的映射端口和物理槽位索引。该setSimSlotMapping方法设置从端口到逻辑槽的映射。LPA 应用程序使用此方法来选择活动端口。

支持 eUICC MEP 的 API

作为 AOSP 电话堆栈一部分支持多个启用的配置文件的 Android 设备需要支持以下 API。

Uicc卡信息

  • (Android 13 及更高版本) isMultipleEnabledProfilesSupported :返回此 UICC 是否支持 MEP。
  • (Android 13 及更高版本) getPorts: 返回特定 UICC 的所有可能端口的列表。如果 UICC 是不支持 MEP 的 pSIM 或 eSIM,则返回一个元素的列表。
  • (已弃用) getIccId: 返回 ICCID。由于对于具有 MEP 的设备,UICC 可以有多个 ICCID,因此请改用UiccPortInfo.getIccId()

(Android 13 及更高版本)UiccPortInfo

  • getIccId: 如果此端口上启用了订阅,则返回 ICCID。
  • getPortIndex: 返回端口索引。
  • getLogicalSlotIndex: 返回活动逻辑调制解调器堆栈索引。

订阅信息

  • (Android 13 及更高版本) getPortIndex: 返回启用订阅的端口索引。如果订阅被禁用,则返回INVALID_PORT_ID -1

Euicc管理器

  • switchToSubscription: 切换到给定的订阅。由不具有有效订阅运营商权限的应用程序使用。调用时,平台会通过三项选择 对话框在内部解析端口索引 ,以便在没有可用端口时禁用所选的活动订阅。面向 Android 13 及更高版本的应用不得使用此 API 通过传递无效的订阅 ID来禁用订阅 ;相反,他们必须使用 switchToSubscription 指定端口索引的方法(在 Android 13 中添加)。
  • (Android 13 及更高版本) switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback): 切换到给定订阅。调用对活动订阅具有运营商权限的应用程序可以指定在哪个端口上启用订阅。
  • (Android 13及更高版本) isSimPortAvailable: 返回传递的端口索引是否可用。如果端口未启用订阅,或者调用应用程序对所选端口上安装的订阅具有运营商特权,则该端口可用。

Euicc服务

  • (Android 13 及更高版本) onSwitchToSubscriptionWithPort: 切换到指定端口上的给定订阅。LPA 实现必须在 Android 13 及更高版本上支持此功能。

电话管理器

  • (Android 13及更高版本) getSimApplicationState: 返回一个常量,指示卡应用程序的状态。该 API 传递物理插槽索引和端口索引。该 getSimApplicationState(int physicalSlotIndex) 方法(已弃用)仅传递物理槽索引来获取 simApplicationState对象。
  • (Android 13 及更高版本) setSimSlotMapping(Collection slots): 将逻辑插槽映射到物理插槽和端口。
  • (Android 13 及更高版本) Collection getSimSlotMapping: 获取从逻辑插槽到物理 SIM 插槽和端口索引的映射。

用户界面

为了解决 eSIM 端口选择的模糊性,在支持 MEP 的设备上,用户必须能够禁用其中一项活动订阅以启用新订阅。在 Android 13 中,AOSP 包含一个带有三项选择 对话框的用户流 ,该对话框可应用于从“设置”应用启用用户流的订阅。图 4 显示了此 UX 流程的示例。

Android 13 eUICC MEP_第4张图片

 

图 4.启用 SIM 订阅的用户流程

功能标志

为了支持 MEP,设备必须声明以下功能标志:

  • android.hardware.telephony.euicc
  • android.hardware.telephony.euicc.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 端口上激活和停用。
  • 运营商应用程序触发了一个用户体验流程,允许用户切换配置文件。

声明: 本文翻译AOSP文档

你可能感兴趣的:(eUICC)