微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 状态栏显示的wifi信号强度与 wifisetting列表不一致

状态栏显示的wifi信号强度与 wifisetting列表不一致

时间:10-02 整理:3721RD 点击:

[DESCRIPTION]

状态栏显示的wifi信号强度与wifisetting列表不一致(不同步)

[ANALYSIS]

1、apk都是接收RSSI_CHANGED intent,并调用WifiManager.calculateSignalLevel()方法计算信号个数
2、WifiSettings界面和状态栏的调用点分别是AccessPoints.java和NetworkController(Gemini).java,可以看到两个
地方所传给WifiManager.calculateSignalLevel()的level值不同,一个是4一个是5,所以计算下来有可能格数不一致
3、当处于WifiSettings列表界面时,会6s钟刷新一次信号,定义在WifiSettings.WIFI_RESCAN_INTERVAL_MS
4、状态条刷新的时间是3s,定义在在wifiStatemachine.java中(POLL_RSSI_INTERVAL_MSECS),若信号变化会丢
RSSI_CHANGE出来

[SOLUTION]

1、把两边的level都改成5级(注意数组不要越界)
2、在wifiSettings接受RSSI_CHANGED消息,之后调用updateAccesspoint把界面和状态条同步更新
3、需要注意的是,假定两边的rssi值一个是-69、一个是-66,送给WifiManager.calculateSignalLevel()的计算值会
有区别:
31 × 4 / 45 = 124 / 45 = 2.xxx
34 × 4 / 45 = 136 / 45 = 3.xxx
这种情况下可以按rssi范围返回level值,减少浮点数转int带来的误差,比如:
if(rssi 在-55和-65之间)返回4
if(rssi 在-65和-75之间)返回xxx

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top