SPN-PLMN运营商名称更新的一些规则及代码逻辑

规则简介

EONS也是更新PLMN,而不是SPN,SPN都是依据卡信息。

在MTK平台上,提供lookupOperatorName逻辑,根据SPN/EONS/NITZ刷新运营商名称显示内容,也可以自定义优先级。

流程接口

  • [SST] refreshSPN 更新SPN =>
    • Note:MTK源码是通过lookupOperatorName,客制化加入config使之执行下述lookupOperatorNameWithConfig,区别只是多加了形参ruleConfig。
  • [SST] getConfig 获取配置,确认是否有定制优先级 ——这与display rule没关系 =>
  • [RILJ] lookupOperatorNameWithConfig =>
    • 可以自定义来源优先级,比如SA设备用5GEons: lookupOperator5GName 
    • [RILJ]  lookupOperatorNameEons
      • [SIMRecords] getEonsIfExist() 获取卡EF信息 
    • [RILJ]  lookupOperatorNameNitz
    • [RILJ]  lookupOperatorNameMVNO 获取TS25的配置,一般是上层spn-conf.xml文件,在MTK 6835平台由MD维护
  • [SIMRecords]

功能代码

ServiceStateTracker.java 刷新SPN(refreshSpn)

vendor/mediatek/proprietary/frameworks/opt/telephony/src/java/com/mediatek/internal/telephony/MtkServiceStateTracker.java

    /* Refresh operator name after mcc, mnc and lac are available* so we can get EONS correctly* If caller is not from pollState, we can not set the new PLMN to ss.* It leads wrong state during the next pollState.* If PLMN changes, the caller should restart the pollState.*/protected boolean refreshSpn(ServiceState ss, boolean fromPollState) {boolean needPollState = false;    //根据注册信息更新运营商名称String strOperatorLong = "";String strOperatorShort = "";if (brandOverride != null) {log("refreshSpn: use brandOverride" + brandOverride);strOperatorLong = brandOverride;strOperatorShort = brandOverride;} else {int lac = getLacFromServiceState(ss);    //获取位置区域码 Location Area Codeint configRule = getConfigRule();    //客制化配置优先级//MTK默认逻辑lookupOperatorName/*strOperatorLong = ((MtkRIL)mCi).lookupOperatorName(mPhone.getSubId(),ss.getOperatorNumeric(), true, lac, ss);strOperatorShort = ((MtkRIL)mCi).lookupOperatorName(mPhone.getSubId(),ss.getOperatorNumeric(), false, lac, ss);*///客制化加入配置strOperatorLong = ((MtkRIL)mCi).lookupOperatorNameWithConfig(mPhone.getSubId(),ss.getOperatorNumeric(), true, lac,(MtkRIL.DISPLAY_TS25 | MtkRIL.DISPLAY_EONS | MtkRIL.DISPLAY_NITZ), ss, configRule);strOperatorShort = ((MtkRIL)mCi).lookupOperatorNameWithConfig(mPhone.getSubId(),ss.getOperatorNumeric(), false, lac,(MtkRIL.DISPLAY_TS25 | MtkRIL.DISPLAY_EONS | MtkRIL.DISPLAY_NITZ), ss, configRule);}// If the PLMN is different with the ss.if ((!TextUtils.equals(strOperatorLong, ss.getOperatorAlphaLong())) ||(!TextUtils.equals(strOperatorShort, ss.getOperatorAlphaShort()))) {needPollState = true;// PLMN changes and we only update it if we are doing pollState// Other source should start pollState if needPollState is true.if (fromPollState) {updateSsOperatorName(ss, strOperatorLong, strOperatorShort, ss.getOperatorNumeric());}}log("refreshSpn: " + strOperatorLong+ ", " + strOperatorShort+ ", fromPollState=" + fromPollState+ ", needPollState=" + needPollState);return needPollState;}}

RIL.java 读取数据源(lookupOperatorName)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/33349.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue的学习之路(Axios 基本使用)

<script src"js/axios.min.js"></script> 3、在页面中引用 4、发送异步请求 url?xxx rest请求【GET,POST,DELETE,PATCH】 5、准备一个SpringBoot的控制层与axios进行交互 实体类 public class User { private Integer id; private String user…

家政小程序开发,打造方便快捷的家政市场

随着生活水平的提高&#xff0c;对家政的需求也在逐渐增加。不过在市场中&#xff0c;传统的家政服务存在严重的信息差&#xff0c;需要花费大量时间才可以找到合适的家政人员&#xff0c;效率较低。 互联网家政小程序因此出现&#xff0c;它能够直接连接用户与家政人员&#…

【Homebrew】包管理器清理软件包,释放mac空间

Homebrew 包管理器安装了大量的 kegs(软件包)、文件,并且占用了mac 空间 如果你想管理这些空间或者获取哪些软件包占用了最多空间的详细信息,可以使用以下 Homebrew 命令: 列出所有已安装的软件包: brew list查看每个已安装软件包的大小: brew list --formula --versio…

普洛菲斯手持式触摸屏 GP2401H-TC41-24V

触摸屏 分类 根据传感器的类型&#xff0c;触摸屏大致被分为红外线式、电阻式、表面声波式和电容式触摸屏四种。红外线技术触摸屏价格低廉&#xff0c;但其外框易碎&#xff0c;容易产生光干扰&#xff0c;曲面情况下失真&#xff1b;电容技术触摸屏设计构思合理&#xff0c;但…

深入理解Qt属性系统[Q_PROPERTY]

Qt 属性系统是 Qt 框架中一个非常核心和强大的部分&#xff0c;它提供了一种标准化的方法来访问对象的属性。这一系统不仅使得开发者能够以一致的方式处理各种数据类型&#xff0c;还为动态属性的管理提供了支持&#xff0c;并与 Qt 的元对象系统紧密集成。在这篇文章中&#x…

WPF——属性

一、属性 类最初只有字段与函数&#xff0c;字段为一个变量&#xff0c;访问权限可以是private&#xff0c;protected&#xff0c;public。而将字段设为private&#xff0c;不方便外界对类数据的操作&#xff0c;但是将字段设为public又怕外界对数据进行非法操作&#xff0c;于…

FFmpeg源码:get_bit_length函数分析

一、get_bit_length函数的作用 get_bit_length函数的定义放在FFmpeg源码&#xff08;本文演示用的FFmpeg源码版本为5.0.3&#xff0c;该ffmpeg在CentOS 7.5上通过10.2.1版本的gcc编译&#xff09;的源文件libavcodec/h2645_parse.c中&#xff1a; static int get_bit_length(…

尴尬时刻:如何在忘记名字时巧妙应对

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

llama系列模型学习

一、目录 llama1 模型与transformer decoder的区别llama2 模型架构llama2 相比llama1 不同之处llama3 相比llama2 不同之处llama、llama2、llama3 分词器词表大小以及优缺点采用的损失函数是什么&#xff1f;为什么Layer Norm 改为RMS Norm?如何消除模型幻觉&#xff1f; 二…

Vscode配置Verilog开发环境(二)

两年前我写过一篇vscode配置fpga开发环境的博客&#xff0c;近期发现查看的人数还是比较多的&#xff0c;经过两年的使用&#xff0c;优化了代码模板以及删减了一些插件等等&#xff0c;因此有了本文。 目前我的vscode只有下图中的九个插件&#xff0c;相比前文已经减少了一些了…

地级市绿色创新及碳排放与环境规划数据(2000-2021年)

数据简介&#xff1a;分享各个城市对于碳排放的降低做出了哪些共享。该数据是地级市2000-2021年间由绿色创新、碳排放与环境规制数据构成的能源与环境研究数据大合集&#xff0c;并对其进行可视化处理&#xff0c;供大家研究使用。当今我国大力推进生态文明建设、美丽中国建设等…

cephadm部署ceph分布式存储集群笔记

1、修改主机名、网卡名 修改主机名&#xff1a; sudo hostnamectl set-hostname 新主机名修改网卡名&#xff08;选做&#xff09;&#xff1a; sudo ip link set eth0 name newname2、关闭防火墙和selinux &#xff08;选做&#xff09; 3、关闭交换分区 &#xff08;选做&am…

【日常开发之Windows共享文件】Java实现Windows共享文件上传下载

文章目录 Windows 配置代码部分Maven代码 Windows 配置 首先开启服务&#xff0c;打开控制面板点击程序 点击启用或关闭Windows功能 SMB1.0选中红框内的 我这边是专门创建了一个用户 创建一个文件夹然后点击属性界面&#xff0c;点击共享 下拉框选择你选择的用户点击添加…

python爬虫必须要高匿IP吗 ?

各个平台搜索关键词就可以找到不同品牌的代理IP了。 找倒是不难&#xff0c;难的是能从中挑选出靠谱且合适的代理品牌。 在选择代理IP这块&#xff0c;不建议使用免费和超低价的代理&#xff0c;因为这一类的代理往往非常不稳定&#xff0c;很多都被网站拉黑过&#xff0c;特…

PS添加物体阴影

一、选择背景&#xff0c;确保物体和北京分割出图层 二、右键单击物体图层&#xff0c;点击混合选项&#xff0c;点击投影 三、调整参数&#xff0c;可以看效果决定(距离是高度&#xff0c;扩展是浓度&#xff0c;大小是模糊程度)&#xff0c;保存即可

实用软件下载:CrossOver 2024最新安装包及详细安装教程

​根据软件大数据显示上传或者手动输入软件都非常简单&#xff0c;一般来说CrossOver会自动连接到一个Win文件共享服务器&#xff08;Samba或CIFS&#xff09;上&#xff0c;使用者能够直接在这个服务器中选择并上传软件执行文件。实际上我们可以这样讲调整CrossOver设置&#…

汽车数据应用构想(五)

如果说路面信息&#xff08;POI&#xff09;可以通过采集车、人工等方式来获取&#xff0c;用户习惯可以通过手机生态应用来获取&#xff0c;那么车的信息应该算是车辆独有的垂直领域价值了&#xff0c;它是实实在在只有车厂才拥有的数据财富&#xff0c;任何互联网大厂都抢不走…

如何使用mapXplore将SQLMap数据转储到关系型数据库中

关于mapXplore mapXplore是一款功能强大的SQLMap数据转储与管理工具&#xff0c;该工具基于模块化的理念开发&#xff0c;可以帮助广大研究人员将SQLMap数据提取出来&#xff0c;并转储到类似PostgreSQL或SQLite等关系型数据库中。 功能介绍 当前版本的mapXplore支持下列功能…

图像识别技术的来龙区别,图像识别的底层原理及应用场景大总结-人工智能基础知识必读

图像识别技术是人工智能领域中的一个重要分支&#xff0c;它涉及到从图像中自动提取信息和模式的过程。随着深度学习的发展&#xff0c;图像识别技术已经取得了显著的进展&#xff0c;并在多个领域中找到了应用。 图像识别的底层原理 图像识别的基本过程包括图像获取、预处理…

transformers 生成式模型函数generate的参数说明

# generate函数说明 """ 类用于保存生成任务的配置。调用generate支持以下对于text-decoder、text-to-text、speech-to-text和vision-to-text模型的生成方法&#xff1a; 如果num_beams1且do_sampleFalse&#xff0c;则使用贪婪搜索&#xff0c;调用~generati…