当前位置: 首页 > news >正文

多 SIM 协作 (DSDS/DSDA) 架构文档


description: “Android 16 多SIM协作(DSDS/DSDA) 完整架构,涵盖 Slot/Phone/SubId 三层映射、PhoneSwitcher 数据卡切换策略、ProxyController Radio能力协调、MultiSimSettingController 群组设置同步、CBRS 自动数据切换、紧急呼叫 DDS 覆盖等核心机制。”

1. 概述

多 SIM 卡协作是 Android 16 Multi-SIM 子系统(DSDS — Dual SIM Dual Standby,DSDA — Dual SIM Dual Active)的核心。它解决了多个 SIM 卡共存时的数据路线仲裁、Radio 资源分配、订阅设置同步等关键问题。

在 Android 16 中,多 SIM 协作由以下核心组件组成:

组件职责模式
PhoneSwitcher决定哪个 Phone 承载默认数据连接,管理 PS Attach 状态数据路线仲裁者
ProxyController协调多 Phone 间的 Radio Access Family 变更,确保资源分配一致性Radio 资源协调者
MultiSimSettingController同步分组订阅的移动数据和漫游设置,管理主订阅规则设置同步器
SubscriptionManagerService管理 SlotId → SubId → PhoneId 三层映射,用户可配置的默认语音/短信/数据卡订阅管理器

1.1 三层 ID 映射

框架层

逻辑层

物理层

插入 SIM 卡

eSIM + 1 pSIM

eSIM + 1 pSIM

Slot 0
(硬件卡槽)

Slot 1
(硬件卡槽)

SubId 1
(电话号 +138****)

SubId 2
(电话号 +139****)

SubId 3
(eSIM Profile)

Phone[0]
(GsmCdmaPhone)

Phone[1]
(GsmCdmaPhone)

PhoneId = SlotId
SubId 由 SubscriptionManagerService 动态分配
PhoneId 固定与 Slot 绑定

2. 核心类与源码锚点

路径职责
PhoneSwitcher.javaframeworks/opt/telephony/.../data/PhoneSwitcher.java(2100+ 行)数据路线仲裁器:Preferred Data PhoneId 维护、PS Attach 管理、紧急呼叫 DDS 覆盖
ProxyController.javaframeworks/opt/telephony/.../ProxyController.java(500+ 行)Radio 能力协调器:setRadioCapability() 事务管理、双 CDMA 冲突检测、跨 Phone 同步
MultiSimSettingController.javaframeworks/opt/telephony/.../MultiSimSettingController.java(600+ 行)设置同步器:分组订阅的移动数据/漫游设置同步
SubscriptionManagerService.javaframeworks/opt/telephony/.../subscription/SubscriptionManagerService.java订阅管理器:管理 SubId 到 PhoneId/SlotId 的映射
CellularNetworkValidator.javaframeworks/opt/telephony/.../data/CellularNetworkValidator.java网络验证器:数据卡切换前验证目标网络可用性
AutoDataSwitchController.javaframeworks/opt/telephony/.../data/AutoDataSwitchController.java自动数据切换控制器:基于信号强度/网络状态自动切换数据卡

3. PhoneSwitcher — 数据路线仲裁器

PhoneSwitcher是 Multi-SIM 的核心枢纽,回答一个问题:当前应该由哪个 Phone 承载 Internet 数据连接?

3.1 核心状态变量

publicclassPhoneSwitcherextendsHandler{// 用户设置的主数据订阅protectedintmPrimaryDataSubId=SubscriptionManager.INVALID_SUBSCRIPTION_ID;// 系统自动建议的数据订阅(CBRS/自动切换功能)privateintmAutoSelectedDataSubId=SubscriptionManager.DEFAULT_SUBSCRIPTION_ID;// 正在进行语音通话的 Phone IDprotectedintmPhoneIdInVoiceCall=SubscriptionManager.INVALID_PHONE_INDEX;// 最终决定的数据 Phone ID(综合考虑以上因素)protectedintmPreferredDataPhoneId=SubscriptionManager.INVALID_PHONE_INDEX;// 对应的 SubIdprotectedWatchedIntmPreferredDataSubId=newWatchedInt(INVALID_SUBSCRIPTION_ID);// 紧急呼叫 DDS 覆盖请求privateEmergencyOverrideRequestmEmergencyOverride;}

3.2 数据 Phone ID 的决策逻辑

updatePreferredDataPhoneId()体现了多因素综合仲裁的设计思想:

protectedvoidupdatePreferredDataPhoneId(){// 优先级 1:紧急呼叫 DDS 覆盖(最高优先级)if(mEmergencyOverride!=null){mPreferredDataPhoneId=mEmergencyOverride.mPhoneId;return;}// 优先级 2:语音通话中的 Phoneif(isAnyVoiceCallActiveOnDevice()){intimsRegTech=mImsRegTechProvider.get(mContext,mPhoneIdInVoiceCall);if(imsRegTech!=REGISTRATION_TECH_IWLAN){if(imsRegTech!=REGISTRATION_TECH_CROSS_SIM){// 通话 Phone 需要数据同步 → 将数据切到通话 PhonemPreferredDataPhoneId=shouldSwitchDataDueToInCall()?mPhoneIdInVoiceCall:getFallbackDataPhoneIdForInternetRequests();}else{// Cross-SIM IMS 通话 → 数据不切换,保持原 Phone
http://www.jsqmd.com/news/973435/

相关文章:

  • 如何快速从科研图表中提取数据:WebPlotDigitizer完整指南
  • 深入理解JavaScript执行机制:从执行上下文到调用栈,八个代码示例彻底搞懂变量提升和作用域
  • 哪家钢格板厂家专业?2026年6月推荐TOP5对比项目防腐蚀评测案例适用场景 - 品牌推荐
  • AI幻觉不是Bug,而是智能体的预测性编码本能
  • GPT-4的1.8万亿参数与2%激活真相:MoE路由机制深度解析
  • Django安全检测实战包:自动爬取URL+多类型漏洞识别+MySQL注入验证
  • 2026年6月厨房用品供应链生产厂家推荐,小家电供应链/小家电尾货/日用百货供应链,厨房用品供应链直销厂家推荐 - 品牌推荐师
  • 2025-2026年上海搬家公司推荐:五大口碑产品评测大件搬运防磕碰市场份额价格 - 品牌推荐
  • 你的AR/机器人‘眼睛’准吗?手把手教你用手机和A4纸完成相机标定与精度验证
  • 不背单词里没有的单词
  • 玩转SSD1306的8种扫描模式:用Arduino实现OLED动画和特殊显示效果
  • 功耗管理与唤醒锁 (WakeLock) 架构文档
  • 第36章:AI辅助合约性能压测——使用loadtest、forge snapshot
  • MuleSoft+LLM企业级AI编排:构建可治理、可审计、可落地的认知流水线
  • 高州母婴除甲醛CMA甲醛检测治理公司深度测评:绿呼吸环保稳居榜首 - 一修哥咨询
  • 别再复制粘贴了!手把手教你理解CMSIS-DAP离线下载器里那串神秘代码(附ARM反汇编实战)
  • 广州母婴除甲醛CMA甲醛检测治理公司深度测评:绿呼吸环保稳居榜首 - 一修哥咨询
  • 藁城母婴除甲醛CMA甲醛检测治理公司深度测评:绿呼吸环保稳居榜首 - 一修哥咨询
  • Qt调用WPS导出Word报告踩坑记:管理员权限竟是罪魁祸首?
  • 从故障录波到数据分析:COMTRADE文件在继电保护调试中的完整工作流
  • AIGC】story_agent_loop架构初步探讨5
  • 鸿蒙Next实战开发(四):个人中心与系统设置页面开发
  • Win10老显卡焕新记:GTX 1660 SUPER安装最新TensorFlow/PyTorch前的CUDA踩坑实录
  • 避开这些坑!TMS320F280049 SDFM模块调试常见问题与解决方案汇总
  • 2026 安徽阜阳市彩钢瓦修缮 TOP4 权威推荐 + 避坑指南(全区域服务) - 本地便民网
  • AD9831输出不过零?一个电容或变压器就能搞定(附Multisim仿真验证)
  • 2026 安徽亳州市彩钢瓦修缮 TOP4 权威推荐 + 避坑指南(全区域服务) - 本地便民网
  • 51单片机+ADC0809测电压不准?可能是这些细节没做好(附校准方法与代码优化)
  • C#反编译工具横评:dotPeek、ILSpy、dnSpy到底怎么选?附.NET 8实战对比
  • 阜阳母婴除甲醛CMA甲醛检测治理公司深度测评:绿呼吸环保稳居榜首 - 一修哥咨询