【笔记】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
三、需求场景及功能代码
漫游场景
漫游情况一般分为国内漫游和国际漫游(),一般国内漫游认为在国内,国际漫游在国外。
不清楚漫游到国内外的情况时,可以通过底层上报获取状态,接口getDataRoamingType()
frameworks/base/telephony/java/android/telephony/ServiceState.java (androidxref.cn android-14.0.0_r18)
frameworks
漫游状态字段
| ROAMING_TYPE_ | num | Function |
|---|---|---|
| ROAMING_TYPE_NOT_ROAMING | 0 | 本地网络home |
| ROAMING_TYPE_UNKNOWN | 1 | 漫游但不能判断类型 domestic or international. |
| ROAMING_TYPE_DOMESTIC | 2 | 国内漫游 domestic |
| ROAMING_TYPE_INTERNATIONAL | 3 | 国际漫游 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*/@SystemApipublic static final int ROAMING_TYPE_NOT_ROAMING = 0;/*** registered in a roaming network, but can not tell if it's domestic or international.* @hide*/@SystemApipublic static final int ROAMING_TYPE_UNKNOWN = 1;/*** registered in a domestic roaming network* @hide*/@SystemApipublic static final int ROAMING_TYPE_DOMESTIC = 2;/*** registered in an international roaming network* @hide*/@SystemApipublic static final int ROAMING_TYPE_INTERNATIONAL = 3;
四、开发方案
- 将non_roaming_operator_string_array配置成false,则指定漫游到的mccmnc会视为home网,不会显示plmn,以spn为准。
- carrier_name_string和carrier_name_override_bool 配套配置实现overlay
- 对于漫游时,定制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" /><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>
相关文章:
【笔记】Android 漫游定制SPN定制有关字段
一、SPN模块简介 【笔记】SPN和PLMN 运营商网络名称显示 Android U 配置 WiFiCalling 场景下PLMN/SPN 显示的代码逻辑介绍 【笔记】Android Telephony 漫游SPN显示定制(Roaming Alpha Tag) 二、相关配置字段 non_roaming_operator_string_array 是否…...
【MATLAB第99期】#源码分享 | 基于MATLAB的SHEPard模型多输入单输出回归预测模型
【MATLAB第99期】#源码分享 | 基于MATLAB的SHEPard模型多输入单输出回归预测模型 Shepard模型(简称SP模型)就是一种直观的、可操作的相似预测法,常用于插值。相似预测法基本原理按照相似原因产生相似结果的原则,从历史样本中集中找出与现在的最相似的一…...
python工具方法 47 基于paddleseg将目标检测数据升级为语义分割数据
在进行项目研究时,通常需要搜集开源数据集。但是所能搜集到的数据集通常会存在形式上的差异,比如我想要的是语义分割数据,而搜集到的数据集却是目标检测数据;在这种情况下所搜集的数据就完成没有利用价值了么?不,其还存在价值,我们可以通过模型训练对数据标签的标注粒度…...
OpenJudge - 38:计算多项式的导函数
总时间限制: 1000ms 内存限制: 65536kB 描述 计算多项式的导函数是一件非常容易的任务。给定一个函数f(x),我们用f(x)来表示其导函数。我们用x^n来表示x的n次幂。为了计算多项式的导函数,你必须知道三条规则: (1)、(C) 0 如果C是常量 (2)、…...
数据结构:顺序表(C++实现)
1 头文件 SeqList.h //SeqList.h #pragma once #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cassert> using namespace std; class SeqList { public://初始化SeqList();//销毁~SeqList();//头插void PushFront(int data);//头删void PopFront(…...
从零开始 TensorRT(7)C++ 篇:解析 ONNX
前言 学习资料: B站视频配套代码 cookbook 示例 参考源码:cookbook → 04-BuildEngineByONNXParser → pyTorch-ONNX-TensorRT 源码 C 代码量较多,已上传 GitHub OpenCV 安装: apt install libopencv-dev(1&…...
k8s集群的CA证书过期处理
文章目录 制作延期的CA证书获取CA全名准备签发申请配置生成新CA验证并替换CA 更新master组件的CA配置kube-apiserverkube-controller-managerkube-schedulerkube-admin检查证书过期时间 更新ServiceAccount secret更新node组件配置的CA更新kubelet连接配置签发kubelet自动申请的…...
linuxOPS基础_linux系统注意事项
Linux严格区分大小写 Linux 和Windows不同,Linux严格区分大小写的,包括文件名和目录名、命令、命令选项、配置文件设置选项等。 例如,Win7 系统桌面上有文件夹叫做Test,当我们在桌面上再新建一个名为 test 的文件夹时,…...
《探索虚拟与现实的边界:VR与AR谁更能引领未来?》
引言 在当今数字时代,虚拟现实(VR)和增强现实(AR)技术正以惊人的速度发展,并逐渐渗透到我们的日常生活中。它们正在重新定义人与技术、人与环境之间的关系,同时也为各行各业带来了全新的可能性。然而,究竟是VR还是AR更有潜力改变未来?本文将围绕这一问题展开深入探讨。…...
C++ 获取上一级文件夹路径
我们可能会经常遇到文件所在文件夹路径的问题,虽然各大平台也有提供方便快捷的API来实现,但是如果脱离平台本身,或者想实现跨平台的话,可以考虑用纯C的代码来实现这一需求 示例代码 #include <string> #include <ios…...
Apache Pulsar的分布式集群模式构建
1. 准备环境 6台带jdk8的Linux服务器(CentOS7为例) ip分别为: 主机名IP地址zookeeper1192.168.8.101zookeeper2192.168.8.102zookeeper3192.168.8.103pulsar1192.168.8.108pulsar2192.168.8.109pulsar3192.168.8.110 2. 下载Pulsar最新安…...
第三百八十六回
文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了Snackbar Widget相关的内容,本章回中将介绍TimePickerDialog Widget.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在这里说的TimePickerDialog是一种弹出窗口,只不过窗口的内容固定显示…...
Java中介者模式剖析及使用场景
中介者模式 一、介绍二、智能家居系统项目实现三、总结1.优点2.缺点3.使用经验4.Spring框架类似使用思想 一、介绍 介者模式是一种行为型设计模式,它允许对象之间通过一个中介者对象进行通信,而不是直接相互引用。将多对多的关系转化为一对多的关系&…...
ElevenLabs用AI为Sora文生视频模型配音 ,景联文科技提供高质量真人音频数据集助力生成逼真音效
随着Open AI公司推出的Sora文生视频模型惊艳亮相互联网,AI语音克隆创企ElevenLabs又为Sora的演示视频生成了配音,所有的音效均由AI创造,与视频内容完美融合。 ElevenLabs的语音克隆技术能够从一分钟的音频样本中创建逼真的声音。为了实现这一…...
Go语言基础
Go的数据类型定义 //运行第一个程序package main func main(){print("Hello World") }在GO语言中,一个程序只能有一个main包,对应只能有一个main方法,若无法满足这个条件,编译时将会报错。注释方式与PHP相同 import的使…...
IOS覆盖率报告info文件解读
一,IOS覆盖率报告的生成 在做前端精准测试的时候,对于iOS端,通常会做如下操作: (1)合并覆盖率数据 如下操作: xcrun llvm-profdata merge coverage_file1657885040728.profraw coverage_fil…...
爬虫实战——scrapy框架爬取多张图片
scrapy框架的基本使用,请参考我的另一篇文章:scrapy框架的基本使用 起始爬取的网页如下: 点击每张图片,可以进入图片的详情页,如下: 代码实现: 项目文件结构如下 img_download.py文件代码 im…...
LLVM TableGen 系统学习笔记
Basic TableGen 系统可以帮助记录领域特定的信息。它也可以认为是一种小型的编译系统。 TableGen 责负分析文件, 分析结果交给领域特定的后端进行处理。 重要的概念 records 一个 record 有一个独立的名称,一系列值和一系列父类。 它保存了特定领域…...
基于stm32的流水灯设计
1基于stm32的流水灯设计[proteus仿真] 速度检测系统这个题目算是课程设计和毕业设计中常见的题目了,本期是一个基于51单片机的自行车测速系统设计 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】,赞赏任意文章 2¥,…...
kotlin图片合成和压缩
kotlin图片合成和压缩 之前的方法是继承AsyncTask 在doInBackground 里面去做压缩的操作,然后用 publishProgress 切到主线程里面更新 新方法是在协程里的去做 class ImageService {private fun getSumWidths(bitmaps: ArrayList<Bitmap>): Int {var sumWid…...
ollama部署本地大模型|embeddinggemma-300m教育场景落地:题库语义去重与推荐
ollama部署本地大模型|embeddinggemma-300m教育场景落地:题库语义去重与推荐 1. 引言:当老师遇到海量重复题 如果你是老师、教研员,或者在线教育平台的运营者,下面这个场景你一定不陌生: 题库里躺着几万…...
LightOnOCR-2-1B手把手教学:从零开始,打造你的智能文字提取工具
LightOnOCR-2-1B手把手教学:从零开始,打造你的智能文字提取工具 1. 为什么选择LightOnOCR-2-1B 在日常工作和学习中,我们经常需要从图片中提取文字内容。无论是扫描的文档、手机拍摄的笔记,还是网上下载的图片资料,手…...
AI Agent求职被拒最常见的原因是什么
这些实际上更像工程问题,公司愿意给30k月薪的原因就在这里,Agent开发不是玩具技术人,是能把玩具变成生产力的人。这环节最直接有效的方法就是跟着项目完整走一遍,如果你无从下手,趁着有大佬带队,你直接跟着…...
掌握Context Graph核心逻辑,小白程序员也能轻松入门大模型并收藏学习!
掌握Context Graph核心逻辑,小白程序员也能轻松入门大模型并收藏学习! Context Graph是当前企业AI领域的热点,掌握其核心逻辑有助于程序员和企业AI从业者快速跟上发展。它通过记录企业决策路径与执行过程,弥补了传统数据平台只关注…...
[具身智能-364]:LeRobot 不是通用机器人控制系统(如 ROS2 导航/规划栈),而是专注于“感知-决策-动作”端到端学习的 AI 框架。他们共同成为具身智能时代最重要的开源基础设施之一
LeRobot 与 ROS2 并非替代关系,而是“智能生成”与“可靠执行”的双轨架构。二者共同构成了下一代机器人从“实验室原型”走向“物理世界部署”的基石。以下从定位差异、架构协同、融合挑战、演进趋势四个维度进行系统阐述。🔍 一、核心定位与设计哲学&a…...
告别环境冲突!用Anaconda在PyCharm里为PyTorch项目创建独立的CUDA环境(保姆级图文)
深度学习工程师的终极武器:用Anaconda打造PyTorch项目的完美隔离环境 当你在深夜调试一个关键模型时,突然发现项目B的代码在项目A的环境中莫名其妙报错——这种场景对深度学习工程师来说再熟悉不过了。环境冲突就像编程世界里的"量子纠缠"&…...
Chrome Extension CLI完整指南:如何创建4种不同类型的浏览器扩展
Chrome Extension CLI完整指南:如何创建4种不同类型的浏览器扩展 【免费下载链接】chrome-extension-cli 🚀 The CLI for your next Chrome Extension 项目地址: https://gitcode.com/gh_mirrors/ch/chrome-extension-cli Chrome Extension CLI是…...
2025届毕业生推荐的降AI率平台横评
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 切实有效地降低知网AI检测率,为此特别建议采取下面这些策略:首先&…...
KirikiriTools:视觉小说游戏资源处理的终极开源解决方案
KirikiriTools:视觉小说游戏资源处理的终极开源解决方案 【免费下载链接】KirikiriTools Tools for the Kirikiri visual novel engine 项目地址: https://gitcode.com/gh_mirrors/ki/KirikiriTools KirikiriTools是一款专为Kirikiri视觉小说引擎设计的开源工…...
为什么Nuxt本地开发会收到Chrome DevTools的请求?深入解析与两种解决方案
为什么Nuxt本地开发会收到Chrome DevTools的请求?深入解析与两种解决方案 在Nuxt.js本地开发过程中,不少开发者都遇到过这样一个现象:控制台频繁出现/.well-known/appspecific/com.chrome.devtools.json路径的404警告。这看似无害的提示背后&…...
