Aosp13 手机sim卡信号格显示修改

工作中,客户要求对信号格显示偏弱不够友好为由,提出修改,要求使其显示信号强一些。

在此记录              

一问题:

修改系统sim卡显示的信号格,在设备其他配置不变的情况下,使其信号格显示比原有的要优秀

二 分析

我们在Framework/base 下找到控制信号格显示的地方,修改阈值使其显示变更

涉及类如下:

/frameworks/base/telephony/java/android/telephony/CellSignalStrengthNr.java

/frameworks/base/telephony/java/android/telephony/SignalStrength.java

1 确定当前信号格显示的判断依据:

PS C:\Users\86186> adb shell dumpsys carrier_config | findStr parameters_use_for_5g_nr_signal_bar_intparameters_use_for_5g_nr_signal_bar_int = 1parameters_use_for_5g_nr_signal_bar_int = 1

执行如上指令,返回值是1 

2 我们在CellSignalStrengthNr中发现如下:

/*** Indicates SSRSRP is considered for {@link #getLevel()} and reporting from modem.** @hide*/public static final int USE_SSRSRP = 1 << 0; //十进制 1/*** Indicates SSRSRQ is considered for {@link #getLevel()} and reporting from modem.** @hide*/public static final int USE_SSRSRQ = 1 << 1;//十进制 2/*** Indicates SSSINR is considered for {@link #getLevel()} and reporting from modem.** @hide*/public static final int USE_SSSINR = 1 << 2;//十进制 4

根据设备返回值是1,说明系统信号格使用的是SSRSRP属性判断

先解释下 这三个属性的意义

  • RSRP(Reference Signal Received Power,参考信号接收功率)

  • RSRQ(Reference Signal Received Quality,参考信号接收质量)

  • SINR(Signal to Interference plus Noise Ratio,信号干扰噪声比)

3 那么系统是在哪里设置的呢,

/androidDev/android_source/POCft18/frameworks/base/telephony/java/android/telephony/CarrierConfigManager.java

..............
public static final class Bsf {
............
sDefaults.putIntArray(KEY_LTE_RSRP_THRESHOLDS_INT_ARRAY,new int[] {-128, /* SIGNAL_STRENGTH_POOR */-118, /* SIGNAL_STRENGTH_MODERATE */-108, /* SIGNAL_STRENGTH_GOOD */-98,  /* SIGNAL_STRENGTH_GREAT */});sDefaults.putIntArray(KEY_LTE_RSRQ_THRESHOLDS_INT_ARRAY,new int[] {-20, /* SIGNAL_STRENGTH_POOR */-17, /* SIGNAL_STRENGTH_MODERATE */-14, /* SIGNAL_STRENGTH_GOOD */-11  /* SIGNAL_STRENGTH_GREAT */});sDefaults.putIntArray(KEY_LTE_RSSNR_THRESHOLDS_INT_ARRAY,new int[] {-3, /* SIGNAL_STRENGTH_POOR */1,  /* SIGNAL_STRENGTH_MODERATE */5,  /* SIGNAL_STRENGTH_GOOD */13  /* SIGNAL_STRENGTH_GREAT */});sDefaults.putIntArray(KEY_WCDMA_RSCP_THRESHOLDS_INT_ARRAY,new int[] {-115,  /* SIGNAL_STRENGTH_POOR */-105, /* SIGNAL_STRENGTH_MODERATE */-95, /* SIGNAL_STRENGTH_GOOD */-85  /* SIGNAL_STRENGTH_GREAT */});sDefaults.putIntArray(KEY_5G_NR_SSRSRP_THRESHOLDS_INT_ARRAY,// Boundaries: [-140 dB, -44 dB]new int[] {-110, /* SIGNAL_STRENGTH_POOR */-90, /* SIGNAL_STRENGTH_MODERATE */-80, /* SIGNAL_STRENGTH_GOOD */-65,  /* SIGNAL_STRENGTH_GREAT */});sDefaults.putIntArray(KEY_5G_NR_SSRSRQ_THRESHOLDS_INT_ARRAY,// Boundaries: [-43 dB, 20 dB]new int[] {-31, /* SIGNAL_STRENGTH_POOR */-19, /* SIGNAL_STRENGTH_MODERATE */-7, /* SIGNAL_STRENGTH_GOOD */6  /* SIGNAL_STRENGTH_GREAT */});sDefaults.putIntArray(KEY_5G_NR_SSSINR_THRESHOLDS_INT_ARRAY,// Boundaries: [-23 dB, 40 dB]new int[] {-5, /* SIGNAL_STRENGTH_POOR */5, /* SIGNAL_STRENGTH_MODERATE */15, /* SIGNAL_STRENGTH_GOOD */30  /* SIGNAL_STRENGTH_GREAT */});sDefaults.putInt(KEY_PARAMETERS_USE_FOR_5G_NR_SIGNAL_BAR_INT,CellSignalStrengthNr.USE_SSRSRP);//5g信号控制类型设置
...........

三 方案:

/androidDev/android_source/POCft18/frameworks/base/telephony/java/android/telephony/CellSignalStrengthNr.java 下

。。。。。。。。。。。。。。。。
/** @hide */@Overridepublic void updateLevel(PersistableBundle cc, ServiceState ss) {if (cc == null) {mParametersUseForLevel = USE_SSRSRP;} else {mParametersUseForLevel = cc.getInt(CarrierConfigManager.KEY_PARAMETERS_USE_FOR_5G_NR_SIGNAL_BAR_INT, USE_SSRSRP);mSsRsrpThresholds = cc.getIntArray(CarrierConfigManager.KEY_5G_NR_SSRSRP_THRESHOLDS_INT_ARRAY);if (VDBG) {Rlog.i(TAG, "Applying 5G NR SSRSRP Thresholds: "+ Arrays.toString(mSsRsrpThresholds));}mSsRsrqThresholds = cc.getIntArray(CarrierConfigManager.KEY_5G_NR_SSRSRQ_THRESHOLDS_INT_ARRAY);if (VDBG) {Rlog.i(TAG, "Applying 5G NR SSRSRQ Thresholds: "+ Arrays.toString(mSsRsrqThresholds));}mSsSinrThresholds = cc.getIntArray(CarrierConfigManager.KEY_5G_NR_SSSINR_THRESHOLDS_INT_ARRAY);if (VDBG) {Rlog.i(TAG, "Applying 5G NR SSSINR Thresholds: "+ Arrays.toString(mSsSinrThresholds));}}int ssRsrpLevel = SignalStrength.INVALID;int ssRsrqLevel = SignalStrength.INVALID;int ssSinrLevel = SignalStrength.INVALID;if (isLevelForParameter(USE_SSRSRP)) {int rsrpBoost = 0;if (ss != null) {rsrpBoost = ss.getArfcnRsrpBoost();}ssRsrpLevel = updateLevelWithMeasure(mSsRsrp + rsrpBoost, mSsRsrpThresholds);if (VDBG) {Rlog.i(TAG, "Updated 5G NR SSRSRP Level: " + ssRsrpLevel);}}if (isLevelForParameter(USE_SSRSRQ)) {ssRsrqLevel = updateLevelWithMeasure(mSsRsrq, mSsRsrqThresholds);if (VDBG) {Rlog.i(TAG, "Updated 5G NR SSRSRQ Level: " + ssRsrqLevel);}}if (isLevelForParameter(USE_SSSINR)) {ssSinrLevel = updateLevelWithMeasure(mSsSinr, mSsSinrThresholds);if (VDBG) {Rlog.i(TAG, "Updated 5G NR SSSINR fff Level: " + ssSinrLevel);}}// Apply the smaller value among three levels of three measures.
-        // mLevel = Math.min(Math.min(ssRsrpLevel, ssRsrqLevel), ssSinrLevel);
+        int rsrpLevel;
+        if (mSsRsrp >= -98) {
+            rsrpLevel = SIGNAL_STRENGTH_GREAT;   // 满格
+        } else if (mSsRsrp >= -108) {
+            rsrpLevel = SIGNAL_STRENGTH_GOOD;
+        } else if (mSsRsrp >= -118) {
+            rsrpLevel = SIGNAL_STRENGTH_MODERATE;
+        } else if (mSsRsrp >= -128) {
+            rsrpLevel = SIGNAL_STRENGTH_POOR;
+        } else {
+            rsrpLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
+        }
+        Rlog.i(TAG, "Updated 5G mSsRsrp: " + mSsRsrp + " ;rsrpLevel:" + rsrpLevel);
+        mLevel = rsrpLevel;}
。。。。。。。

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

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

相关文章

硬件开发2-汇编2(ARMv7-A)- 裸机开发

一、指令1、b&#xff08;Branch&#xff09;原型&#xff1a;B<c> <label>作用&#xff1a;实现无条件跳转&#xff0c;常用于不返回的跳转场景特点&#xff1a;仅跳转到目标地址&#xff0c;不保存返回地址示例&#xff1a;b reset ;跳转到reset标号处执…

清源 SCA 社区版更新(V4.2.0)|漏洞前置感知、精准修复、合规清晰,筑牢软件供应链安全防线!

随着数字化进程加速&#xff0c;软件供应链安全威胁日益复杂&#xff0c;公开漏洞响应滞后、0day 攻击防不胜防、组件升级编译失败、安全与合规风险混杂......这些痛点让企业安全团队、运维人员及研发团队疲于应对。自 2025 年 7 月 1 日安势清源 SCA 社区版首次正式发布以及在…

氚燃料增殖里程碑:MIT新型BABY包层技术实验验证

● 导语 5月20日&#xff0c;麻省理工学院&#xff08;MIT&#xff09;发文称&#xff0c;BABY实验首次获取了氚在装置内增殖的实测数据&#xff0c;验证了核心模型&#xff0c;并为未来核聚变电厂的燃料自循环奠定了重要基础。 原文&#x1f447;&#x1f3fb; https://m…

python+springboot+uniapp微信小程序题库系统 在线答题 题目分类 错题本管理 学习记录查询系统

目录技术栈介绍具体实现截图系统设计研究方法&#xff1a;设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理&#xff0c;难度适中&#xff0…

Office转PDF转换器v1.0.py

软件介绍 这是批量将word、Excel、PPT转换为PDF格式的软件&#xff0c;不过PPT转换为PDF需要电脑安装了office&#xff0c;目前这个我还没有解决没有office也可以安装的方法。 软件使用 软件使用是比较简单的&#xff0c;导入文件/文件夹&#xff0c;在自定义输出路径 点击这…

62_基于深度学习的海洋垃圾检测识别系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)

目录 项目介绍&#x1f3af; 功能展示&#x1f31f; 一、环境安装&#x1f386; 环境配置说明&#x1f4d8; 安装指南说明&#x1f3a5; 环境安装教学视频 &#x1f31f; 二、数据集介绍&#x1f31f; 三、系统环境&#xff08;框架/依赖库&#xff09;说明&#x1f9f1; 系统环…

深入浅出 全面剖析消息队列(Kafka,RabbitMQ,RocketMQ 等)

消息队列 一、概念 消息队列&#xff08;MQ&#xff09;&#xff1a;一种异步通信机制&#xff0c;通过“消息”的形式让不同系统或模块解耦核心思想&#xff1a;发送方&#xff08;生产者Producer&#xff09;只负责发送消息&#xff0c;接收方&#xff08;消费者Consumer&…

Flux Images Generation API 对接说明

本文将介绍一种 Flux Images Generation API 对接说明&#xff0c;它是可以通过输入自定义参数来生成Flux官方的图片。 接下来介绍下 Flux Images Generation API 的对接说明。 申请流程 要使用 API&#xff0c;需要先到 Flux Images Generation API 对应页面申请对应的服务…

CSS布局 - 网格布局 -- 笔记3

目录网格布局基础网格网格剖析CSS 提供了一些控制网页布局的几个重要工具&#xff0c;这里介绍网格布局。 网格布局 CSS 网格可以定义由行和列组成的二维布局&#xff0c;然后将元素放置到网格中。有些元素可能只占据网格的一个单元&#xff0c;另一些元素则可能占据多行或多…

合约开发完后部署测试

一 编译npx hardhat compile二 测试npx hardhat test三部署注意部署的时候2.0和3版本有所区别&#xff0c;3.0如下# 部署到本地网络&#xff08;如已运行 npx hardhat node&#xff09; npx hardhat ignition deploy ./ignition/modules/MyModule.ts --network localhost# 部署…

产品无法正确解析复杂表格和流程图,有什么替代方案或优化方法?

在真实办公场景中&#xff0c;文档内的元素往往不具备标准化和格式化特征&#xff0c;像双栏表格、无线图表等复杂元素十分常见。而传统 OCR 工具在面对这类复杂文档时&#xff0c;存在明显的能力短板&#xff1a;它无法准确判断复杂表格的结构逻辑以及内容的顺序逻辑&#xff…

《Html模板》HTML数学题目生成器 - 让数学练习更简单(附源码)

目录专栏导读&#x1f9ee; HTML数学题目生成器 - 让数学练习更简单项目简介✨ 核心功能&#x1f3af; 灵活的运算类型选择&#x1f4ca; 智能题目生成算法⚙️ 个性化参数设置&#x1f5a8;️ 专业打印优化&#x1f3a8; 用户体验设计现代化界面交互体验&#x1f6e0;️ 技术实…

Go语言设计模式(七)组合模式

组合模式是指将一组相似对象当做一个单一对象的设计模式.1.组成角色:1.1组件:组合中的对象声明接口,主要用于访问和管理其子组件.1.2叶子节点:定义组合中原始对象行为的类.叶子节点表示组合中的叶对象.1.3组合:又称为容器,存储子组件并在组件接口中实现与子组件有关的类.1.4客户…

AI 3D 生成工具知识库:当前产品格局与测评总结

聚焦于 AI 3D 生成领域的领军产品、功能比较及实测性能。内容分为产品格局、通用功能、测评系统与基准测试&#xff0c;以及单视图生成实测结果。所有信息基于脚本分析&#xff0c;并交叉验证了产品名称、团队背景&#xff08;如 VAST AI 的 TripoSR/Meshy 的 Meshy-1、影眸科技…

淘客app的容器化部署与编排:基于Kubernetes的微服务架构实践

淘客app的容器化部署与编排&#xff1a;基于Kubernetes的微服务架构实践 大家好&#xff0c;我是阿可&#xff0c;微赚淘客系统及省赚客APP创始人&#xff0c;是个冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在淘客app的业务迭代中&#xff0c;传统物理机部署面…

当GitHub不再纯粹:Python自动化测试的未来是AI还是危机?

全球最大的开源代码平台&#xff0c;彻底被卷进了AI洪流&#xff01;作为全球最大的“程序员交友平台”&#xff08;手动狗头&#xff09;&#xff0c;GitHub 可以说是每一个开发者又爱又恨的“家”。没错&#xff0c;就是那个全球最大、没有之一的开源代码托管平台&#xff01…

Spring Boot + MySQL 创建超级管理员

Spring Boot系统创建超管实现方式1. 数据库脚本初始化&#xff08;最直接的方式&#xff09;2. Spring Boot 启动时自动创建&#xff08;代码级初始化&#xff09;2.1 实体类定义2.2 Repository 接口2.3 初始化组件2.4 配置密码加密器3. 通过接口手动创建&#xff08;最安全的方…

杨辉三角**

一、题目给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。示例 1:输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2:输入: numRows 1 输出: [[1]]提示:1 <…

Vue3 的单文件组件(.vue 文件)中,在 <script>、<template>、<style> 标签外输入内容不会导致程序报错

在 <script>、<template>、<style> 标签外首行误输入内容 vtsvts <script setup lang"ts" name"BaseDocxPreviewDialog"> /*** docx文件预览模态框组件*/ defineOptions({ name: "BaseDocxPreviewDialog" }); import { …

LVS负载均衡群集和LVS+Keepalived群集

1、群集 1.1群集的含义 由多台主机构成&#xff0c;但对外只表现为一个整体&#xff0c;只提供一个访问入口&#xff08;域名与IP地址&#xff09;&#xff0c;相当于一台大型计算机。 1.2 企业群集分类 负载均衡群集&#xff1a;提高应用系统的响应能力、尽可能处理更多的…