[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





【MODIFY:】

依照MTK给的方案进行了改动。另外还加了一些字符串数组的改动:

--------------- apps/Settings/res/drawable/wifi_signal_lock.xml ---------------
index 2ad6d91..f7953d2 100644
@@ -15,9 +15,12 @@
--> <level-list xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:maxLevel="0"
android:drawable="@drawable/ic_wifi_lock_signal_1" />
- <item android:maxLevel="1"
android:drawable="@drawable/ic_wifi_lock_signal_2" />
- <item android:maxLevel="2"
android:drawable="@drawable/ic_wifi_lock_signal_3" />
- <item android:maxLevel="3"
android:drawable="@drawable/ic_wifi_lock_signal_4" />
+ <!-- modify by BW_APP_zengdakui for bug(39969) .start-->
+ <item android:maxLevel="0"
android:drawable="@drawable/ic_wifi_lock_signal_0" />
+ <item android:maxLevel="1"
android:drawable="@drawable/ic_wifi_lock_signal_1" />
+ <item android:maxLevel="2"
android:drawable="@drawable/ic_wifi_lock_signal_2" />
+ <item android:maxLevel="3"
android:drawable="@drawable/ic_wifi_lock_signal_3" />
+ <item android:maxLevel="4"
android:drawable="@drawable/ic_wifi_lock_signal_4" />
+ <!-- modify by BW_APP_zengdakui for bug(39969) .end -->
</level-list> --------------- apps/Settings/res/drawable/wifi_signal_open.xml ---------------
index b506dd3..44dfb9b 100644
@@ -15,9 +15,12 @@
--> <level-list xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:maxLevel="0" android:drawable="@drawable/ic_wifi_signal_1"
/>
- <item android:maxLevel="1" android:drawable="@drawable/ic_wifi_signal_2"
/>
- <item android:maxLevel="2" android:drawable="@drawable/ic_wifi_signal_3"
/>
- <item android:maxLevel="3" android:drawable="@drawable/ic_wifi_signal_4"
/>
+ <!-- modify by BW_APP_zengdakui for bug(39969) .start -->
+ <item android:maxLevel="0" android:drawable="@drawable/ic_wifi_signal_0"
/>
+ <item android:maxLevel="1" android:drawable="@drawable/ic_wifi_signal_1"
/>
+ <item android:maxLevel="2" android:drawable="@drawable/ic_wifi_signal_2"
/>
+ <item android:maxLevel="3" android:drawable="@drawable/ic_wifi_signal_3"
/>
+ <item android:maxLevel="4" android:drawable="@drawable/ic_wifi_signal_4"
/>
+ <!-- modify by BW_APP_zengdakui for bug(39969) .end -->
</level-list> ------------------ apps/Settings/res/values-zh-rCN/arrays.xml
------------------
index 4f92ef6..19e6bb8 100644
@@ -122,12 +122,16 @@
<item msgid="477015974247590543">"1 小时"</item>
<item msgid="5198271470953124739">"永不超时"</item>
</string-array>
+
+ <!-- modify by BW_APP_zengdakui for bug(39969) .start -->
<string-array name="wifi_signal">
+ <item msgid="2245412278046491293">"极弱"</item>
<item msgid="2245412278046491293">"弱"</item>
<item msgid="5615082285463430971">"一般"</item>
<item msgid="3565079809875324621">"较强"</item>
<item msgid="5702329417707689835">"强"</item>
</string-array>
+ <!-- modify by BW_APP_zengdakui for bug(39969) .end -->
<string-array name="wifi_sleep_policy_entries">
<item msgid="3269131034472904310">"始终"</item>
<item msgid="844721238536786870">"仅限充电时"</item> --------------------- apps/Settings/res/values/arrays.xml ---------------------
index bf83879..c0a5f08 100644
@@ -358,12 +358,15 @@ <!-- Match this with drawable.wifi_signal. --> <skip />
<!-- Wi-Fi settings. The signal strength a Wi-Fi network has. -->
+<!--modify by BW_APP_zengdakui for bug(39969) .start -->
<string-array name="wifi_signal">
+ <item>Poorest</item>
<item>Poor</item>
<item>Fair</item>
<item>Good</item>
<item>Excellent</item>
</string-array>
+<!--modify by BW_APP_zengdakui for bug(39969) .end --> <!-- Wi-Fi settings. Presented as a list dialog to the user to choose the
Wi-Fi sleep policy. -->
<string-array name="wifi_sleep_policy_entries"> --------- apps/Settings/src/com/android/settings/wifi/AccessPoint.java
---------
index d30be9d..5ca64b0 100644
@@ -371,13 +371,16 @@ class AccessPoint extends Preference {
if (mRssi == Integer.MAX_VALUE) {
return -1;
}
+
+ //modify by BW_APP_zengdakui for bug(39969) .start
/**[Add/Comment] by BW_APP [wangyao] for [39862 wifi signal cts
failed.] --start*/
if (SystemProperties.getBoolean("ro.bw.show_huawei_wifi", false)) {
- return WifiManager.calculateSignalLevelCustom(mRssi, 4);
+ return WifiManager.calculateSignalLevelCustom(mRssi, 5);
} else {
- return WifiManager.calculateSignalLevel(mRssi, 4);
+ return WifiManager.calculateSignalLevel(mRssi, 5);
}
/**[Add/Comment] by BW_APP [wangyao] for [39862 wifi signal cts
failed.] --end*/
+ //modify by BW_APP_zengdakui for bug(39969) .end
} WifiConfiguration getConfig() { -------- apps/Settings/src/com/android/settings/wifi/WifiSettings.java --------
index c668a1c..2813aed 100644
@@ -1111,6 +1111,9 @@ public class WifiSettings extends
SettingsPreferenceFragment
}
} else if (WifiManager.RSSI_CHANGED_ACTION.equals(action)) {
updateConnectionState(null);
+ //modify by BW_APP_zengdakui for bug(39969) .start
+ updateAccessPoints();
+ //modify by BW_APP_zengdakui for bug(39969) .end
} else if (WifiManager.NO_CERTIFICATION_ACTION.equals(action)) {
/// M: show error message @{
String apSSID = ""; ------- apps/Settings/src/com/android/settings/wifi/p2p/WifiP2pPeer.java
-------
index d05c9a3..eb169ee 100644
@@ -39,8 +39,9 @@ public class WifiP2pPeer extends Preference { private int mRssi;
private ImageView mSignal;
-
- private static final int SIGNAL_LEVELS = 4;
+//modify by BW_APP_zengdakui for bug(39969) .start
+ private static final int SIGNAL_LEVELS = 5;
+//modify by BW_APP_zengdakui for bug(39969) .end public WifiP2pPeer(Context context, WifiP2pDevice dev) {
super(context);

WIFI 状态栏显示的wifi信号强度与wifisetting列表不一致的更多相关文章

  1. 树莓派3 之 启动显示和wifi相关参数设置

    最近将树莓派操作系统重新安装了,然后发现了一些问题.这里分享出来给大家 问题一:连接外置显示器黑屏 解决方法:将SD卡 插入电脑,在电脑中找到SD卡 修改其中的config.txt文件 #强制使用HD ...

  2. 家中WIFI被人用WiFi万能钥匙共享后,我们应该怎么做?

    据之前WiFi万能钥匙官方称,其用户总数已经超过了8亿,且日活用户达到2亿,在海量APP中仅次于微信和QQ.可以想象有着数量如此庞大的用户,家里的WiFi是如何的"不保险". 而据 ...

  3. 电脑变WIFI:建立虚拟共享WIFI热点可查看WIFI密码windows中使用bat批处理命令提示符cmd创建教程含工具

    台式机也可支持移动热点,Win10却提示"我们无法设置移动热点",今天我们就另辟蹊径来调教它. ​​建立和开启虚拟WIFI共享网络 Windows 7操作系统及以后支持承载网络,可 ...

  4. ionic项目中手机状态栏显示使用$cordovaStatusbar插件

    在项目中发现Android和iOS在手机状态栏样式不一样,然后就查到有一个cordova插件可以解决这个问题 1.下载插件$cordovaStatusbar命令: cordova plugin add ...

  5. 正则表达式匹配/data/misc/wifi/wpa_supplicant.conf的WiFi名称与密码

    正则表达式匹配/data/misc/wifi/wpa_supplicant.conf的WiFi名称与密码: String regex_name="ssid=\"(.*?)\&quo ...

  6. MFC中状态栏显示鼠标坐标位置

    原文:MFC中状态栏显示鼠标坐标位置,蝈蝈 1,利用MFC向导创建一个应用工程ewq. 2,打开ResourceView,右击Menu菜单,插入Menu,在空白处双击,Caption中填入Point. ...

  7. 在MFC[转载]在MFC状态栏显示时间 状态栏显示时间

    原文:在MFC状态栏显示时间,谢小哈皮儿 c/c++ vc 在mfc状态栏显示时间,在VC的控件中有个Status bar可以在窗体状态栏中添加日期和时间.其实通过简单的代码,你就能创建一个有时钟显示 ...

  8. 安卓4.2原生rom状态栏显示运营商

    前言:要调整状态栏布局,需反编译systemui.apk.单卡机修改status_bar.xml和signal_cluster_view.xml,双卡机修改gemini_status_bar.xml和 ...

  9. Qt Creator实现状态栏显示

    在程序主窗口Mainwindow中,有菜单栏,工具栏,中心部件和状态栏.前面几个已经讲过了,这次讲解状态栏的使用. 程序中有哪些不明白的类或函数,请自己查看帮助. 1.我们在mainwindow.h中 ...

随机推荐

  1. js简易留言板

      <!DOCTYPE html>   <html lang="en">   <head>   <meta charset="U ...

  2. .Net中的缓存依赖配置

    缓存--能非常好的提高网站的性能. 在訪问量大,但更新较少的站点中使用缓存,能够大大提高执行效率. 在.net中给我们提供了非常好的缓存机制.页面缓存.数据缓存,还有非常好的依赖缓存. 依赖缓存优点就 ...

  3. [REASONML] Using Javascript npm package from REASON

    For example, we want to use moment.js inside our ReasonML code. What we can do is create a module fi ...

  4. Slick教程

    Slick 编程(1): 概述 Slick 编程(2): 准备开发环境 Slick 编程(3): 基本查询 Slick 编程(4): 数据库连接和事务处理 Slick 编程(5): 数据库Schema ...

  5. js33--责任链模式

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  6. [BZOJ1672][Usaco2005 Dec]Cleaning Shifts 清理牛棚 线段树优化DP

    链接 题意:给你一些区间,每个区间都有一个花费,求覆盖区间 \([S,T]\) 的最小花费 题解 先将区间排序 设 \(f[i]\) 表示决策到第 \(i\) 个区间,覆盖满 \(S\dots R[i ...

  7. 3.第一个Node.js程序:Hello World!

    转自:http://www.runoob.com/nodejs/nodejs-tutorial.html 以下是我们的第一个Node.js程序: console.log("Hello Wor ...

  8. Sql延时

    IF EXISTS(SELECT * FROM sys.procedures WHERE name='usp_wait30s')BEGIN DROP PROC usp_wait30sENDgocrea ...

  9. python使用大漠插件进行脚本开发的尝试(一)

    关于游戏脚本是纯然的小白,记一下学习过程遇到的问题.是在win10系统下对PC端的游戏进行脚本编辑,不知道会不会半途放弃. 一.大漠插件 大漠插件在游戏脚本编辑过程中是比较常见的工具,按我理解大致做的 ...

  10. Core Animation 文档翻译—附录A(Layer样貌相关属性动画)

    前言   在渲染过程中,核心动画获取Layer的各种属性并以特定的顺序渲染他们.这个顺序决定了Layer的最终的样貌.本节将会阐述通过设置不同的Layer样貌相关属性对应产生的渲染结果. 注意:Mac ...