欢迎来到 安卓源码空间!
安卓源码空间

                               android R 修改wifi信号强度


 
 

遇到的坑:之前都是通过java代码来判断wifi的信号强度的,但是现在修改完成后,验证没有生效;



frameworks/base/wifi/java/android/net/wifi/WifiManager.java    

@Deprecated    

public static int calculateSignalLevel(int rssi, int numLevels) {        

      if (rssi <= MIN_RSSI) {            

            return 0;        

      } else if (rssi >= MAX_RSSI) {            

           return numLevels - 1;        

      } else {            

            float inputRange = (MAX_RSSI - MIN_RSSI);            

      float outputRange = (numLevels - 1);          

      return (int)((float)(rssi - MIN_RSSI) * outputRange / inputRange);        

      }    

}



解决方案:现在通过wifi的配置文件来进行比较返回的信号强度等级

frameworks/base/wifi/java/android/net/wifi/WifiManager.java    

    public int calculateSignalLevel(int rssi) {
        try {
            return mService.calculateSignalLevel(rssi);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

frameworks/opt/net/wifirvice/java/com/androidrver/wifi/WifiServiceImpl.java    

@Override    

public int calculateSignalLevel(int rssi) {        

      return RssiUtil.calculateSignalLevel(mContext, rssi);    

}

frameworks/opt/net/wifirvice/java/com/androidrver/wifi/util/RssiUtil.java

public static int calculateSignalLevel(Context context, int rssi) {        

      int[] thresholds = getRssiLevelThresholds(context);        

      for (int level = 0; level < thresholds.length; level++) {            

            if (rssi < thresholds[level]) {                

                  return level;            

            }        

      }        

      return thresholds.length;    

 }    

@NonNull     private static int[] getRssiLevelThresholds(Context context) {        

      // getIntArray() will never return null, it will throw instead        

      return context.getResources().getIntArray(R.array.config_wifiRssiLevelThresholds);    

}

frameworks/opt/net/wifi/service/res/values/config.xml

     <integer-array translatable="false" name="config_wifiRssiLevelThresholds">
                          <!-- RSSI                RSSI Level -->
        <item>-88</item> <!-- (-infinity, -88)             0 -->
        <item>-77</item> <!-- [-88, -77)                   1 -->
        <item>-66</item> <!-- [-77, -66)                   2 -->
        <item>-55</item> <!-- [-66, -55)                   3 -->
                         <!-- [-55, +infinity)             4 -->

    </integer-array>




                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/MiaoYeDeng/article/details/120891042

copyright@ 2020-2028  安卓源码空间网版权所有   

备案号:豫ICP备2023034476号-1号