APN / DataProfile 数据配置架构文档

第 36 章:电话与 RIL 无线接口层是 Java 电话框架和厂商调制解调器固件之间的桥梁。早期 RIL 是 C 语言守护进程 rild,通过 Unix 套接字、自定义二进制协议与框架通信。Android12 及以后迁移到稳定 AIDL HAL,把旧的单体 IRadio HIDL 接口拆分为多个按业务域划分的 AIDL 接口。# 列出全部radio‑hal aidl文件# 统计IRadioVoice接口方法数量# 统计IRadioData接口方法数量# 查看语音通话数据结构体Call.aidl。 阅读详情

description: “Android 16 APN/DataProfile 数据配置架构文档,涵盖 ApnSetting 数据库加载、DataProfile 三层结构(ApnSetting + TrafficDescriptor + UrspRule)、DataProfileManager 的 APN 数据库监听与缓存、DataConfigManager 的运营商配置集中管理、企业 APN (DPC)、初始附着 (InitialAttach) APN 策略、基于 TrafficDescriptor 的数据网络映射等完整数据配置机制。”

1. 概述

APN (Access Point Name) 是手机建立数据连接的核心配置,告诉 Modem 如何接入运营商的分组数据网络。Android 16 使用三层模型(ApnSetting → DataProfile → TrafficDescriptor)来管理这些配置,通过 DataProfileManager 统一加载、缓存和分发。

1.1 核心组件

组件 文件 职责
DataProfileManager data/DataProfileManager.java APN 配置总管:加载、缓存、监听变化
DataConfigManager data/DataConfigManager.java 数据配置中心:运营商配置集中管理
DataNetworkController data/DataNetworkController.java 数据网络控制器,消费 DataProfile
DataServiceManager data/DataServiceManager.java WWAN Data Service 管理器
ApnSetting telephony/data/ApnSetting.java 单条 APN 配置(名称、类型、协议等)
DataProfile telephony/data/DataProfile.java 完整数据配置封装(ApnSetting + TrafficDescriptor)
TrafficDescriptor telephony/data/TrafficDescriptor.java 数据流标识符(如 DNN/APN 名称)
Telephony.Carriers provider/Telephony.java APN 数据库 ContentProvider URI 定义

2. DataProfile 三层模型

2.1 ApnSetting — 基础 APN 配置

// ApnSetting.java — 单条 APN 的所有配置参数
public class ApnSetting implements Parcelable {
   
   
    private final String mApnName;           // APN 名称,如 "cmnet"、"ims"
    private final String mProxyAddress;      // 代理地址
    private final int mProxyPort;            // 代理端口
    private final String mMmsc;              // MMSC 地址
    private final String mMmsProxyAddress;   // MMS 代理
    private final int mMmsProxyPort;         // MMS 代理端口
    private final int mApnTypeBitmask;       // APN 类型位图
    private final int mAuthType;             // 认证类型 (PAP/CHAP/NONE)
    private final String mUser;              // 用户名
    private final String mPassword;          // 密码
    private final int mProtocol;             // 协议 (IPv4/IPv6/IPv4v6)
    private final int mRoamingProtocol;      // 漫游协议
    private final int mMvnoType;             // MVNO 类型
    private final Uri mUrspRulePrecedence;   // URSP 规则优先级
    private final int mNetworkTypeBitmask;   // 适用网络类型位图
    private final int mProfileId;            // Profile ID
    private final boolean mPersistent;       // 是否持久化
    private final boolean mCarrierEnabled;   // 运营商是否启用
}

2.2 APN 类型位图

// ApnSetting.java — APN 类型位图定义
public static final int TYPE_DEFAULT          = 1 << 0;   // 0x01 — Internet
public static final int TYPE_MMS              = 1 << 1;   // 0x02 — MMS
public static final int TYPE_SUPL             = 1 << 2;   // 0x04 — SUPL (定位)
public static final int TYPE_DUN              = 1 << 3;   // 0x08 — 网络共享
public static final int TYPE_HIPRI            = 1 << 4;   // 0x10 — 高优先级
public static final int TYPE_FOTA             = 1 << 5;   // 0x20 — OTA 固件升级
public static final int TYPE_IMS              = 1 << 6;   // 0x40 — IMS
public static final int TYPE_CBS              = 1 << 7;   // 0x80 — 小区广播
public static final int TYPE_IA               = 1 << 8;   // 0x100 — 初始附着(InitialAttach)
public static final int TYPE_EMERGENCY        = 1 << 9;   // 0x200 — 紧急
public static final int TYPE_MCX              = 1 << 10;  // 0x400 — Mission Critical
public static final int TYPE_XCAP             = 1 << 11;  // 0x800 — XCAP (补充服务配置)
public static final int TYPE_ENTERPRISE       = 1 << 12;  // 0x1000 — 企业 APN
public static final int TYPE_VSIM             = 1 << 13;  // 0x2000 — 虚拟 SIM
public static final int TYPE_BIP              = 1 << 14;  // 0x4000 — Bearer Independent Protocol

2.3 DataProfile — 完整数据配置封装

// DataProfile.java — 将 ApnSetting 包装为 Modem 可识别的完整配置
public class DataProfile implements Parcelable {
   
   
    private final int mProfileId;
    private final ApnSetting mApnSetting;           // APN 配置
    private final @Nullable TrafficDescriptor mTrafficDescriptor; // 数据流标识
    private final @Nullable List<UrspRule> mUrspRules;  // URSP 路由规则
    private final boolean mPreferred;                   // 是否为首选
    private final boolean mPersistent;                  // 是否持久化

    // Builder 模式创建
    public static final class Builder {
   
   
        private ApnSetting mApnSetting;
        private TrafficDescriptor mTrafficDescriptor;
        private List<UrspRule
Unity之ASE+ShaderGraph+VFX入门到精通 目录 这里是ASE+ShaderGraph+VFX从入门到精通专栏的目录,不停更新中,有问题随时留言或者私信。 阅读详情

相关推荐

IEDA激活码失效?教你5分钟快速续期的方法

本文针对IEDA激活码失效问题,提供了一套从快速应急到深度排查的完整解决方案。文章不仅详解了5分钟快速续期与清理缓存等应急方法,更深入剖析了授权机制、离线激活流程,并指导如何构建可持续的授权管理策略,帮助开发者彻底解决激活困扰,确保开发环境稳定。

a0b1c2d3的专栏 274

Anylabeling与SAM协同:从智能标注到YOLO数据集构建的完整实践

本文详细介绍了Anylabeling与SAM协同标注的完整实践,从智能标注到YOLO数据集构建的全流程。通过结合SAM的自动分割能力和Anylabeling的交互式标注,显著提升标注效率,特别适合小样本、复杂形状和多类别标注场景。文章还提供了环境搭建、标注优化技巧以及YOLO格式转换的实用指南。

weixin_26873711的博客 461

无刷电机FOC控制入门:磁场、洛伦兹力与坐标转换详解

本文深入解析无刷电机FOC(磁场定向控制)的核心原理,从电磁学基础的磁场与洛伦兹力出发,详细阐述了如何通过Clarke变换、Park变换等坐标转换技术,将三相交流解耦为直流量进行控制,最终利用SVPWM技术实现平滑、高效的电机驱动。文章旨在帮助开发者理解FOC的物理本质与数学框架,为机器人、无人机等高性能应用奠定基础。

weixin_29306011的博客 267

STM32 伺服电机 指令脉冲+方向位置控制模式 主从定时器 实现PWM脉冲数精确控制

实验室有个项目涉及到多个步进电机以及伺服电机的控制,需要电机得到一个触发信号后精确移动一段距离。 下面以单个伺服电机控制为例,利用伺服电机的指令脉冲加方向位置控制模式实现jing'que ...

phcdd的博客 2万+

大众点评爬虫实战:如何用Python绕过反爬机制获取评论数据(附完整代码)

本文深入探讨了2024年使用Python进行大众点评数据采集的实战策略。文章详细解析了现代反爬机制的核心逻辑,并提供了从构建拟人化请求会话、应对动态内容与接口加密,到工程化实践(代理调度、状态持久化)的完整解决方案与代码示例,旨在帮助数据分析师稳健获取评论数据,用于后续的文本挖掘与商业洞察。

weixin_29084111的博客 1921

李沐之数值稳定性+模型初始化和激活函数

层记为t,这里的y不是预测,还包括了损失函数,y是优化函数,不是预测的结果y。第t层是输出。所有的h都是一些向量,向量关于向量的导数是一个矩阵,所以用了很多次的矩阵乘法,出问题就在这里。

m0_51133942的博客 1527

GeoScene Pro教程(002):GeoScenePro基础操作

GeoScenePro基础操作介绍。

WwLK123的博客 2462

大模型测试人员完整学习体系(分层成长路线 + 知识框架 + 落地实操)

本文系统构建了大模型测试工程师的4级能力成长体系:L1(测试执行)-L2(专项测试)-L3(质量体系)-L4(行业标准),详细拆解了每个阶段的核心技能图谱。重点包括:入门层需掌握传统测试基础和大模型产品逻辑;进阶层需精通Prompt用例设计、RAG测试、安全对齐、自动化评测等专项能力;高级层聚焦评测平台搭建与质量体系建设;专家层深入算法对齐与行业标准制定。文章配套提供了分阶段技术工具栈、3-12个月学习路径及5类实战项目建议,形成了一套完整的大模型测试人才能力培养框架。

SmallBull的博客 458

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: NITZ 网络时间与时区同步架构
下一篇: 飞行模式与 Radio 开关架构文档
爆打葡萄汁
博客等级 码龄7年 30粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值