【笔记】Android 漫游定制SPN定制有关字段

一、SPN模块简介

【笔记】SPN和PLMN 运营商网络名称显示

Android U 配置 WiFiCalling 场景下PLMN/SPN 显示的代码逻辑介绍

【笔记】Android Telephony 漫游SPN显示定制(Roaming Alpha Tag)

二、相关配置字段

  • non_roaming_operator_string_array 是否视为非漫游
  • spn_display_condition_override_int 
  • opl_override_opl_string_array 覆写卡文件EF_OPL("plmn1,lactac_start,lactac_end,index")
  • pnn_override_string_array 覆写卡文件EF_PNN("alpha_long1,alpha_short1")

CarrierConfigManager 定义

frameworks/base/telephony/java/android/telephony/CarrierConfigManager.java

CarrierConfig-non_roaming_operator_string_array
【定义】CarrierConfig-non_roaming_operator_string_array​​​​​
CarrierConfig-spn_display_condition_override_int
【定义】CarrierConfig-spn_display_condition_override_int
【定义】CarrierConfig - opl_override_opl_string_array
【定义】CarrierConfig - opl_override_opl_string_array
【定义】CarrierConfig - pnn_override_string_array
【定义】CarrierConfig - pnn_override_string_array

三、需求场景及功能代码

漫游场景

漫游情况一般分为国内漫游和国际漫游(),一般国内漫游认为在国内,国际漫游在国外。

不清楚漫游到国内外的情况时,可以通过底层上报获取状态,接口getDataRoamingType()

frameworks/base/telephony/java/android/telephony/ServiceState.java (androidxref.cn android-14.0.0_r18)

frameworks

【代码】接口getDataRoamingType
【API】getDataRoamingType

漫游状态字段

Roming Type 定义及映射关系
ROAMING_TYPE_numFunction
ROAMING_TYPE_NOT_ROAMING0本地网络home
ROAMING_TYPE_UNKNOWN1漫游但不能判断类型 domestic or international.
ROAMING_TYPE_DOMESTIC2国内漫游 domestic
ROAMING_TYPE_INTERNATIONAL3国际漫游  international
    //@Retention注解标记了该注解的保留策略,即 SOURCE。
    //编译器在编译过程中会忽略@Retention注解,即编译后的代码中不会出现Retention。
    //@Retention注解的作用是为了给静态分析工具提供元数据。
    //@IntDef一个定义在 Android SDK 中的注解,用于告诉静态分析工具这个枚举类型 RoamingType 的取值范围,它包括一个 prefix 和一个 value。其中,prefix 参数指定了枚举值的前缀,这是为了避免与其他枚举类型的取值冲突;value 参数指定了枚举类型的所有可能取值。

    /** @hide */
    @Retention(RetentionPolicy.SOURCE) 
    @IntDef(prefix = { "ROAMING_TYPE_" }, value = {
            ROAMING_TYPE_NOT_ROAMING,
            ROAMING_TYPE_UNKNOWN,
            ROAMING_TYPE_DOMESTIC,
            ROAMING_TYPE_INTERNATIONAL
    })
    //定义了一个注解类型 RoamingType,它实际上是一个注解类的声明。
    //作用:可以在其他代码中使用该注解来表示 RoamingType 类型的值。
    public @interface RoamingType {}

    /**
     * Not roaming, registered in home network.
     * @hide
     */
    @SystemApi
    public static final int ROAMING_TYPE_NOT_ROAMING = 0;
    /**
     * registered in a roaming network, but can not tell if it's domestic or international.
     * @hide
     */
    @SystemApi
    public static final int ROAMING_TYPE_UNKNOWN = 1;
    /**
     * registered in a domestic roaming network
     * @hide
     */
    @SystemApi
    public static final int ROAMING_TYPE_DOMESTIC = 2;
    /**
     * registered in an international roaming network
     * @hide
     */
    @SystemApi
    public static final int ROAMING_TYPE_INTERNATIONAL = 3;

四、开发方案

  1. 将non_roaming_operator_string_array配置成false,则指定漫游到的mccmnc会视为home网,不会显示plmn,以spn为准。
  2. carrier_name_string和carrier_name_override_bool 配套配置实现overlay
  3. 对于漫游时,定制OPL(opl_override_opl_string_array)

比如针对cid=1952的卡,原始配置:packages/apps/CarrierConfig/assets/carrier_config_carrierid_1952_US-Cellular.xml

定制配置如下:/packages/apps/CarrierConfig/res/xml/vendor.xml

    <carrier_config cid="1952" name="U.S. Cellular">
        <string name="carrier_name_string">UScellular</string>
        <boolean name="carrier_name_override_bool" value="true"/>
        <!--plmn1,lactac_start,lactac_end,index"-->
        <string-array name="opl_override_opl_string_array" num="24">
            <item value="311580,0,65535,0" />
            <item value="311581,0,65535,0" /carrier_name_string>
            <item value="311582,0,65535,0" />
            <item value="311583,0,65535,0" />
            <item value="311584,0,65535,0" />
            <item value="311585,0,65535,0" />
            <item value="311586,0,65535,0" />
            <item value="311587,0,65535,0" />
            <item value="311588,0,65535,0" />
            <item value="311589,0,65535,0" />
            <item value="311220,0,65535,0" />
            <item value="311221,0,65535,0" />
            <item value="311222,0,65535,0" />
            <item value="311223,0,65535,0" />
            <item value="311224,0,65535,0" />
            <item value="311225,0,65535,0" />
            <item value="311226,0,65535,0" />
            <item value="311227,0,65535,0" />
            <item value="311228,0,65535,0" />
            <item value="311229,0,65535,0" />
            <item value="310120,0,65535,0" />
            <item value="312420,0,65535,0" />
            <item value="311480,0,65535,0" />
            <item value="310410,0,65535,0" />
        </string-array>
        <string-array name="pnn_override_string_array" num="1">
            <item value="UScelluar" />
        </string-array>
    </carrier_config>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于yolov8的output0

关于yolov8的output0 // output0nvinfer1::IElementWiseLayer* conv22_cv2_0_0 convBnSiLU(network, weightMap, *conv15->getOutput(0), base_in_channel, 3, 1, 1, "model.22.cv2.0.0");nvinfer1::IElementWiseLayer* conv22_cv2_0_1 convBnSiLU(network, we…

Cesium 自定义Primitive - 圆

一、创作思路 1、创建一个自定义CustomPrimitive 2、然后根据两个点&#xff0c;生成圆 3、方便后期绘制圆 二、实现代码 1、在vue的包中加入turf. npm install turf/turf 1、创建一个CustomCirclePrimitive类,并加入更新的代码 export default class CustomCirclePrimitive …

StarRocks实战——贝壳找房数仓实践

目录 前言 一、StarRocks在贝壳的应用现状 1.1 历史的数据分析架构 1.2 OLAP选型 1.2.1 离线场景 1.2.2 实时场景 1.2.3 StarRocks 的引入 二、StarRocks 在贝壳的分析实践 2.1 指标分析 2.2 实时业务 2.3 可视化分析 三、未来规划 3.1 StarRocks集群的稳定性 3…

STM32:CAN功能板设计和调试

0前言 本文主要目的是&#xff0c;总结去年设计stm32-CAN板子过程中遇到的问题&#xff0c;分为keil嵌入式软件和嘉立创EDA设计两个部分。 1 STM32F1 CAN功能 keil expected a “}“ 问题在于&#xff0c;PCB使用芯片为stm32f103c8t6&#xff0c;下载程序时选择device默认此…

在cadence中导入工艺库和仿真状态的方法

在cadence中导入库和仿真状态的方法 一、在cadence中导入库 1、打开cadence的启动界面&#xff0c;如图 2、右键空白处&#xff0c;添加library 3、找到自己的库文件路径即可 二、在cadence中导入仿真状态 1.打开ADE L界面 2.选择好自己需要的状态&#xff0c;注意要取…

Leet code 1089 复写0

1、先找到最后一个数 比如示例1中答案的最后一个数是4 定义两个指针 dest 和 cur dest初始位置是-1 cur初始位置为 0 如果arr[cur]为非零元素 dest位置1 如果arr[cur]为零元素 dest位置2 直到cur<arr.size() 或者 dest>arr.size()-1 cur就是最后一个元素位置 2、…

Swing程序设计(11)动作事件监听器,焦点事件监听器

文章目录 前言一、事件监听器是什么&#xff1f;二、详细展开 1.动作事件监听器2.焦点事件监听器总结 前言 如果你是坚持从Swing程序第一篇看到了这里&#xff0c;恭喜你&#xff0c;Swing程序设计简单地落下了帷幕&#xff0c;关于Swing程序更深的了解&#xff0c;可以自行学习…

在Vue中根据Url下载地址生成二维码展示在界面上

最近来了一个新需求&#xff0c;就是在网页页面上点击按钮不在是直接下载app安装包&#xff0c;需要支持手机扫码下载app&#xff0c;避免他们需要先从电脑上下载&#xff0c;然后传到微信&#xff0c;然后手机从微信上下载下来&#xff0c;得了&#xff0c;需求就是根据后端传…

【Python】-----基础知识

注释 定义&#xff1a;让计算机跳过这个代码执行用三个单引号/双引号都表示注释信息&#xff0c;在Python中单引号与双引号没有区别&#xff0c;但必须是成对出现 输出与输入 程序是有开始&#xff0c;有结束的&#xff0c;程序运行规则&#xff1a;从上而下&#xff0c;由内…

稀碎从零算法笔记Day6-LeetCode:长度最小的子数组

前言&#xff1a;做JD的网安笔试题&#xff0c;结果查找子串&#xff08;单词&#xff09;这个操作不会。痛定思痛&#xff0c;决定学习滑动数组 题型&#xff1a;数组、双指针、滑动窗口 链接&#xff1a;209. 长度最小的子数组 - 力扣&#xff08;LeetCode&#xff09; 来…

ATFX汇市:油价回落之际加元币值走弱,USDCAD有望刷新年内新高

ATFX汇市&#xff1a;加元是商品货币&#xff0c;币值受到国际油价和精炼石油出口的显著影响。2022年3月份&#xff0c;国际油价达到130美元的峰值水平&#xff0c;随后开启回落走势&#xff0c;时至今日&#xff0c;最新报价在80美元下方&#xff0c;累计跌幅近40%。疲弱的油价…

【框架学习 | 第一篇】一篇文章快速入门MyBatis

文章目录 1.Mybatis介绍1.1Mybatis历史1.2Mybatis特点1.3与其他持久化框架对比1.4对象关系映射——ORM 2.搭建Mybatis2.1引入依赖2.2创建核心配置文件2.3创建表、实体类、mapper接口2.4创建映射文件2.4.1映射文件命名位置规则2.4.2编写映射文件2.4.3修改核心配置文件中映射文件…

基于springboot+vue的医疗报销系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

培训机构如何通过小魔推做高效短视频矩阵?

随着智能手机的普及和移动互联网的高速发展&#xff0c;短视频作为一种全新的媒介形式&#xff0c;迅速崛起并占领了大量用户的碎片化时间。从野蛮生长到全面流行&#xff0c;逐渐成为各行业引流获客的主战场之一。 各行各业都意识到了短视频平台的潜力&#xff0c;今天给大家…

【JAVA】Tomcat集成到IDEA

目录 1.在IDEA中安装插件&#xff1a;Smart Tomcat。 2.配置smart tomcat 浏览器显示中文出现乱码 我们可以借助IDEA的插件&#xff0c;把tomcat集成IDEA中&#xff0c;然后我们就可以通过IDEA一键式的重新打包部署了。 1.在IDEA中安装插件&#xff1a;Smart Tomcat。 1&a…

建立网络防御时需要重点考虑的10个因素

互联网安全中心&#xff08;CIS&#xff09;建议企业可以从以下10个因素入手&#xff1a;资产管理、数据管理、安全配置、账户和访问控制管理、漏洞管理、日志管理、恶意软件防御、数据恢复、安全培训和事件响应。 1、资产管理 建立网络防御的第一步是制定企业资产和软件资产的…

day12_oop_抽象和接口

今日内容 零、 复习昨日 一、作业 二、抽象 三、接口 零、 复习昨日 final的作用 修饰类,类不能被继承修饰方法,方法不能重写[重点]修饰变量/属性,变成常量,不能更改 static修饰方法的特点 static修饰的方法,可以通过类名调用 static修饰的属性特点 在内存只有一份,被该类的所有…

msvcp140.dll丢失的解决方法的全面分析,msvcp140.dll文件的应用范围

在我们使用计算机的时候&#xff0c;偶尔会遭遇一些技术问题&#xff0c;其中一个比较常见的问题就是出现了"丢失msvcp140.dll文件"的提示。当我们的电脑告诉我们缺少了msvcp140.dll文件时&#xff0c;常常是因为某些程序无法找到这个文件而导致了程序的运行异常。那…

lightGBM的学习整理

执行步骤 1、初始化&#xff0c;选择一个初始模型&#xff0c;通常是一个常数&#xff0c;比如分类问题中内的类别概率的先验值&#xff0c;回归问题中的目标变量的平均值。 2、训练决策树&#xff0c;对于每一轮迭代&#xff0c;计算当前模型的梯度&#xff08;损失函数的负…

程序员如何选择职业赛道?看这宝典就够了

文章目录 程序员如何选择职业赛道&#xff1f;方向一&#xff1a;自我评估与兴趣探索方向二&#xff1a;提升技能水平方向三&#xff1a;考虑个人职业规划方向四&#xff1a;寻求职业咨询方向五&#xff1a;市场需求与趋势分析 总结 程序员如何选择职业赛道&#xff1f; 程序员…