W przypadku urządzeń z systemem Android 13 lub nowszym Android obsługuje wiele włączonych profili (MEP) dla eUICC. Ta funkcja umożliwia urządzeniom obsługę dwóch kart SIM przy użyciu jednego układu eSIM, który może mieć wiele profili SIM i może łączyć się z dwoma różnymi operatorami w tym samym czasie. Producenci urządzeń muszą współpracować z dostawcami SoC i dostawcami chipsetów eSIM, aby zintegrować tę funkcję na swoich urządzeniach.
Tło
Na urządzeniach z systemem Android 12 i starszym AOSP zapewnia ograniczone wsparcie, umożliwiając jednej karcie eSIM obsługę wielu profili jednocześnie. Pomimo znacznych oszczędności miejsca i kosztów, jakie oferuje eSIM, ten brak obsługi dwóch kart SIM uniemożliwia producentom urządzeń przyjmowanie urządzeń obsługujących wyłącznie eSIM. Aby zapewnić obsługę dwóch kart SIM na urządzeniu obsługującym wyłącznie eSIM, producenci urządzeń muszą umieścić w urządzeniu dwa elementy eSIM, co zwiększa koszty zestawienia materiałów (BOM) i prowadzi do złego doświadczenia użytkowników w zakresie zarządzania subskrypcjami. Funkcja MEP dostępna w AOSP z Androida 13 rozwiązuje ten problem.
Zmiana architektury eUICC
Ta sekcja zawiera porównanie architektury chipów eSIM dla urządzeń z MEP z systemem Android 13 i dla urządzeń bez MEP Android 12 i starszych. W przypadku urządzeń obsługujących MEP, jak pokazano na rysunku 1, gniazdo eSIM zawiera wiele portów eUICC, z których każdy może mieć włączony profil. W tej architekturze pojedyncze gniazdo eUICC (pojedyncze gniazdo fizyczne) obsługuje podwójny tryb gotowości dual SIM (DSDS) dzięki połączeniu każdego portu eUICC z pasmem podstawowym modemu. Rysunek 2 przedstawia architekturę układu eSIM dla urządzeń bez MEP.
Rysunek 1. Architektura układu eSIM z obsługą MEP (Android 13 lub nowszy)
Rysunek 2. Architektura układu eSIM bez obsługi MEP (Android 12 lub starszy)
Przepływ informacji API dla wielu włączonych profili
Rysunek 3 przedstawia przepływ informacji dla MEP dla eUICC w systemie Android 13. Struktura telefonii obejmuje klasę UiccPort
, która reprezentuje fizyczną strukturę eUICC. Klasa UiccPort
jest używana dla wszystkich typów kart SIM: fizycznej karty SIM (pSIM), zintegrowanej karty SIM (iSIM) i wbudowanej karty SIM (eSIM). W przypadku eUICC z wieloma portami pojedynczy obiekt UiccSlot
i obiekt UiccCard
są mapowane na wiele instancji UiccPort
. Każda instancja UiccPort
może łączyć się z maksymalnie jedną instancją UiccProfile
. Ten przepływ umożliwia mapowanie UiccPort
do gniazda logicznego i UiccSlot
(gniazdo fizyczne) do mapowania wielu gniazd logicznych.
Rysunek 3. Przepływ informacji dla eUICC z obsługą MEP
Realizacja
W tej sekcji opisano, jak zaimplementować funkcję MEP, w tym szczegółowe informacje na temat wymagań HAL, interfejsów API i interfejsu użytkownika. Producenci urządzeń powinni współpracować z dostawcami SoC i dostawcami chipsetów eSIM w celu obsługi MEP.
Wymagania HAL
Aby obsługiwać MEP dla eUICC, zaimplementuj następujące interfejsy API IRadio 2.0 AIDL HAL .
Stan karty
Modem musi obsługiwać API CardStatus
jako odpowiedź na metodę getIccCardStatusResponse
. Odpowiedź musi zawierać indeks portu i fizyczny indeks gniazda określony przez SimPortSlotMapping
.
Stan gniazda Sima
Modem musi obsługiwać API SimSlotStatus
jako odpowiedź na metodę getSimSlotsStatus
. Status gniazda SIM obejmuje tablicę interfejsu SimPortInfo
, która zawiera indeks portu, identyfikator ICCID dla aktywnego profilu oraz stan portu. Modem musi zwrócić co najmniej dwa obiekty SimPortInfo
.
ustawSimSlotMapping
Metoda setSimSlotMapping
musi przekazać tablicę SimPortSlotMapping
. Indeksem tablicy jest gniazdo logiczne, a SimPortSlotMapping
określa odpowiadający mu zmapowany port i indeks gniazda fizycznego. Metoda setSimSlotMapping
ustawia mapowanie portów na gniazda logiczne. Aplikacja LPA używa tej metody do wybierania aktywnego portu.
API wspierające MEP dla eUICC
Urządzenia z systemem Android, które obsługują wiele włączonych profili jako część stosu telefonii AOSP, muszą obsługiwać następujące interfejsy API.
Informacje o karcie Uicc
- (Android 13 i nowsze)
isMultipleEnabledProfilesSupported
: Zwraca informację, czy ten UICC obsługuje MEP. - (Android 13 i nowsze)
getPorts
: Zwraca listę wszystkich możliwych portów dla określonego UICC. Jeśli UICC to pSIM lub eSIM, który nie obsługuje MEP, zwraca listę jednego elementu. - (Przestarzałe)
getIccId
: Zwraca ICCID. Ponieważ UICC może mieć więcej niż jeden ICCID dla urządzeń z MEP, zamiast tego użyjUiccPortInfo.getIccId()
.
(Android 13 i nowszy) UiccPortInfo
-
getIccId
: Zwraca ICCID, jeśli na tym porcie jest włączona subskrypcja. -
getPortIndex
: Zwraca indeks portu. -
getLogicalSlotIndex
: Zwraca indeks stosu aktywnego modemu logicznego.
Informacje o subskrypcji
- (Android 13 i nowsze)
getPortIndex
: Zwraca indeks portu, na którym włączona jest subskrypcja. Jeśli subskrypcja jest wyłączona, zwracaINVALID_PORT_ID -1
.
Menedżer Euicc
-
switchToSubscription
: Przełącza na daną subskrypcję. Używany przez aplikacje, które nie mają uprawnień operatora w aktywnych subskrypcjach. Po wywołaniu platforma wewnętrznie rozwiązuje indeks portów za pomocą okna dialogowego wyboru z trzema opcjami, aby wyłączyć wybraną aktywną subskrypcję, jeśli nie ma dostępnych portów. Aplikacje kierowane na Androida 13 i nowsze nie mogą używać tego interfejsu API do wyłączania subskrypcji przez przekazanie nieprawidłowego identyfikatora subskrypcji ; zamiast tego muszą użyć metodyswitchToSubscription
(dodanej w systemie Android 13) z określonym indeksem portu. - (Android 13 i nowsze)
switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback)
: Przełącza na określoną subskrypcję. Aplikacje wywołujące z uprawnieniami operatora w ramach aktywnych subskrypcji mogą określić port, na którym ma zostać włączona subskrypcja. - (Android 13 i nowsze)
isSimPortAvailable
: Zwraca informację, czy indeks przechodzącego portu jest dostępny. Port jest dostępny, jeśli nie ma włączonej subskrypcji lub aplikacja wywołująca ma uprawnienia operatora w stosunku do subskrypcji zainstalowanej na wybranym porcie.
EuiccService
- (Android 13 i nowsze)
onSwitchToSubscriptionWithPort
: Przełącza na określoną subskrypcję na określonym porcie. Implementacja LPA musi obsługiwać to na Androidzie 13 i nowszych.
Menedżer telefonii
- (Android 13 i nowsze)
getSimApplicationState
: Zwraca stałą wskazującą stan aplikacji karty. Ten interfejs API przekazuje zarówno indeks gniazda fizycznego, jak i indeks portu. MetodagetSimApplicationState(int physicalSlotIndex)
(wycofana) przekazuje tylko indeks gniazda fizycznego w celu pobrania obiektusimApplicationState
. - (Android 13 i nowsze)
setSimSlotMapping(Collection<UiccSlotMapping> slots)
: Mapuje logiczne gniazda na fizyczne gniazda i porty. - (Android 13 i nowsze)
Collection<UiccSlotMapping> getSimSlotMapping
: Pobiera mapowanie z gniazd logicznych na fizyczne gniazda karty SIM i indeksy portów.
Interfejs użytkownika
Aby rozwiązać niejednoznaczność wyboru portu eSIM, na urządzeniach obsługujących MEP użytkownicy muszą mieć możliwość wyłączenia jednej z aktywnych subskrypcji, aby włączyć nową subskrypcję. W systemie Android 13 AOSP zawiera przepływ użytkownika z oknem dialogowym trzech opcji, które można zastosować do subskrypcji, umożliwiając przepływy użytkowników z aplikacji Ustawienia. Rysunek 4 pokazuje przykład takiego przepływu UX.
Rysunek 4. Przebieg użytkownika w celu włączenia subskrypcji SIM
Flagi funkcji
Aby obsługiwać MEP, urządzenia muszą zadeklarować następujące flagi funkcji:
wdrożenie LPA
Aby wesprzeć MEP, upewnij się, że implementacja LPA spełnia następujące wymagania:
- Implementuje interfejsy API z EuiccService w celu obsługi wielu portów.
- Używa interfejsów API do wyboru portu i włączania profilu.
- Zapewnia UX, umożliwiając aplikacjom operatorów włączanie profili na wybranych portach.
Walidacja
Aby przetestować implementację funkcji MEP, upewnij się, że kompilacje przechodzą następujące przypadki testowe CTS (dla publicznych interfejsów API): /platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts
.
Producenci urządzeń powinni również współpracować z dostawcami swoich modemów, układów eUICC i systemów operacyjnych eSIM, aby zapewnić, że urządzenie może wykonywać następujące czynności:
- Dwa profile eSIM można włączyć i podłączyć do dwóch różnych sieci.
- Profile eSIM można aktywować i dezaktywować na dowolnym porcie eSIM.
- Istnieje przepływ UX wyzwalany przez aplikację operatora, umożliwiającą użytkownikom przełączanie profili.
W przypadku urządzeń z systemem Android 13 lub nowszym Android obsługuje wiele włączonych profili (MEP) dla eUICC. Ta funkcja umożliwia urządzeniom obsługę dwóch kart SIM przy użyciu jednego układu eSIM, który może mieć wiele profili SIM i może łączyć się z dwoma różnymi operatorami w tym samym czasie. Producenci urządzeń muszą współpracować z dostawcami SoC i dostawcami chipsetów eSIM, aby zintegrować tę funkcję na swoich urządzeniach.
Tło
Na urządzeniach z systemem Android 12 i starszym AOSP zapewnia ograniczone wsparcie, umożliwiając jednej karcie eSIM obsługę wielu profili jednocześnie. Pomimo znacznych oszczędności miejsca i kosztów, jakie oferuje eSIM, ten brak obsługi dwóch kart SIM uniemożliwia producentom urządzeń przyjmowanie urządzeń obsługujących wyłącznie eSIM. Aby zapewnić obsługę dwóch kart SIM na urządzeniu obsługującym wyłącznie eSIM, producenci urządzeń muszą umieścić w urządzeniu dwa elementy eSIM, co zwiększa koszty zestawienia materiałów (BOM) i prowadzi do złego doświadczenia użytkowników w zakresie zarządzania subskrypcjami. Funkcja MEP dostępna w AOSP z Androida 13 rozwiązuje ten problem.
Zmiana architektury eUICC
Ta sekcja zawiera porównanie architektury chipów eSIM dla urządzeń z MEP z systemem Android 13 i dla urządzeń bez MEP Android 12 i starszych. W przypadku urządzeń obsługujących MEP, jak pokazano na rysunku 1, gniazdo eSIM zawiera wiele portów eUICC, z których każdy może mieć włączony profil. W tej architekturze pojedyncze gniazdo eUICC (pojedyncze gniazdo fizyczne) obsługuje podwójny tryb gotowości dual SIM (DSDS) dzięki połączeniu każdego portu eUICC z pasmem podstawowym modemu. Rysunek 2 przedstawia architekturę układu eSIM dla urządzeń bez MEP.
Rysunek 1. Architektura układu eSIM z obsługą MEP (Android 13 lub nowszy)
Rysunek 2. Architektura układu eSIM bez obsługi MEP (Android 12 lub starszy)
Przepływ informacji API dla wielu włączonych profili
Rysunek 3 przedstawia przepływ informacji dla MEP dla eUICC w systemie Android 13. Struktura telefonii obejmuje klasę UiccPort
, która reprezentuje fizyczną strukturę eUICC. Klasa UiccPort
jest używana dla wszystkich typów kart SIM: fizycznej karty SIM (pSIM), zintegrowanej karty SIM (iSIM) i wbudowanej karty SIM (eSIM). W przypadku eUICC z wieloma portami pojedynczy obiekt UiccSlot
i obiekt UiccCard
są mapowane na wiele instancji UiccPort
. Każda instancja UiccPort
może łączyć się z maksymalnie jedną instancją UiccProfile
. Ten przepływ umożliwia mapowanie UiccPort
do gniazda logicznego i UiccSlot
(gniazdo fizyczne) do mapowania wielu gniazd logicznych.
Rysunek 3. Przepływ informacji dla eUICC z obsługą MEP
Realizacja
W tej sekcji opisano, jak zaimplementować funkcję MEP, w tym szczegółowe informacje na temat wymagań HAL, interfejsów API i interfejsu użytkownika. Producenci urządzeń powinni współpracować z dostawcami SoC i dostawcami chipsetów eSIM w celu obsługi MEP.
Wymagania HAL
Aby obsługiwać MEP dla eUICC, zaimplementuj następujące interfejsy API IRadio 2.0 AIDL HAL .
Stan karty
Modem musi obsługiwać API CardStatus
jako odpowiedź na metodę getIccCardStatusResponse
. Odpowiedź musi zawierać indeks portu i fizyczny indeks gniazda określony przez SimPortSlotMapping
.
Stan gniazda Sima
Modem musi obsługiwać API SimSlotStatus
jako odpowiedź na metodę getSimSlotsStatus
. Status gniazda SIM obejmuje tablicę interfejsu SimPortInfo
, która zawiera indeks portu, identyfikator ICCID dla aktywnego profilu oraz stan portu. Modem musi zwrócić co najmniej dwa obiekty SimPortInfo
.
ustawSimSlotMapping
Metoda setSimSlotMapping
musi przekazać tablicę SimPortSlotMapping
. Indeksem tablicy jest gniazdo logiczne, a SimPortSlotMapping
określa odpowiadający mu zmapowany port i indeks gniazda fizycznego. Metoda setSimSlotMapping
ustawia mapowanie portów na gniazda logiczne. Aplikacja LPA używa tej metody do wybierania aktywnego portu.
API wspierające MEP dla eUICC
Urządzenia z systemem Android, które obsługują wiele włączonych profili jako część stosu telefonii AOSP, muszą obsługiwać następujące interfejsy API.
Informacje o karcie Uicc
- (Android 13 i nowsze)
isMultipleEnabledProfilesSupported
: Zwraca informację, czy ten UICC obsługuje MEP. - (Android 13 i nowsze)
getPorts
: Zwraca listę wszystkich możliwych portów dla określonego UICC. Jeśli UICC to pSIM lub eSIM, który nie obsługuje MEP, zwraca listę jednego elementu. - (Przestarzałe)
getIccId
: Zwraca ICCID. Ponieważ UICC może mieć więcej niż jeden ICCID dla urządzeń z MEP, zamiast tego użyjUiccPortInfo.getIccId()
.
(Android 13 i nowszy) UiccPortInfo
-
getIccId
: Zwraca ICCID, jeśli na tym porcie jest włączona subskrypcja. -
getPortIndex
: Zwraca indeks portu. -
getLogicalSlotIndex
: Zwraca indeks stosu aktywnego modemu logicznego.
Informacje o subskrypcji
- (Android 13 i nowsze)
getPortIndex
: Zwraca indeks portu, na którym włączona jest subskrypcja. Jeśli subskrypcja jest wyłączona, zwracaINVALID_PORT_ID -1
.
Menedżer Euicc
-
switchToSubscription
: Przełącza na daną subskrypcję. Używany przez aplikacje, które nie mają uprawnień operatora w aktywnych subskrypcjach. Po wywołaniu platforma wewnętrznie rozwiązuje indeks portów za pomocą okna dialogowego wyboru z trzema opcjami, aby wyłączyć wybraną aktywną subskrypcję, jeśli nie ma dostępnych portów. Aplikacje kierowane na Androida 13 i nowsze nie mogą używać tego interfejsu API do wyłączania subskrypcji przez przekazanie nieprawidłowego identyfikatora subskrypcji ; zamiast tego muszą użyć metodyswitchToSubscription
(dodanej w systemie Android 13) z określonym indeksem portu. - (Android 13 i nowsze)
switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback)
: Przełącza na określoną subskrypcję. Aplikacje wywołujące z uprawnieniami operatora w ramach aktywnych subskrypcji mogą określić port, na którym ma zostać włączona subskrypcja. - (Android 13 i nowsze)
isSimPortAvailable
: Zwraca informację, czy indeks przechodzącego portu jest dostępny. Port jest dostępny, jeśli nie ma włączonej subskrypcji lub aplikacja wywołująca ma uprawnienia operatora w stosunku do subskrypcji zainstalowanej na wybranym porcie.
EuiccService
- (Android 13 i nowsze)
onSwitchToSubscriptionWithPort
: Przełącza na określoną subskrypcję na określonym porcie. Implementacja LPA musi obsługiwać to na Androidzie 13 i nowszych.
Menedżer telefonii
- (Android 13 i nowsze)
getSimApplicationState
: Zwraca stałą wskazującą stan aplikacji karty. Ten interfejs API przekazuje zarówno indeks gniazda fizycznego, jak i indeks portu. MetodagetSimApplicationState(int physicalSlotIndex)
(wycofana) przekazuje tylko indeks gniazda fizycznego w celu pobrania obiektusimApplicationState
. - (Android 13 i nowsze)
setSimSlotMapping(Collection<UiccSlotMapping> slots)
: Mapuje logiczne gniazda na fizyczne gniazda i porty. - (Android 13 i nowsze)
Collection<UiccSlotMapping> getSimSlotMapping
: Pobiera mapowanie z gniazd logicznych na fizyczne gniazda karty SIM i indeksy portów.
Interfejs użytkownika
Aby rozwiązać niejednoznaczność wyboru portu eSIM, na urządzeniach obsługujących MEP użytkownicy muszą mieć możliwość wyłączenia jednej z aktywnych subskrypcji, aby włączyć nową subskrypcję. W systemie Android 13 AOSP zawiera przepływ użytkownika z oknem dialogowym trzech opcji, które można zastosować do subskrypcji, umożliwiając przepływy użytkowników z aplikacji Ustawienia. Rysunek 4 pokazuje przykład takiego przepływu UX.
Rysunek 4. Przebieg użytkownika w celu włączenia subskrypcji SIM
Flagi funkcji
Aby obsługiwać MEP, urządzenia muszą zadeklarować następujące flagi funkcji:
wdrożenie LPA
Aby wesprzeć MEP, upewnij się, że implementacja LPA spełnia następujące wymagania:
- Implementuje interfejsy API z EuiccService w celu obsługi wielu portów.
- Używa interfejsów API do wyboru portu i włączania profilu.
- Zapewnia UX, umożliwiając aplikacjom operatorów włączanie profili na wybranych portach.
Walidacja
Aby przetestować implementację funkcji MEP, upewnij się, że kompilacje przechodzą następujące przypadki testowe CTS (dla publicznych interfejsów API): /platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts
.
Producenci urządzeń powinni również współpracować z dostawcami swoich modemów, układów eUICC i systemów operacyjnych eSIM, aby zapewnić, że urządzenie może wykonywać następujące czynności:
- Dwa profile eSIM można włączyć i podłączyć do dwóch różnych sieci.
- Profile eSIM można aktywować i dezaktywować na dowolnym porcie eSIM.
- Istnieje przepływ UX wyzwalany przez aplikację operatora, umożliwiającą użytkownikom przełączanie profili.