signal信号显示代码分析(UI)
signal信号显示代码分析(UI) 1关键字 OpenHarmony 4.1Release;使能;vendor;telephony;modem;signal 2 问题描述 2.1 运行环境 开发板型号:uis7885 芯片:7885 系统版本:OpenHar
signal信号显示代码分析(UI)
1关键字
OpenHarmony 4.1 Release;使能;vendor;telephony;modem;signal
2 问题描述
2.1 运行环境
-
开发板型号:uis7885
-
芯片:7885
-
系统版本:OpenHarmony-4.1-Release(以该版本为基线)
-
应用软件:modem适配so库,芯片modem闭源库
2.2 问题现象
插入SIM卡,设备开机,查看主屏幕界面,状态栏处的信号,有概率显示为空。。
2.3 测试步骤
1.开发板插入sim卡
2.开发板开机,按电源键,点亮屏幕
3.查看信号强度显示
有概率出现信号强度显示为空现象
3 问题原因
UI层信号显示,在systemUI应用中,代码如下
应用调用getSignalInformation()函数中获取信号信息,并显示在界面上。
getSignalInformation()函数说明文档
界面信号显示为空,原因应该是getSignalInformation()函数中获取信号信息为空,需要查找getSignalInformation()函数返回的信号数据为什么为空。
4 定位过程
跟踪getSignalInformation()函数的调用流程。
getSignalInformation()函数映射GetSignalInfoList()
NAPI函数GetSignalInfoList()调用底层函数NativeGetSignalInfoList()
NativeGetSignalInfoList()函数调用GetSignalInfoList()函数
CoreService::GetSignalInfoList()调用NetworkSearchManager的GetSignalInfoList()函数
调用NetworkSearchManager的GetSignalInfoList()函数
调用NetworkSearchHandler的GetSignalInfo()函数
调用SignalInfo的GetSignalInfoList()函数来获取信号数据
在SignalInfo::GetSignalInfoList()函数中,首先判断2G信号,3G信号,4G信号,5G信号是否有效。
再获取有效的信号的数据,放入到signals结构中。传递给上层数据使用。
开发者如果发现信号信息不显示在UI界面上,就需要在信号数据的过程中和信号数据的源头查找问题的原因。
以lte信号为例,信号数据赋值在SignalInfo::ProcessLte()函数中
2G,3G,4G,5G信号赋值在SignalInfo::ProcessSignalIntensity()函数中
在该函数中的第143行,有所有信号数据的打印信息,但是是debug打印,开发者调试时可以打开debug打印,来从hilog日志中查看信号数据的原始数据。
PrintfLog()函数中打印信号的详细信息。
打印日志如下
5 知识分享
在定位信号为空问题过程中,需要熟悉信号在应用层如何显示,如何获取,如何赋值的,在整个流程中的每一个步骤都进行排查,这样就能定位出是流程中哪个环节中出现了问题。
更多推荐
所有评论(0)