Android Telephony
文章平均质量分 84
Android Telephony Data 模块代码逻辑
Dic-
.
展开
-
【笔记】Android 驻网(网络注册)状态变化的代码实现
基于Android U/V 的代码及日志,分析移动设备驻网状态和code的变化原创 2024-08-02 12:01:20 · 814 阅读 · 0 评论 -
【笔记】NITZ 更新时间的代码流程
nitz信息更新时间异常的代码逻辑和日志分析原创 2024-07-17 11:05:59 · 1022 阅读 · 0 评论 -
Android U Settings 应用中 APN 菜单实现的代码逻辑
ApnPreferenceController初始化异常的问题分析,MobileNetwork加载菜单控件以根据注册状态更新的代码逻辑。原创 2024-06-27 18:25:54 · 1082 阅读 · 0 评论 -
【笔记】一些PDN建立成功后返回的IP地址情况及日志分析
查看日志中数据链路的Protocol类型的方法;通过LinkProperties获取IP地址。原创 2024-06-26 18:23:20 · 544 阅读 · 0 评论 -
【笔记】Android 有效设置无线数据网络链路的 MTU 大小
在 Android 中,MTU(Maximum Transmission Unit)是指数据包在网络传输中的最大大小,可以通过配置来设置。首先,获取要配置的网络接口对象,例如 Wi-Fi 接口。【数据封装】接收应用层的分片数据,加入TCP头部地址变成数据段。,也可自定义 MTU 大小,以满足特定的网络需求。【数据封装】数据分片,因为文件过大不可能整个传输。文件传输,电子邮件,文件服务,虚拟终端。数据格式化,代码转换,数据加密。应用层协议数据单元 APDU。表示层协议数据单元 PPDU。原创 2023-06-24 23:31:49 · 1283 阅读 · 0 评论 -
SPN-PLMN运营商名称更新的一些规则及代码逻辑
在MTK平台实现多种SPN数据源获取及优先级定制。相关问题:为什么没有优先通过Eons值获取运营商名称,PNN相同但是Eons读取值不同。原创 2024-06-24 17:51:37 · 838 阅读 · 0 评论 -
Android 安装调试 TelephonyProvider不生效
在 Android 中,一些系统服务或提供者在首次安装、更新或调试后可能需要重新启动才能使更改生效。重启手机可以确保系统重新加载并应用新的更改。安装调试 TelephonyProvider 后可能需要重启手机以确保数据库重新创建生效。直接安装TelephonyProvider的时候,(没有重启)发现数据库没有生效。猜测应该是原本的数据库没有删除后重建更新。解决方法:杀掉phone进程。查看device进程。原创 2024-06-06 08:04:59 · 342 阅读 · 0 评论 -
【日志分析】飞行模式下WiFiCalling下运营商名称更新问题
背景:飞行模式下注册上VoWiFi问题:systemui不显示vowifi图标,但是dialer拨号图标已经改变。(DATA模块issue:为什么PNN有值但是SPN和PLMN仍然为空,因此运营商名称有误?现象:因为EF信息更新慢,telephony的spn上报就与vowifi状态不太一致,存在延时。而systemui的逻辑是spn不为空才会显示vowifi的图标,不是依据vowifienable的状态更新的。原创 2024-05-20 12:08:56 · 1024 阅读 · 0 评论 -
【笔记】SIM 卡 EF 文件介绍
记录Android Telephony常用的EF内容,依据31.102协议24年3月版本。原创 2024-05-16 15:53:55 · 1093 阅读 · 0 评论 -
【笔记】EF_PNN获取及运营商名称显示(待完善)
当设备无法成功解析EONS(PNN)的值(即SIM卡EF文件内容),则会用次优先级的NITZ去refresh了SPN。(问题代码如下,是通过Phone对象拿到plmn为空)(定制)当卡中的spn为空,会用PLMN的值更新SPN的值,即SPN = PLMN。运营商名称一般显示优先级:Eons > NITZ > XML。第二条PNN,DUT和REF都解析为ROAM。OPL id 0 对应的是PNN第一条。DUT:解析不出来卡中的第一条PNN。包含客制化方案的实现。原创 2024-05-13 16:48:06 · 804 阅读 · 1 评论 -
【笔记】Android MVNO APN 字段配置方法
其中Mvno Type通常有如下三种类型 :GID/SPN/IMSI1、IMSI(International Mobile Subscriber Identity):用于指定国际移动用户识别码(IMSI),这是SIM卡中的一个标识符,用于识别移动用户。2、GID(Group Identifier Level 1):用于指定组标识级别1串,用于在MVNO网络中识别用户所属的群组。3、SPN(Service Provider Name):用于指定服务提供商名称,用于在MVNO网络中标识服务提供商。原创 2024-05-10 15:48:12 · 1452 阅读 · 1 评论 -
Android U 和 V 创建DataProfile的日志流程和代码差异
Android V 版本更新了创建APN相关的Data Profile代码逻辑,移除了createDataProfiles接口,新增了系列与APN相关的API实现,对APN进行过滤排序等列表数据操作,以及数据绑定的流程更新。通过热插拔SIM卡加载APN的日志,对创建DataProfile流程加以说明。原创 2024-05-09 17:17:07 · 1041 阅读 · 0 评论 -
Android U 升级 TelephonyProvider 代码差异
差异主要是新增了卫星相关feature(Android U/T vs V)原创 2024-04-29 13:59:16 · 331 阅读 · 4 评论 -
【日志分析】CarrierConfig 加载流程和配置覆盖问题(以SPN为例)
vendor.xml及对应cid的都会配置CarrierConfig,因此有加载xml文件前后覆盖的生效优先级问题原创 2024-04-26 17:45:55 · 943 阅读 · 2 评论 -
【笔记】关于 RILJ 中 “< OPERATOR” 运营商名称来源代码流程
根据ril.h的注释说明,该信息是EONS的(Enhanced Operator Name String),即EF文件信息。说明了 “< OPERATOR” 返回的参数是{long,short,mccmnc}与MD交互,RILJ和RIJD(RIL_REQUEST_OPERATOR)分析日志中关于AT “< OPERATOR” 的运营商名称信息来源。定义说明当前使用v12。原创 2024-04-24 15:18:08 · 343 阅读 · 0 评论 -
CarrierConfig配置中父类子类的关系影响
debug 时,可以直接push xml配置文件到设备(data/user_de/0/com.android.phone/files),但是有些场景直接替换文件carrierconfig配置是不生效的,主要还是看这个配置是如何工作的,比如在什么阶段执行使用的。经测试,发现插入311-230 SIM,生成的是cid=10009的配置,即adb获取设备文件时 ,carrierconfig-com.android.carrierconfig-imsi-实际上,10009的内容是1836的配置项。原创 2024-04-18 16:12:23 · 245 阅读 · 1 评论 -
【笔记】Telephony SIM SPN及运营商名称显示数据来源介绍
网络名称来源很多,显示优先级可参考TS 22.101原创 2024-04-17 18:16:01 · 1109 阅读 · 0 评论 -
【笔记】Android 网络漫游更新网络状态、运营商名称等信息日志分析
04-12 13:38:42.359307 2098 2098 D MTKSST : [GsmSST0] Broadcasting ServiceState : {mVoiceRegState=0(IN_SERVICE), mDataRegState=0(IN_SERVICE),...省略。可以按注册的时区和卡本身归属地 ,进行视为国际漫游的定制场景。不清楚漫游到国内外的情况时,可以通过底层上报获取状态,接口。//SST广播网络状态,供其他应用进程更新。原创 2024-04-15 19:59:27 · 1170 阅读 · 0 评论 -
【笔记】EF文件中定义的SPN显示协议规则及CarrierConfig定制方法
spn_display_condition_override_int 配置方法,IccRecords及其子类定义原创 2024-04-11 17:59:44 · 770 阅读 · 0 评论 -
【笔记】CarrierConfig 配置参数的解析规则
CarrierConfig 应用根据运营商卡参数 mccmnc+mvno的解析逻辑和配置方法原创 2024-04-09 18:05:32 · 403 阅读 · 0 评论 -
【笔记】Android U RILJ 中与运营商名称SPN显示相关的日志分析
常用日志关键字Note:">"下发MD,"<"MD上报,[]中的id有请求和返回的对应关系> OPERATOR< OPERATOR实网Log分析// radio关闭时不会更新SPN// 还没获取到运营商信息。(请求运营商信息的过程很快,耗时短,都不需要半秒的)// 还没驻网成功,搜网或处于飞行模式, .rat =// 驻网在本地LTE网络,从mccmnc和registeredPlmn可以确认。疑问:根据什么确认显示alphaLong还是alphaShort?, .rat =//原创 2024-03-29 11:53:37 · 1310 阅读 · 0 评论 -
【笔记】关于使用EF_IMG 和 EF_PNNI 信息显示SPN(Alpha Tag)的说明和Android代码
是否支持用图形显示SPN,根据EF_PNNI和EF_IMG的信息,即从卡读取PNNI和IMG新信息给SystemUI显示whether support the ability to display an icon/image for the alpha tag, using the EF-PNNI and EF-IMG files from the SIM?EF-IMG文件包含关于互通移动性组的信息。它存储与不同网络(如GSM和UMTS)互通相关的数据。EF-IMG文件包含移动性管理、认证、安全性和其他特定原创 2024-03-25 18:11:03 · 735 阅读 · 0 评论 -
【笔记】Android Telephony 定制日志打印格式 (双卡)
针对双卡设备,需要区分subscription,确定运营商信息、网络状态等等与卡相关的功能操作。原创 2024-03-22 11:15:44 · 357 阅读 · 0 评论 -
【开发方案】Android 应用双卡搜网功能
需求:开机自动开始搜网并显示网络列表那么就不能将相关类做成单例,不能将subId、phoneId等卡相关的属性作为UI、服务的全局变量。原创 2024-03-20 19:36:23 · 856 阅读 · 0 评论 -
【日志分析】Android 运营商名称显示优先级(AlphaTag/SPN)
MTK平台的设计,功能代码说明。原创 2024-03-14 14:36:35 · 427 阅读 · 0 评论 -
【开发方案】Android 双卡设备手动搜网功能适配
存在运营商需求:当SIM卡设置中选择了自动搜网,那么在重启开机后要执行一次手动搜网。若基于本身单卡的实现,只搜索卡槽0的,而且写成了单线程,那么就在适配双卡的过程中还需要调整设计模式。原创 2024-03-13 00:27:17 · 1032 阅读 · 1 评论 -
【笔记】Android Telephony 获取SubscriptionManager和TelephonyManager
Android 双卡适配 subId 相关方法-CSDN博客【笔记】Android Telephony | SIM 卡管理和subId、slotId、phoneId 定义关系说明_subid phoneid-CSDN博客。原创 2024-03-01 14:01:06 · 808 阅读 · 0 评论 -
【笔记】Android ServiceStateTracker 网络状态变化逻辑及SPN更新影响
在网络状态变化的时候(数据或WiFi),会更新SPN。基于Android U的代码分析。SPN Data_Dic-的博客-CSDN博客。原创 2024-03-06 18:21:01 · 1057 阅读 · 0 评论 -
【笔记】Android 漫游定制SPN定制有关字段
【笔记】SPN和PLMN 运营商网络名称显示Android U 配置 WiFiCalling 场景下PLMN/SPN 显示的代码逻辑介绍【笔记】Android Telephony 漫游SPN显示定制(Roaming Alpha Tag)basetelephonyjavaandroidtelephony【定义】CarrierConfig-non_roaming_operator_string_array。原创 2024-03-05 18:08:27 · 1126 阅读 · 0 评论 -
【笔记】MTK与高通平台emergency APN配置差异
1、在高通平台上,某些运营商可以不拆分数据网和WLAN下的emergency APN,拆分了反而会存在问题,根据modem反馈的情况,上层Telephony 适配APN。2、xcap 类型的APN上层AP不会主动请求下发,都是modem使用的,当前不配置bearer也没有影响,因为modem有一套自己维护的?1、根据MTK要求,在cellular下都要有一条apn=""(空)的emergency apn存在,否则PDN建立会存在问题。根据3GPP协议,emergency APN配置需要注意。原创 2024-03-01 11:50:35 · 845 阅读 · 0 评论 -
【笔记】Android MTU 知识及常见问题(高通和MTK方案)
运营商对MTU配置有需求。比如针对不同类型的APN或者是注册网络环境的不同存在需求差异。原创 2024-02-18 18:21:08 · 632 阅读 · 0 评论 -
【笔记】Android 常用编译模块和输出产物路径
具体编译到软件的路径要看编译规则的分区,代码中模块编译输出的产物基本对应。Android 代码模块模块device/mediatek/system/common/资源/base/core文件举例res/res/values-mcc311-mnc589/比如values-mcc311-mnc589配置文件,会在resources.arsc,需要反编译工具才能查看内容,一般解压只能看Resources文件夹下面的资源。原创 2024-02-02 14:15:43 · 692 阅读 · 0 评论 -
【笔记】SPN和PLMN 运营商网络名称显示的代码逻辑和开发定制
网络状态名称的显示在不同的用户界面,而数据的处理和其他网络状态信息一样,由ServiceStateTracker 来负责,其主要逻辑是根据当前的网络状态来确定PLMN 显示名称,读取SIM卡中SPN显示名称,确定两个显示名称后,由SIM卡信息最终确定显示规则,此规则定义了显示plms还是spn,在后来的IMS网络下还有dataspn。之后ServiceStateTracker 将plmn,spn 显示名称以及显示哪个名称的标志位信息广播出去,广播消息为TelephonyIntents。原创 2024-02-01 14:54:01 · 1249 阅读 · 0 评论 -
Android 双卡适配 subId 相关方法
执行卡业务和主要是使用subId和 PhoneId/SlotId进行区分隔离。双卡设备进行网络等业务时,需要正确操作对应的卡。原创 2024-01-31 19:34:59 · 731 阅读 · 0 评论 -
Android U 配置 WiFiCalling 场景下PLMN/SPN 显示的代码逻辑介绍
根据设备的网络连接情况更新状态栏显示的运营商及网络状态。注册上WFC(WiFi Calling)后,支持客制化显示左上角状态栏中的运营商网络状态信息。具体的代码逻辑在CarrierDisplayNameResolver.java。原创 2024-01-25 00:08:29 · 1082 阅读 · 0 评论 -
【笔记】Android Telephony | SIM 卡管理和subId、slotId、phoneId 定义关系说明
XID定义和特殊场景说明ICCIDSIM 卡的唯一标识。在SIM卡加载完成后,Telephony 以ICCID为关键字在数据库中查找,如果没有找到 ,则说明此卡第一次插入,则在数据库中添加此SIM卡记录(siminfo表);如果找到则更新原有记录,但是此记录在数据库中的序号不变,即subId不变。Sub Idsiminfo表中的Primary Key,从1开始的整数,标识卡记录在数据库表中的顺序号。第1张插入的卡是1,之后累加。- SIM卡可以切换卡槽 ,但是subId不会变。原创 2024-01-23 12:03:27 · 1379 阅读 · 0 评论 -
Android U 匹配不到APN,无法发起数据建立的问题分析
匹配不到关键就是在网络能力评估的过程,canBeSatisfiedBy会根据APN类型筛选能力匹配的项,在canHandleType检查完APN可用性之后,返回enable且符合网络的APN。3、APN 配置了但被disable了——APN proofile的carrierEnable值。查看APNSettings配置是否正确,以上问题就是APN配置了但被disable了。2、APN 类型/网络能力不满足——APN type或bearer。APN 被disable了,所以无法匹配。1、APN 没有配置。原创 2023-11-22 18:03:10 · 656 阅读 · 1 评论 -
Android APN 参数数据库设计和代码实现
一个运营商数据连接的接入点名称(APN)配置。原创 2023-11-22 16:41:42 · 304 阅读 · 0 评论 -
Android TelephonyManager双卡获取数据开启状态异常的可能原因
1、通过TelephonyManager的isDataEnabled()没有指定subId时,调用内部方法isDataEnabledForReason,传入getId()参数以指定subid,然后会执行到SubscriptionManager的getDefaultDataSubscriptionId()以获取默认值,Note:isDataEnable()可不传入参数,即默认的subId(使用getDefaultDataSubscriptionId()方法获取),也可以指定subId(如下代码示例)。原创 2023-07-25 16:28:29 · 1046 阅读 · 0 评论