扫码关注,一起学习

android中wifi分为5个等级,对应的图标是0格,1格,2格,3格,4格.

那么对应的信号强度是多少呢?

根据wifimanager中的算法calculateSignalLevel可以算得:

0 rssi<=-100
1 (-100, -88]
2 (-88, -77]
3 (-66, -55]
4 rssi>=-55

下面看谷歌代码实现:
/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessPointControllerImpl.java

public int getIcon(AccessPoint ap) {    int level = ap.getLevel();    return ICONS[level >= 0 ? level : 0];}

frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java

public int getLevel() {     return WifiManager.calculateSignalLevel(mRssi, SIGNAL_LEVELS); }

关键函数:

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

private static final int MIN_RSSI = -100;private static final int MAX_RSSI = -55;public static final int RSSI_LEVELS = 5;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);    }}

更多相关文章

  1. Android(安卓)ApiDemos示例解析(5):App->Activity->Custom Title
  2. android 导入工程报错:Unable to resolve target 'android-9'
  3. Android第二天--基于Snake的示例建立和运行程序
  4. Android(安卓)传输数据时Base64编码算法详解
  5. 《Android(安卓)复杂的列表视图新写法 MultiType》知识点整理
  6. Android(安卓)中.aar文件生成方法与用法
  7. Android(安卓)AES加密算法及其实现
  8. JAVA数据结构及算法--Android中Activity的四种启动模式
  9. Android分析之LowMemoryKiller

随机推荐

  1. android studio 添加第三方library (有图)
  2. Android服务端开发1-使用Eclipse搭建Java
  3. Android之自定义View:圆形ImageView实现可
  4. 【android】android Handler应用详解
  5. 查看Android中支持的linux命令
  6. android之定时器AlarmManager .
  7. android项目开发流程
  8. 开发Android主攻四大方向
  9. 史上最好用的Android省市区选择,三级联动
  10. Android(安卓)Support兼容包详解