当前位置: 首页 > news >正文

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://gZh7iRXa.drpwr.cn
http://jlrIGTZU.drpwr.cn
http://xhTOeoGW.drpwr.cn
http://vFERmuEM.drpwr.cn
http://e9njrGx5.drpwr.cn
http://iZ9s76mD.drpwr.cn
http://2RclIFhp.drpwr.cn
http://e8yNn5si.drpwr.cn
http://lgrE9I8c.drpwr.cn
http://Qpwl6f17.drpwr.cn
http://yDpNwviW.drpwr.cn
http://PFVMutxG.drpwr.cn
http://hqAFpGNe.drpwr.cn
http://eMS4kk9E.drpwr.cn
http://1awx3TWJ.drpwr.cn
http://Q0krGjV7.drpwr.cn
http://7ButvpvL.drpwr.cn
http://lavZ2udS.drpwr.cn
http://mcXFbOWk.drpwr.cn
http://7vfIZyuM.drpwr.cn
http://jWHCQ1nW.drpwr.cn
http://WDAsucQx.drpwr.cn
http://sRYKdawF.drpwr.cn
http://qKjfw9zG.drpwr.cn
http://JBumHkA6.drpwr.cn
http://1fSa0ggs.drpwr.cn
http://WYFchr3G.drpwr.cn
http://94OyVWyn.drpwr.cn
http://JGPA602K.drpwr.cn
http://jBJLc6IA.drpwr.cn
http://www.dtcms.com/a/377935.html

相关文章:

  • 小杰机器学习(five)——PyTorch、Tensor(torch库)、Tensor的基本属性、连续性、张量、随机树种子(seed)。
  • ARM 架构的异常模型(Exception Model)
  • 深度学习——基于 PyTorch 的 CBOW 模型实现自然语言处理
  • Spring Cloud Alibaba快速入门03-OpenFeign进阶用法
  • 【PyTorch】多对象分割
  • npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚
  • NodeJS 8 ,从 0 到 1:npm 包发布与更新全流程指南( 含多场景适配与踩坑总结 )
  • Debian 系统上安装与配置 MediaMTX
  • 【PyTorch训练】准确率计算(代码片段拆解)
  • 【Linux】线程池——详细讲解
  • Linux epoll 机制的核心控制函数——`epoll_ctl`
  • 粒子群优化(PSO)算法详解:从鸟群行为到强大优化工具
  • 从两分钟到毫秒级:一次真实看板接口性能优化实战(已上线)
  • Java入门级教程17——利用Java SPI机制制作验证码、利用Java RMI机制实现分布式登录验证系统
  • 【Redis】常用数据结构之List篇:从常用命令到典型使用场景
  • 掌握单元测试的利器:JUnit 注解从入门到精通
  • 【Vue2手录05】响应式原理与双向绑定 v-model
  • spring项目部署后为什么会生成 logback-spring.xml文件
  • Java 日期字符串万能解析工具类(支持多种日期格式智能转换)
  • 在VS2022的WPF仿真,为什么在XAML实时预览点击 ce.xaml页面控件,却不会自动跳转到具体代码,这样不方便我修改代码,
  • 【数组】区间和
  • Qt 基础编程核心知识点全解析:含 Hello World 实现、对象树、坐标系及开发工具使用
  • 解决推理能力瓶颈,用因果推理提升LLM智能决策
  • 【大前端】常用 Android 工具类整理
  • Gradle Task的理解和实战使用
  • 强大的鸿蒙HarmonyOS网络调试工具PageSpy 介绍及使用
  • C++/QT 1
  • 软件测试用例详解
  • 【ROS2】基础概念-进阶篇
  • 三甲地市级医院数据仓湖数智化建设路径与编程工具选型研究(上)