通过分析WifiManager.Java,WifiINfo.java源码,我们可以发现WIFI设备信息和WIFI状态的定义。

1、Wifi设备信息中常用的信息有    

[java] view plaincopy
  1. // WifiInfo中比较常用的信息有:
  2. info.getBSSID();      //获取BSSID地址。
  3. info.getSSID();       // 获取SSID地址。  需要连接网络的ID
  4. info.getIpAddress();  //获取IP地址。4字节Int, XXX.XXX.XXX.XXX 每个XXX为一个字节
  5. info.getMacAddress(); //获取MAC地址。
  6. info.getNetworkId();  //获取网络ID。
  7. info.getLinkSpeed(); // 获取连接速度,可以让用户获知这一信息。
  8. info.getRssi();      //获取RSSI,RSSI就是接受信号强度指示

2、WIFI的状态定义 

[java] view plaincopy
  1. WifiManager.WIFI_STATE_DISABLING   //正在停止
  2. WifiManager.WIFI_STATE_DISABLED   //已停止
  3. WifiManager.WIFI_STATE_ENABLING   //正在打开
  4. WifiManager.WIFI_STATE_ENABLED    //已开启
  5. WifiManager.WIFI_STATE_UNKNOWN    //未知

3、获取Wifi信息的方法:

[java] view plaincopy
  1. /**
  2. * 获取WifiInfo
  3. * @param mContext
  4. * @return
  5. */
  6. public static WifiInfo getWifiInfo(Context mContext){
  7. WifiManager mWifiManager = (WifiManager)mContext.getSystemService(Context.WIFI_SERVICE);
  8. WifiInfo info = mWifiManager.getConnectionInfo();
  9. return info;
  10. }

4、获取本机WIFI设备详细信息:

[java] view plaincopy
  1. <span style="white-space:pre">  </span>/**
  2. * 获取本机WIFI设备详细信息
  3. * @param mContext
  4. * @return
  5. */
  6. public static String getDetailsWifiInfo(Context mContext){
  7. StringBuffer sInfo = new StringBuffer();
  8. WifiInfo mWifiInfo = getWifiInfo(mContext);
  9. int Ip = mWifiInfo.getIpAddress();
  10. String strIp = "" + (Ip & 0xFF) + "." + ((Ip >> 8) & 0xFF) + "." + ((Ip >> 16) & 0xFF) + "." + ((Ip >> 24) & 0xFF);
  11. sInfo.append("\n--BSSID : "+mWifiInfo.getBSSID());
  12. sInfo.append("\n--SSID : "+mWifiInfo.getSSID());
  13. sInfo.append("\n--nIpAddress : "+ strIp);
  14. sInfo.append("\n--MacAddress : "+mWifiInfo.getMacAddress());
  15. sInfo.append("\n--NetworkId : "+mWifiInfo.getNetworkId());
  16. sInfo.append("\n--LinkSpeed : "+mWifiInfo.getLinkSpeed()+"Mbps");
  17. sInfo.append("\n--Rssi : "+mWifiInfo.getRssi());
  18. sInfo.append("\n--SupplicantState : "+mWifiInfo.getSupplicantState());
  19. sInfo.append("\n\n\n\n");
  20. return sInfo.toString();
  21. }

5、获取周边WiFi热源的信号信息

[java] view plaincopy
  1. /**
  2. * 搜索到的周边WIFI信号信息
  3. * @param mContext
  4. * @return
  5. */
  6. public static String getAroundWifiDeciceInfo(Context mContext){
  7. StringBuffer sInfo = new StringBuffer();
  8. WifiManager mWifiManager = (WifiManager)mContext.getSystemService(Context.WIFI_SERVICE);
  9. //WifiInfo mWifiInfo = mWifiManager.getConnectionInfo();
  10. List<ScanResult> scanResults=mWifiManager.getScanResults();//搜索到的设备列表
  11. for (ScanResult scanResult : scanResults) {
  12. sInfo.append("\n设备名:"+scanResult.SSID
  13. +" 信号强度:"+scanResult.level+"/n :"+mWifiManager.calculateSignalLevel(scanResult.level,4));
  14. }
  15. return sInfo.toString();
  16. }

其中用到了计算WIFI信号强度的方法,这个算法可以直接使用Android源码WifiManager.java中提供的方法calculateSignalLevel();

WifiManager.java部分代码如下:

[html] view plaincopy
  1. /** Anything worse than or equal to this will show 0 bars. */
  2. private static final int MIN_RSSI = -100;
  3. /** Anything better than or equal to this will show the max bars. */
  4. private static final int MAX_RSSI = -55;
  5. /**
  6. * Calculates the level of the signal. This should be used any time a signal
  7. * is being shown.
  8. *
  9. * @param rssi The power of the signal measured in RSSI.
  10. * @param numLevels The number of levels to consider in the calculated
  11. *            level.
  12. * @return A level of the signal, given in the range of 0 to numLevels-1
  13. *         (both inclusive).
  14. */
  15. public static int calculateSignalLevel(int rssi, int numLevels) {
  16. /* in general, numLevels is 4  */
  17. if (rssi <= MIN_RSSI) {
  18. return 0;
  19. } else if (rssi >= MAX_RSSI) {
  20. return numLevels - 1;
  21. } else {
  22. float inputRange = (MAX_RSSI - MIN_RSSI);
  23. float outputRange = (numLevels - 1);
  24. return (int)((float)(rssi - MIN_RSSI) * outputRange / inputRange);
  25. }
  26. }

Android系统信息获取 之八:WIFI设备和WIFI信号信息获取相关推荐

  1. Android获取Linux图像信息,Android系统信息获取 之十三:Linux内核版本信息获取

    Android系统信息获取 之十三:Linux内核版本信息获取 Android系统是基于Linux的,各个Android版本对应的Linux版本不尽相同,我们这里不去追究各个Android对应的Lin ...

  2. C# 获取PCI等设备的插槽位置信息

    C# 获取PCI等设备的插槽位置信息 最近遇到问题,需要获取设备管理器中看到的PCI位置等信息,例如: 经过查阅资料发现可以在Win32_PNPEntity表中查找到PCI设备的一些信息: var m ...

  3. java爬取验证码图片_JAVA HttpClient实现页面信息抓取(获取图片验证码并传入cookie实现信息获取)...

    JAVA HttpClient实现页面信息抓取(获取图片验证码并传入cookie实现信息获取) 发布时间:2018-05-18 16:41, 浏览次数:632 , 标签: JAVA HttpClien ...

  4. Android系统信息获取 之十:移动网络相关信息获取

    Android平台移动网络信息主要是通过TelephonyManager类来获取的,通过前面对TelephonyManager的观察Android系统信息获取 之九:TelephonyManager类 ...

  5. Android系统信息获取 之十三:Linux内核版本信息获取

    Android系统是基于Linux的,各个Android版本对应的Linux版本不尽相同,我们这里不去追究各个Android对应的Linux版本是什么,而是通过工具或者使用代码的方法去获取我们使用的A ...

  6. php 获取移动端设备号,getDeviceId()获取设备号IMEI、MEID、ESN

    网络请求的时候需要根据设备号id传参,但是服务端后台收到的有时候为空,服务端的存储就为1个0 .而手机设备号获取与手机本身注册的网相关 本人经测试情况魅蓝note5.1:全网通.2张联通卡.获取结果为 ...

  7. mysql获取当前时间_MYSQL proxysql 在深入 信息获取和信息输出

    ProxySQL 前两期针对不同的MYSQL高可用的方式来说的, 本期会更加深入到PROXYSQL 的一些本身的东西. 在PROXYSQL 中有一个表,存储了所有的global variables, ...

  8. 常见随身WiFi设备总结

    常见随身WiFi设备总结 随着无线通信技术的的爆发式发展,随身WiFi设备必将火爆整个市场,一定会像手机一样普及到每一个用户家里或手里.WIFI是一种无线连接技术的简称,可以简单理解为无线高速连接,随 ...

  9. MQTT客户端远程控制WIFI设备(阿里云物联网平台)

    MQTT客户端远程控制WIFI设备(阿里云物联网平台) MQTT客户端远程控制WIFI设备(阿里云物联网平台) 准备工作 配置Topic 调试 MQTT客户端远程控制WIFI设备(阿里云物联网平台) ...

最新文章

  1. android底部导航栏_Kotlin实现底部导航栏
  2. 基于MTD的NAND驱动开发(二)
  3. 开头th_是什么文件_Python文件读写最详细的讲解
  4. 8.Java 面试题整理(J2EE,MVC方面)
  5. solve det(I + uv^t)
  6. LAMP架构调优(一)——隐藏Apache版本信息
  7. cmd 文本文件分割_cmd - 分割大文件
  8. 2015 2020 r4烧录卡 区别_2020版药典,药用辅料被重视了!
  9. mysql pxc搭建_MySQL(PXC)集群搭建
  10. 贝叶斯分类器matlab实现
  11. Elastic Stack应用性能监控APM初窥门径
  12. 通过直链下载google网盘里的文件
  13. 用python画花球_只靠一把小小剪刀!她把这些花养成了花球!
  14. 时间焦虑:为时已晚?
  15. 【附源码】计算机毕业设计SSM校园流浪猫关爱系统
  16. Apache IoTDB 鼠年总结
  17. 答题卡的计分方式_如何建立信用风险模型和记分卡
  18. 电子元器件品牌及其代理商
  19. 计算机英语中协议英语,计算机英语
  20. To_Heart—题解——[HEOI2013]ALO

热门文章

  1. linux应用编程之进程间同步
  2. UIButton设置圆角和边框
  3. andoid-sdk 安装时出现 Stopping ADB server failed(code -1) 错
  4. C# 11 新增特性
  5. C语言编译-嵌入式系统
  6. 微软 Fluent 设计体系, Fluent UI
  7. Java中遍历Set集合的三种方法
  8. Vue学习笔记之07-v-for循环遍历
  9. html() 无效,Internet Explorer无效HTML解析代码漏洞
  10. 一个树杈y图片_鬼脸纹:黄花梨树上一个树杈,反映到主干上时,会形成一个疖痕...