สำหรับอุปกรณ์ที่ใช้ Android 13 ขึ้นไป Android รองรับโปรไฟล์ที่เปิดใช้หลายรายการ (MEP) สำหรับ eUICC ฟีเจอร์นี้ช่วยให้อุปกรณ์รองรับ 2 ซิมโดยใช้ชิป eSIM เดียว ซึ่งมีโปรไฟล์ซิมหลายโปรไฟล์และเชื่อมต่อกับผู้ให้บริการ 2 รายที่แตกต่างกันได้ในเวลาเดียวกัน ผู้ผลิตอุปกรณ์ต้องทำงานร่วมกับผู้จำหน่าย SoC และผู้จำหน่ายชิปเซ็ต eSIM เพื่อผสานรวมฟีเจอร์นี้ในอุปกรณ์ของตน
ฉากหลัง
ในอุปกรณ์ที่ใช้ Android 12 และต่ำกว่า AOSP มีการรองรับแบบจำกัดในการอนุญาตให้ eSIM เดียวรองรับหลายโปรไฟล์พร้อมกัน แม้ว่า eSIM จะช่วยประหยัดพื้นที่และค่าใช้จ่ายได้มาก แต่การไม่รองรับ 2 ซิม ทำให้ผู้ผลิตอุปกรณ์ไม่สามารถนำอุปกรณ์ที่ใช้ eSIM เท่านั้นมาใช้ หากต้องการรองรับ 2 ซิมในอุปกรณ์ที่ใช้ eSIM เท่านั้น ผู้ผลิตอุปกรณ์ ต้องบรรจุองค์ประกอบ eSIM 2 รายการลงในอุปกรณ์ ซึ่งจะเพิ่ม ต้นทุนรายการวัสดุ (BOM) และทำให้ผู้ใช้ได้รับประสบการณ์ที่ไม่ดีในการ จัดการการสมัครใช้บริการ ฟีเจอร์ MEP ที่มีให้บริการใน AOSP ตั้งแต่ Android 13 เป็นต้นไปจะช่วยแก้ปัญหานี้
สถาปัตยกรรม eUICC
ส่วนนี้จะอธิบายสถาปัตยกรรมชิป eSIM สำหรับอุปกรณ์ที่มี MEP สำหรับ 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: เลือก ISD-R ในพอร์ต 0 (พอร์ตคำสั่งคือ 0) และเลือกโปรไฟล์ ในพอร์ต eSIM 1 ขึ้นไป ระบบจะส่งคำสั่ง ES10 ไปยังพอร์ต 0 เสมอ และพอร์ตคำสั่งกับพอร์ตเป้าหมายจะต่างกันเสมอ LPA เลือกพอร์ต
รูปที่ 1 รูปแบบการเลือก MEP-A1 ISD-R
MEP-B: เลือก ISD-R ในพอร์ตใดก็ได้และกำหนดโปรไฟล์ให้กับพอร์ตใดก็ได้ ระบบจะส่งคำสั่งเปิดและปิดไปยังพอร์ตที่ต้องเปิดหรือปิดใช้โปรไฟล์ (ที่รอการรีเฟรช) พอร์ตคำสั่งและพอร์ตเป้าหมายจะเหมือนกันเสมอ
รูปที่ 2 รูปแบบการเลือก MEP-B ISD-R
Android 13
ใน Android 13 ขึ้นไป บนอุปกรณ์ที่รองรับ MEP ช่อง eSIM จะมีพอร์ต eUICC หลายพอร์ต โดยแต่ละพอร์ตจะมี โปรไฟล์ที่เปิดใช้ได้ ดังที่แสดงในรูปที่ 3 สถาปัตยกรรมนี้ช่วยให้ eUICC เดียว (ช่องเสียบจริงช่องเดียว) รองรับ 2 ซิม Dual Standby (DSDS) โดยการให้พอร์ต eUICC แต่ละพอร์ตลิงก์กับเบสแบนด์โมเด็ม HAL และ API ของ Android 13 ไม่ขึ้นอยู่กับตัวแปร MEP
รูปที่ 3 สถาปัตยกรรมชิป eSIM ที่รองรับ MEP (Android 13 ขึ้นไป)
Android 12 และต่ำกว่า
สำหรับอุปกรณ์ที่ใช้ Android 12 หรือต่ำกว่าที่ไม่มี MEP ดังที่แสดงในรูปที่ 4 ช่อง eSIM จะรองรับโปรไฟล์ที่เปิดใช้เพียงโปรไฟล์เดียวในแต่ละครั้ง ซึ่งหมายความว่า อุปกรณ์ไม่รองรับ DSDS
รูปที่ 4. สถาปัตยกรรมชิป eSIM ที่ไม่รองรับ MEP (Android 12 หรือต่ำกว่า)
ขั้นตอนการไหลของข้อมูล API สำหรับโปรไฟล์ที่เปิดใช้หลายโปรไฟล์
รูปที่ 5 อธิบายการไหลของข้อมูลสำหรับ MEP สำหรับ eUICC ใน
Android 13 เฟรมเวิร์กโทรศัพท์มีคลาส
UiccPort ซึ่งแสดงโครงสร้างจริงใน eUICC คลาส
UiccPort ใช้สำหรับซิมการ์ดทุกประเภท ได้แก่ ซิมจริง (pSIM),
ซิมในตัว (iSIM) และซิมฝัง (eSIM) สำหรับ eUICC ที่มีพอร์ตหลายพอร์ต
ออบเจ็กต์ UiccSlot เดียวและออบเจ็กต์ UiccCard จะแมปกับอินสแตนซ์ UiccPort หลายรายการ
อินสแตนซ์ UiccPort แต่ละรายการจะลิงก์กับอินสแตนซ์ UiccProfile ได้สูงสุด 1 รายการ ซึ่งช่วยให้ UiccPort แมปกับช่องโฆษณาเชิงตรรกะ
และ UiccSlot (ช่องโฆษณาจริง) แมปกับช่องโฆษณาเชิงตรรกะหลายช่องได้
รูปที่ 5 ขั้นตอนการไหลของข้อมูลสำหรับ eUICC ที่รองรับ MEP
การใช้งาน
ส่วนนี้อธิบายวิธีติดตั้งใช้งานฟีเจอร์ MEP รวมถึงรายละเอียด เกี่ยวกับข้อกำหนดของ HAL, API และอินเทอร์เฟซผู้ใช้ ผู้ผลิตอุปกรณ์ควร ทำงานร่วมกับผู้ให้บริการ SoC และผู้ให้บริการชิปเซ็ต eSIM เพื่อรองรับ MEP
ข้อกำหนดของ HAL
หากต้องการรองรับ MEP สำหรับ eUICC ให้ใช้ IRadio AIDL HAL API ต่อไปนี้
ซึ่งอยู่ใน /platform/hardware/interfaces/radio/aidl/aidl_api
อุปกรณ์ที่ใช้ Android 14 ขึ้นไปต้องใช้ HAL อินเทอร์เฟซเวอร์ชัน IRadio 2.1 ซึ่งใช้ MultipleEnabledProfileMode (โมเดลการเลือก ISD-R ที่โมเด็ม
หรือ eUICC รองรับ) และส่งข้อมูลคำสั่ง ES10 APDU ระหว่างช่องทางตรรกะ ICC
CardStatus
โมเด็มต้องรองรับ API ของ CardStatus เป็นการตอบกลับเมธอด getIccCardStatusResponse การตอบกลับต้องมีดัชนีพอร์ต
และดัชนีสล็อตจริงที่ระบุโดย SimPortSlotMapping
สำหรับอุปกรณ์ที่ใช้ Android 14 ขึ้นไป โมเด็ม ต้องผ่านโหมด MEP ที่รองรับพร้อมกับเหตุการณ์ CardStatus ทั้งหมด
SimSlotStatus
โมเด็มต้องรองรับ API ของ SimSlotStatus เป็นการตอบกลับเมธอด getSimSlotsStatus สถานะช่องใส่ซิมประกอบด้วยอาร์เรย์ของอินเทอร์เฟซ SimPortInfo ซึ่งรวมถึงดัชนีพอร์ต, ICCID สำหรับโปรไฟล์ที่เปิดใช้ และสถานะพอร์ต โมเด็มต้องส่งคืนออบเจ็กต์อย่างน้อย 2 รายการ
SimPortInfo
สำหรับอุปกรณ์ที่ใช้ Android 14 ขึ้นไป โมเด็ม ต้องผ่านโหมด MEP ที่รองรับพร้อมกับเหตุการณ์ CardStatus ทั้งหมด
setSimSlotMapping
เมธอด setSimSlotMapping ต้องส่งอาร์เรย์ของ
SimPortSlotMapping ดัชนีของอาร์เรย์คือสล็อตเชิงตรรกะ และ SimPortSlotMapping จะระบุพอร์ตที่แมปและดัชนีสล็อตจริงที่เกี่ยวข้อง
เมธอด setSimSlotMapping จะตั้งค่าการแมปจากพอร์ตไปยังสล็อตเชิงตรรกะ
แอป LPA ใช้เมธอดนี้เพื่อเลือกพอร์ตที่ใช้งานอยู่
API ที่รองรับ MEP สำหรับ eUICC
อุปกรณ์ Android ที่รองรับโปรไฟล์ที่เปิดใช้หลายโปรไฟล์ซึ่งเป็นส่วนหนึ่งของสแต็กโทรศัพท์ AOSP ต้องรองรับ API ต่อไปนี้
UiccCardInfo
- (Android 13 ขึ้นไป)
isMultipleEnabledProfilesSupported: แสดงว่า UICC นี้รองรับ MEP หรือไม่ - (Android 13 ขึ้นไป)
getPorts: แสดงรายการพอร์ตทั้งหมดที่เป็นไปได้สำหรับ UICC ที่เฉพาะเจาะจง หาก UICC เป็น pSIM หรือ eSIM ที่ไม่รองรับ MEP ระบบจะแสดงรายการที่มีองค์ประกอบ 1 รายการ - (เลิกใช้งานแล้ว)
getIccId: แสดงผล ICCID เนื่องจาก UICC มี ICCID มากกว่า 1 รายการสำหรับอุปกรณ์ที่มี MEP ให้ใช้UiccPortInfo.getIccId()แทน
(Android 13 ขึ้นไป) UiccPortInfo
getIccId: แสดง ICCID หากมีการสมัครใช้บริการที่เปิดใช้ ในพอร์ตนี้getPortIndex: แสดงผลดัชนีพอร์ตgetLogicalSlotIndex: แสดงดัชนีสแต็กโมเด็มเชิงตรรกะที่ใช้งานอยู่
SubscriptionInfo
- (Android 13 ขึ้นไป)
getPortIndex: แสดงดัชนีพอร์ตที่เปิดใช้การสมัครใช้บริการ หากปิดใช้การสมัครใช้บริการ ระบบจะแสดงINVALID_PORT_ID -1
EuiccManager
switchToSubscription: เปลี่ยนไปใช้การสมัครใช้บริการที่ระบุ ใช้โดย แอปที่ไม่มีสิทธิ์ของผู้ให้บริการในการสมัครใช้บริการที่ใช้งานอยู่ เมื่อมีการเรียกใช้ แพลตฟอร์มจะแก้ไขดัชนีพอร์ตภายในผ่านกล่องโต้ตอบแบบ 3 ตัวเลือกเพื่อปิดใช้การสมัครใช้บริการที่ใช้งานอยู่ซึ่งเลือกไว้หากไม่มีพอร์ตที่พร้อมใช้งาน แอปที่กำหนดเป้าหมายเป็น Android 13 ขึ้นไปต้องไม่ใช้ API นี้เพื่อ ปิดใช้การสมัครใช้บริการโดยส่งรหัสการสมัครใช้บริการที่ไม่ถูกต้อง แต่ต้องใช้เมธอดswitchToSubscription(เพิ่มใน Android 13) โดยระบุพอร์ตดัชนี- (Android 13 ขึ้นไป)
switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback): เปลี่ยนไปใช้การติดตามที่ระบุ แอปการโทรที่มีสิทธิ์ของผู้ให้บริการเครือข่ายเหนือการสมัครใช้บริการที่ใช้งานอยู่จะระบุพอร์ตที่จะเปิดใช้การสมัครใช้บริการได้ - (Android 13 ขึ้นไป)
isSimPortAvailable: แสดงว่าดัชนีพอร์ตที่ส่งผ่านใช้ได้หรือไม่ พอร์ตจะพร้อมใช้งานหากไม่ได้เปิดใช้การสมัครใช้บริการหรือแอปการโทรมีสิทธิ์ของผู้ให้บริการในการสมัครใช้บริการที่ติดตั้งในพอร์ตที่เลือก
EuiccService
- (Android 13 ขึ้นไป)
onSwitchToSubscriptionWithPort: เปลี่ยนไปใช้การสมัครใช้บริการที่ระบุ ในพอร์ตที่ระบุ การติดตั้งใช้งาน LPA ต้องรองรับการดำเนินการนี้ใน Android 13 ขึ้นไป
TelephonyManager
- (Android 13 ขึ้นไป)
getSimApplicationState: แสดงค่าคงที่ที่ระบุสถานะ ของแอปพลิเคชันบัตร API นี้ส่งทั้งดัชนีสล็อตจริงและดัชนีพอร์ต เมธอดgetSimApplicationState(int physicalSlotIndex)(เลิกใช้งานแล้ว) จะส่งเฉพาะดัชนีสล็อตจริงเพื่อรับออบเจ็กต์simApplicationState - (Android 13 ขึ้นไป)
setSimSlotMapping(Collection<UiccSlotMapping> slots): แมป สล็อตเชิงตรรกะกับสล็อตและพอร์ตจริง - (Android 13 ขึ้นไป)
Collection<UiccSlotMapping> getSimSlotMapping: รับการแมป จากช่องตรรกะไปยังช่องซิมจริงและดัชนีพอร์ต
อินเทอร์เฟซผู้ใช้
หากต้องการแก้ไขความคลุมเครือในการเลือกพอร์ต eSIM ในอุปกรณ์ที่รองรับ MEP ผู้ใช้ต้องปิดใช้การสมัครใช้บริการที่ใช้งานอยู่รายการใดรายการหนึ่งเพื่อเปิดใช้การสมัครใช้บริการใหม่ได้ ใน Android 13, AOSP มีโฟลว์ผู้ใช้ พร้อมกล่องโต้ตอบแบบ 3 ตัวเลือกที่ใช้กับโฟลว์ผู้ใช้ การเปิดใช้การสมัครใช้บริการจากแอปการตั้งค่าได้ รูปที่ 6 แสดงตัวอย่างโฟลว์ UX นี้
รูปที่ 6 โฟลว์ผู้ใช้สำหรับการเปิดใช้การสมัครใช้บริการซิม
แฟล็กฟีเจอร์
อุปกรณ์ต้องประกาศค่าสถานะฟีเจอร์ต่อไปนี้เพื่อรองรับ MEP
การติดตั้งใช้งาน LPA
หากต้องการรองรับ MEP โปรดตรวจสอบว่าการติดตั้งใช้งาน LPA เป็นไปตามข้อกำหนดต่อไปนี้
- ใช้ API จาก EuiccService เพื่อรองรับพอร์ตหลายพอร์ต
- ใช้ API สำหรับการเลือกพอร์ตและการเปิดใช้โปรไฟล์
- มอบ UX ที่ช่วยให้แอปของผู้ให้บริการเปิดใช้โปรไฟล์ในพอร์ตที่เลือกได้
การตรวจสอบ
หากต้องการทดสอบการติดตั้งใช้งานฟีเจอร์ MEP ให้ตรวจสอบว่าบิลด์ผ่านกรณีทดสอบ CTS ต่อไปนี้ (สำหรับ API สาธารณะ)
/platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts
ผู้ผลิตอุปกรณ์ควรทำงานร่วมกับผู้ให้บริการโมเด็ม ชิป eUICC และระบบปฏิบัติการ eSIM เพื่อยืนยันว่าอุปกรณ์สามารถทำสิ่งต่อไปนี้ได้
- คุณเปิดใช้โปรไฟล์ eSIM 2 โปรไฟล์และเชื่อมต่อกับ 2 เครือข่ายที่แตกต่างกันได้
- คุณเปิดใช้งานและปิดใช้งานโปรไฟล์ eSIM ได้ในพอร์ต eSIM ทุกพอร์ต
- มีโฟลว์ UX ที่ทริกเกอร์โดยแอปของผู้ให้บริการซึ่งอนุญาตให้ผู้ใช้เปลี่ยนโปรไฟล์
คำแนะนำสำหรับผู้ให้บริการ
เราขอแนะนำให้ผู้ให้บริการรองรับสิ่งต่อไปนี้ เพื่อช่วยให้มั่นใจว่าผู้ใช้จะไม่สูญเสียบริการเมื่อย้ายโปรไฟล์ eSIM จากพอร์ตหนึ่งไปยังอีกพอร์ตหนึ่ง
- การแมป IMEI และซิมอย่างราบรื่น
- ICCID หรือ SIM หลายรายการสำหรับตัวระบุ eUICC (EID) แต่ละรายการ