01 · 功能与页面结构(新手入门)
读完本篇你应该能:向产品/测试讲清这个功能是什么;在代码里找到任何一个文案、 任意一个 UI 元素的出处;知道它在哪些车型上存在。
1. 功能定位
XCD 平台(如 suiren/YU7)的 TBox 内置两张 eSIM:
| 卡槽 | 运营商 | 代码常量 | 通道值 |
|---|---|---|---|
| 卡 1(slot 0 / phoneId 0) | 中国电信 | NETWORK_CTCC | 0 |
| 卡 2(slot 1 / phoneId 1) | 中国移动 | NETWORK_CMCC | 1 |
| —(自动策略) | 智能双卡 | NETWORK_AUTO | 2(平台侧 WISDOM_DATA_CHANNEL) |
代码原文注释(
TeleCommunicationSelectController.kt:35): 「背景 xcd p2.1 xcd板子同时有两个e-sim卡,卡1——电信,卡2——移动」
「优先运营商」是一个偏好选择器:用户选的不是”连哪个运营商网络”(那是 modem 自动注册的),而是”默认数据通道走哪张卡”。选「智能双卡」时,平台根据两张卡的 网络质量自动倒换(详见 04 篇)。
它不是什么
- ❌ 不是手动选网(PLMN 列表)——本模块没有搜网/选 PLMN 功能
- ❌ 不显示实时运营商名——设置页右侧的「中国电信 5G」面板不是 MiCarSettings 实现
的(全仓 grep
getNetworkOperatorName/operatorAlphaLong零命中),那是 SystemUI/平台状态区,数据源是 phone0 实际注册态 - ❌ DCD 平台(watt/8295)没有此功能——
dcddif的TelephonyUtil是空桩 (getDefaultChannel直接返回 -1,注释「dcd没有使用,但是为了编译通过需要有对应方法」), 连接页整个「蜂窝网络」分组在 DCD 上隐藏
2. UI 结构
页面位置:设置 → 连接 → 页面底部。「蜂窝网络」是连接页 4 个分组之一
(其余:基础连接/手车互联/移动网络),见 连接/00-README.md 全景图。
┌─ 蜂窝网络 ──────────────────────────────┐
│ 优先运营商 │
│ ┌─────────┬─────────┬─────────┐ │
│ │ 中国电信 │ 中国移动 │ 智能双卡 │ ← NewTabPreference 三段 Tab
│ └─────────┴─────────┴─────────┘ │
│ 优先使用中国移动,网络状态差时自动切换 ← summary(随选中项变化)
└─────────────────────────────────────────┘
XML 挂载点
settingsPage/micarConnectionSettings/src/main/res/xml/connection_settings_fragment.xml:117-125:
<MiCarPreferenceCategory
android:key="@string/pk_connection_vehicle_network_category" <!-- 蜂窝网络 -->
android:title="@string/micar_connection_vehicle_network_category">
<NewTabPreference
android:key="@string/pk_connection_vehicle_network_default" <!-- 优先运营商 -->
android:title="@string/micar_connection_vehicle_network_title"
settings:controller="...telecomm.TeleCommunicationSelectController" />
</MiCarPreferenceCategory>只有一个 Preference、一个 Controller,没有二级页面(点击不跳页,Tab 原地切换)。
3. 文案清单(直抄 strings.xml)
中文 values-zh-rCN/strings.xml:28-35
| name | 文案 |
|---|---|
micar_connection_vehicle_network_category | 蜂窝网络 |
micar_connection_vehicle_network_title | 优先运营商 |
..._ctcc_summary | 优先使用中国电信,网络状态差时自动切换 |
..._cmcc_summary | 优先使用中国移动,网络状态差时自动切换 |
..._auto_summary | 根据网络状态动态切换运营商,提高网络服务质量 |
..._CT | 中国电信 |
..._CMCC | 中国移动 |
..._smart_mode | 智能双卡 |
英文 values/strings.xml:27-34
category = Cellular networks,title = Preferred carrier,smart = Smart dual SIM 等。
⚠️ 版本文案差异(踩坑提示)
2026-09 实拍截图里标题是「默认运营商」、summary 是「优先使用默认运营商,网络状态 差时自动切换」——这套文案在 dev 仓全仓 grep 不到,说明该 ROM 带了比 dev 更新的 文案修改(或出货分支独有)。分析线上问题截图时,文案以 ROM 实际为准,不要以 dev strings 反推 ROM 版本;代码骨架(Tab 结构/值定义)各版本一致。
4. Preference Key 清单(values/preference_keys.xml:15-17)
| key | 用途 |
|---|---|
pk_connection_vehicle_network_category | 「蜂窝网络」分组 |
pk_connection_vehicle_network_category_space | 分组上方留白 |
pk_connection_vehicle_network_default | 优先运营商 NewTabPreference 本体 |
5. 交互规则(用户视角)
- Tab 单选高亮:三个 Tab 同一时刻只有一个蓝色选中态;点已选中的 Tab 无事发生
(走
onSelectedTabClicked空实现) - ECALL/通话中禁用:任何一路 SIM 处于
CALL_STATE_OFFHOOK/RINGING时,整排 Tab 置灰;此时点击会弹「切换失败」提示框(onDisabledTabClicked,:70-78) - 切换是异步的:点击后 Tab 立即变选中(乐观更新),后台线程去调平台;平台返回 false 才会把 UI 弹回原来的选中项
- summary 跟随选中项:选电信/移动/智能分别显示对应文案
6. 可见即可说(语音助手)
该控件接入了可见即可说:BaseTabPreferenceController.onBuildMiCarViewDescription
(:74-91)为每个 Tab 生成 MiCarViewDescription,compType = COMPONENT_TYPE_FILTER_SORT_VIEW,
用户可直接语音说「中国移动」完成切换。