Auf Geräten mit Android 13 oder höher unterstützt Android mehrere aktivierte Profile (MEPs) für eUICC. Mit dieser Funktion können Geräte die Dual SIM-Unterstützung über einen einzigen eSIM-Chip nutzen, der mehrere SIM-Profile haben und sich gleichzeitig mit zwei verschiedenen Mobilfunkanbietern verbinden kann. Gerätehersteller müssen mit SoC- und eSIM-Chipsatz-Anbietern zusammenarbeiten, um diese Funktion in ihre Geräte zu integrieren.
Hintergrund
Auf Geräten mit Android 12 und niedriger bietet AOSP nur eingeschränkte Unterstützung, sodass eine einzelne eSIM nicht mehrere Profile gleichzeitig unterstützen kann. Trotz der erheblichen Platz- und Kosteneinsparungen, die eSIM bietet, verhindert dieser Mangel an Dual-SIM-Unterstützung, dass Gerätehersteller Geräte einführen, die ausschließlich eSIM unterstützen. Um Dual-SIM-Unterstützung auf einem Gerät mit reiner eSIM zu ermöglichen, müssen Gerätehersteller zwei eSIM-Elemente in das Gerät einbauen. Dies erhöht die Materialkosten und führt zu einer schlechten Nutzererfahrung bei der Aboverwaltung. Die MEP-Funktion, die in AOSP ab Android 13 verfügbar ist, behebt dieses Problem.
eUICC-Architektur
In diesem Abschnitt wird die eSIM-Chiparchitektur für Geräte mit MEP für verschiedene Android-Versionen und die eSIM-Chiparchitektur für Geräte ohne MEP beschrieben.
Android 14
Auf Geräten mit Android 14 oder höher unterstützt Android die Optionen MEP-A1 und MEP-B für die Auswahl des Root-Sicherheitsdomain-Stamms des Ausstellers (ISD-R) und die Auswahl der eSIM-Ports (siehe GSMA SGP V22 3.0). Im Folgenden werden die ISD-R-Auswahlmodelle MEP-A1 und MEP-B beschrieben.
MEP-A1:ISD-R wird auf Port 0 (Befehlsport 0) und Profile auf eSIM-Ports 1 und höher ausgewählt. ES10-Befehle werden immer an Port 0 gesendet. Befehls- und Zielport sind immer unterschiedlich. Der LPA wählt den Anschluss aus.
Abbildung 1. MEP-A1 ISD-R-Auswahlmodell
MEP-B:ISD-R wird an jedem Port ausgewählt und jedem Port kann ein Profil zugewiesen werden. Die Befehle zum Aktivieren und Deaktivieren werden an den Port gesendet, an dem das Profil aktiviert oder deaktiviert werden muss (wo eine Aktualisierung aussteht). Befehls- und Zielport sind immer identisch.
Abbildung 2. MEP-B ISD-R-Auswahlmodell
Android 13
Unter Android 13 oder höher enthalten Geräte, die MEP unterstützen, mehrere eUICC-Ports, für die ein Profil aktiviert werden kann. Wie in Abbildung 3 dargestellt, unterstützt bei dieser Architektur eine einzelne eUICC (ein einzelner physischer Steckplatz) Dual SIM Dual Standby (DSDS), da jeder eUICC-Port mit einem Modem-Basisband verbunden ist. Android 13 HAL und APIs sind unabhängig von den MEP-Varianten.
Abbildung 3: eSIM-Chiparchitektur mit MEP-Unterstützung (Android 13 oder höher)
Android 12 und niedriger
Bei Geräten mit Android 12 oder niedriger ohne MEP (siehe Abbildung 4) unterstützt der eSIM-Slot jeweils nur ein einziges aktiviertes Profil und das Gerät unterstützt DSDS nicht.
Abbildung 4: eSIM-Chiparchitektur ohne MEP-Unterstützung (Android 12 oder niedriger)
API-Informationsfluss für mehrere aktivierte Profile
Abbildung 5 zeigt den Informationsfluss für MEP für eUICC in Android 13. Das Telefonie-Framework enthält die Klasse UiccPort
, die die physische Struktur der eUICC darstellt. Die Klasse UiccPort
wird für alle Arten von SIM-Karten verwendet: physische SIM (pSIM), integrierte SIM (iSIM) und eingebettete SIM (eSIM). Bei einer eUICC mit mehreren Ports werden ein einzelnes UiccSlot
-Objekt und ein einzelnes UiccCard
-Objekt mehreren UiccPort
-Instanzen zugeordnet. Jede UiccPort
-Instanz kann mit maximal einer UiccProfile
-Instanz verknüpft sein. Bei diesem Ablauf kann UiccPort
einem logischen Steckplatz und UiccSlot
(physischer Steckplatz) mehreren logischen Steckplätzen zugeordnet werden.
Abbildung 5: Informationsfluss für eUICC mit MEP-Unterstützung
Implementierung
In diesem Abschnitt wird beschrieben, wie Sie die MEP-Funktion implementieren, einschließlich Details zu HAL-Anforderungen, APIs und Benutzeroberfläche. Gerätehersteller sollten mit SoC-Anbietern und eSIM-Chipsatzanbietern zusammenarbeiten, um MEP zu unterstützen.
HAL-Anforderungen
Implementieren Sie zur Unterstützung von MEP für eUICC die folgenden IRadio AIDL HAL APIs, die sich unter /platform/hardware/interfaces/radio/aidl/aidl_api
befinden.
Auf Geräten mit Android 14 oder höher muss die IRadio 2.1-Version der HAL-Schnittstellen verwendet werden. Diese verwenden MultipleEnabledProfileMode
(ISD-R-Auswahlmodell, das vom Modem oder eUICC unterstützt wird) und geben ES10-APDU-Befehlsinformationen während ICC-logischer Kanalvorgänge weiter.
Kartenstatus
Das Modem muss die CardStatus
API als Antwort auf die Methode getIccCardStatusResponse
unterstützen. Die Antwort muss den Portindex und den Index des physischen Slots enthalten, der durch SimPortSlotMapping
angegeben wird.
Bei Geräten mit Android 14 oder höher muss das Modem den unterstützten MEP-Modus mit allen CardStatus-Ereignissen übergeben.
SIM-Slot-Status
Das Modem muss die SimSlotStatus
API als Antwort auf die Methode getSimSlotsStatus
unterstützen. Der SIM-Slot-Status enthält ein Array der SimPortInfo
-Benutzeroberfläche, das den Portindex, die ICCID für das aktivierte Profil und den Portstatus enthält. Das Modem muss mindestens zwei SimPortInfo
-Objekte zurückgeben.
Bei Geräten mit Android 14 oder höher muss das Modem den unterstützten MEP-Modus mit allen CardStatus-Ereignissen durchlaufen.
setSimSlotMapping
Die Methode setSimSlotMapping
muss ein Array von SimPortSlotMapping
übergeben.
Der Index des Arrays ist der logische Steckplatz und SimPortSlotMapping
gibt den entsprechenden zugeordneten Port und den Index des physischen Steckplatzes an. Mit der Methode setSimSlotMapping
wird die Zuordnung von Ports zu logischen Slots festgelegt. Die LPA-App verwendet diese Methode, um den aktiven Anschluss auszuwählen.
APIs, die MEP für eUICC unterstützen
Android-Geräte, die mehrere aktivierte Profile als Teil des AOSP-Telefoniestacks unterstützen, müssen die folgenden APIs unterstützen.
UICCardInfo
- (Android 13 und höher)
isMultipleEnabledProfilesSupported
: Gibt an, ob diese UICC MEP unterstützt. - (Android 13 und höher)
getPorts
:Gibt die Liste aller möglichen Ports für eine bestimmte UICC zurück. Wenn die UICC eine pSIM oder eSIM ist, die MEP nicht unterstützt, wird eine Liste mit einem Element zurückgegeben. - (Verworfen)
getIccId
:Gibt eine ICCID zurück. Da eine UICC bei Geräten mit MEP mehr als eine ICCID enthalten kann, verwenden Sie stattdessenUiccPortInfo.getIccId()
.
(Android 13 und höher) UiccPortInfo
getIccId
:Gibt die ICCID zurück, wenn auf diesem Anschluss ein aktiviertes Abo vorhanden ist.getPortIndex
:Gibt den Portindex zurück.getLogicalSlotIndex
: Gibt den Index des aktiven logischen Modemstacks zurück.
SubscriptionInfo
- (Android 13 und höher)
getPortIndex
:Gibt den Portindex zurück, für den das Abo aktiviert ist. Wenn das Abo deaktiviert ist, wirdINVALID_PORT_ID -1
zurückgegeben.
EuiccManager
switchToSubscription
:Schaltet zu einem bestimmten Abo. Wird von Apps verwendet, die keine Berechtigungen des Mobilfunkanbieters für aktive Abos haben. Wenn die Plattform aufgerufen wird, löst sie den Portindex intern über ein Dialogfeld mit drei Auswahlmöglichkeiten auf, um das ausgewählte aktive Abo zu deaktivieren, wenn keine Ports verfügbar sind. Apps, die auf Android 13 und höher ausgerichtet sind, dürfen diese API nicht verwenden, um ein Abo zu deaktivieren, indem eine ungültige Abo-ID übergeben wird. Stattdessen muss die MethodeswitchToSubscription
(in Android 13 hinzugefügt) mit dem angegebenen Portindex verwendet werden.- (Android 13 und höher)
switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback)
:Wählt ein bestimmtes Abo aus. Beim Aufrufen von Apps mit Mobilfunkanbieter-Berechtigung über die aktiven Abos kann angegeben werden, über welchen Port das Abo aktiviert werden soll. - (Android 13 und höher)
isSimPortAvailable
:Gibt an, ob der übergebene Portindex verfügbar ist. Ein Anschluss ist verfügbar, wenn für ihn kein Abo aktiviert ist oder die anrufende App über Berechtigungen des Mobilfunkanbieters für das am ausgewählten Anschluss installierte Abo verfügt.
EuiccService
- (Android 13 und höher)
onSwitchToSubscriptionWithPort
: Wechselt zu einem bestimmten Abo an einem bestimmten Port. Die LPA-Implementierung muss dies unter Android 13 und höher unterstützen.
TelephonyManager
- (Android 13 und höher)
getSimApplicationState
:Gibt eine Konstante zurück, die den Status der Kartenanwendung angibt. Diese API gibt sowohl einen physischen Steckplatzindex als auch einen Portindex an. Die MethodegetSimApplicationState(int physicalSlotIndex)
(eingestellt) übergibt nur den physischen Slotindex, um einsimApplicationState
-Objekt zu erhalten. - (Android 13 und höher)
setSimSlotMapping(Collection<UiccSlotMapping> slots)
: Ordnet die logischen Slots physischen Slots und Ports zu. - (Android 13 und höher)
Collection<UiccSlotMapping> getSimSlotMapping
:Ermöglicht die Zuordnung von logischen zu physischen SIM-Slots und Portindexen.
Benutzeroberfläche
Um die Mehrdeutigkeit der Auswahl des eSIM-Ports zu beheben, müssen Nutzer auf Geräten, die MEP unterstützen, eines der aktiven Abos deaktivieren können, um ein neues Abo zu aktivieren. In Android 13 enthält AOSP einen Nutzerfluss mit einem Dialogfeld mit drei Auswahlmöglichkeiten, das auf Abos angewendet werden kann, um Nutzerflüsse aus der Einstellungen App zu ermöglichen. Abbildung 6 zeigt ein Beispiel für diesen UX-Flow.
Abbildung 6 Aufrufabfolge für die Aktivierung eines SIM-Abos
Funktions-Flags
Zur Unterstützung von MEP müssen Geräte die folgenden Feature-Flags deklarieren:
LPA-Implementierung
Damit die Mehrfachpreisangaben unterstützt werden können, muss Ihre LPA-Implementierung die folgenden Anforderungen erfüllen:
- Implementiert die APIs von EuiccService, um mehrere Ports zu unterstützen.
- Verwendet die APIs für die Portauswahl und die Profilaktivierung.
- Bietet eine Benutzeroberfläche, mit der Mobilfunkanbieter-Apps Profile an ausgewählten Ports aktivieren können.
Zertifizierungsstufe
Um die Implementierung der MEP-Funktion zu testen, müssen die Builds die folgenden CTS-Testfälle (für öffentliche APIs) bestehen:
/platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts
.
Gerätehersteller sollten sich auch an ihre Modem-, eUICC-Chip- und eSIM-Betriebssystemanbieter wenden, um sicherzustellen, dass das Gerät Folgendes kann:
- Zwei eSIM-Profile können aktiviert und mit zwei verschiedenen Netzwerken verknüpft werden.
- eSIM-Profile können an jedem eSIM-Port aktiviert und deaktiviert werden.
- Es gibt einen UX-Vorgang, der von der Mobilfunkanbieter-App ausgelöst wird und es Nutzern ermöglicht, das Profil zu wechseln.
Empfehlung für Mobilfunkanbieter
Damit Nutzer nicht den Dienst verlieren, wenn sie eSIM-Profile von einem Anschluss zu einem anderen verschieben, empfehlen wir Mobilfunkanbietern, Folgendes zu unterstützen:
- Flexible Zuordnung von IMEI und SIM
- Mehrere ICCIDs oder SIMs für jede eUICC-Kennung (EID)