先来了解下Android如何获取wifi的信息:
WifiManager wifi_service = (WifiManager)getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifi_service.getConnectionInfo();

其中wifiInfo有以下的方法:
wifiinfo.getBSSID();
wifiinfo.getSSID();
wifiinfo.getIpAddress();获取IP地址。
wifiinfo.getMacAddress();获取MAC地址。
wifiinfo.getNetworkId();获取网络ID。
wifiinfo.getLinkSpeed();获取连接速度,可以让用户获知这一信息。
wifiinfo.getRssi();获取RSSI,RSSI就是接受信号强度指示。
这里得到信号强度就靠wifiinfo.getRssi()这个方法。得到的值是一个0到-100的区间值,是一个int型数据,其中0到-50表示信号最好,-50到-70表示信号偏差,小于-70表示最差,有可能连接不上或者掉线,一般Wifi已断则值为-200。

  • 获取wifi信号强度:
    private int obtainWifiInfo() {        // Wifi的连接速度及信号强度:        int strength = 0;        WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);        // WifiInfo wifiInfo = wifiManager.getConnectionInfo();        WifiInfo info = wifiManager.getConnectionInfo();        if (info.getBSSID() != null) {            // 链接信号强度,5为获取的信号强度值在5以内             strength = WifiManager.calculateSignalLevel(info.getRssi(), 5);            // 链接速度            int speed = info.getLinkSpeed();            // 链接速度单位            String units = WifiInfo.LINK_SPEED_UNITS;            // Wifi源名称            String ssid = info.getSSID();        }//        return info.toString();        return strength;    }
  • 广播接收信号强度变化的处理:
    public BroadcastReceiver rssiReceiver = new BroadcastReceiver() {        @Override        public void onReceive(Context context, Intent intent) {            int s = obtainWifiInfo();            tv.setText(s+"");        }    };
  • 注册广播:
        registerReceiver(rssiReceiver,new IntentFilter(WifiManager.RSSI_CHANGED_ACTION));
  • 权限:
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

更多相关文章

  1. Android中通过NTP服务器获取时间功能源码分析
  2. Android(安卓)一些小技巧
  3. Android(安卓)将从网络获取的数据缓存到私有文件
  4. android ListView实现圆角实例教程一
  5. Android简单实现音乐播放器
  6. Android(安卓)把从网络获取的图片缓存到内存中
  7. Android(安卓)EditText
  8. wifi和GPRS下获取android的IP信息
  9. android之写文件到sd卡

随机推荐

  1. dart和golang区别
  2. go语言中包导入的一些问题
  3. golang判断是否存在不存在就创建文件
  4. golang的堆栈怎么看
  5. golang中定义不定长数组的方法
  6. golang不适合开发web吗
  7. golang中的map是结构体吗
  8. golang如何捕获错误
  9. golang能做高并发的原因
  10. golang编译为什么快