Android系统信息获取 之八:WIFI设备和WIFI信号信息获取
通过分析WifiManager.Java,WifiINfo.java源码,我们可以发现WIFI设备信息和WIFI状态的定义。
1、Wifi设备信息中常用的信息有
- // WifiInfo中比较常用的信息有:
- info.getBSSID(); //获取BSSID地址。
- info.getSSID(); // 获取SSID地址。 需要连接网络的ID
- info.getIpAddress(); //获取IP地址。4字节Int, XXX.XXX.XXX.XXX 每个XXX为一个字节
- info.getMacAddress(); //获取MAC地址。
- info.getNetworkId(); //获取网络ID。
- info.getLinkSpeed(); // 获取连接速度,可以让用户获知这一信息。
- info.getRssi(); //获取RSSI,RSSI就是接受信号强度指示
2、WIFI的状态定义
- WifiManager.WIFI_STATE_DISABLING //正在停止
- WifiManager.WIFI_STATE_DISABLED //已停止
- WifiManager.WIFI_STATE_ENABLING //正在打开
- WifiManager.WIFI_STATE_ENABLED //已开启
- WifiManager.WIFI_STATE_UNKNOWN //未知
3、获取Wifi信息的方法:
- /**
- * 获取WifiInfo
- * @param mContext
- * @return
- */
- public static WifiInfo getWifiInfo(Context mContext){
- WifiManager mWifiManager = (WifiManager)mContext.getSystemService(Context.WIFI_SERVICE);
- WifiInfo info = mWifiManager.getConnectionInfo();
- return info;
- }
4、获取本机WIFI设备详细信息:
- <span style="white-space:pre"> </span>/**
- * 获取本机WIFI设备详细信息
- * @param mContext
- * @return
- */
- public static String getDetailsWifiInfo(Context mContext){
- StringBuffer sInfo = new StringBuffer();
- WifiInfo mWifiInfo = getWifiInfo(mContext);
- int Ip = mWifiInfo.getIpAddress();
- String strIp = "" + (Ip & 0xFF) + "." + ((Ip >> 8) & 0xFF) + "." + ((Ip >> 16) & 0xFF) + "." + ((Ip >> 24) & 0xFF);
- sInfo.append("\n--BSSID : "+mWifiInfo.getBSSID());
- sInfo.append("\n--SSID : "+mWifiInfo.getSSID());
- sInfo.append("\n--nIpAddress : "+ strIp);
- sInfo.append("\n--MacAddress : "+mWifiInfo.getMacAddress());
- sInfo.append("\n--NetworkId : "+mWifiInfo.getNetworkId());
- sInfo.append("\n--LinkSpeed : "+mWifiInfo.getLinkSpeed()+"Mbps");
- sInfo.append("\n--Rssi : "+mWifiInfo.getRssi());
- sInfo.append("\n--SupplicantState : "+mWifiInfo.getSupplicantState());
- sInfo.append("\n\n\n\n");
- return sInfo.toString();
- }
5、获取周边WiFi热源的信号信息
- /**
- * 搜索到的周边WIFI信号信息
- * @param mContext
- * @return
- */
- public static String getAroundWifiDeciceInfo(Context mContext){
- StringBuffer sInfo = new StringBuffer();
- WifiManager mWifiManager = (WifiManager)mContext.getSystemService(Context.WIFI_SERVICE);
- //WifiInfo mWifiInfo = mWifiManager.getConnectionInfo();
- List<ScanResult> scanResults=mWifiManager.getScanResults();//搜索到的设备列表
- for (ScanResult scanResult : scanResults) {
- sInfo.append("\n设备名:"+scanResult.SSID
- +" 信号强度:"+scanResult.level+"/n :"+mWifiManager.calculateSignalLevel(scanResult.level,4));
- }
- return sInfo.toString();
- }
其中用到了计算WIFI信号强度的方法,这个算法可以直接使用Android源码WifiManager.java中提供的方法calculateSignalLevel();
- /** Anything worse than or equal to this will show 0 bars. */
- private static final int MIN_RSSI = -100;
- /** Anything better than or equal to this will show the max bars. */
- private static final int MAX_RSSI = -55;
- /**
- * Calculates the level of the signal. This should be used any time a signal
- * is being shown.
- *
- * @param rssi The power of the signal measured in RSSI.
- * @param numLevels The number of levels to consider in the calculated
- * level.
- * @return A level of the signal, given in the range of 0 to numLevels-1
- * (both inclusive).
- */
- public static int calculateSignalLevel(int rssi, int numLevels) {
- /* in general, numLevels is 4 */
- 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);
- }
- }
Android系统信息获取 之八:WIFI设备和WIFI信号信息获取相关推荐
- Android获取Linux图像信息,Android系统信息获取 之十三:Linux内核版本信息获取
Android系统信息获取 之十三:Linux内核版本信息获取 Android系统是基于Linux的,各个Android版本对应的Linux版本不尽相同,我们这里不去追究各个Android对应的Lin ...
- C# 获取PCI等设备的插槽位置信息
C# 获取PCI等设备的插槽位置信息 最近遇到问题,需要获取设备管理器中看到的PCI位置等信息,例如: 经过查阅资料发现可以在Win32_PNPEntity表中查找到PCI设备的一些信息: var m ...
- java爬取验证码图片_JAVA HttpClient实现页面信息抓取(获取图片验证码并传入cookie实现信息获取)...
JAVA HttpClient实现页面信息抓取(获取图片验证码并传入cookie实现信息获取) 发布时间:2018-05-18 16:41, 浏览次数:632 , 标签: JAVA HttpClien ...
- Android系统信息获取 之十:移动网络相关信息获取
Android平台移动网络信息主要是通过TelephonyManager类来获取的,通过前面对TelephonyManager的观察Android系统信息获取 之九:TelephonyManager类 ...
- Android系统信息获取 之十三:Linux内核版本信息获取
Android系统是基于Linux的,各个Android版本对应的Linux版本不尽相同,我们这里不去追究各个Android对应的Linux版本是什么,而是通过工具或者使用代码的方法去获取我们使用的A ...
- php 获取移动端设备号,getDeviceId()获取设备号IMEI、MEID、ESN
网络请求的时候需要根据设备号id传参,但是服务端后台收到的有时候为空,服务端的存储就为1个0 .而手机设备号获取与手机本身注册的网相关 本人经测试情况魅蓝note5.1:全网通.2张联通卡.获取结果为 ...
- mysql获取当前时间_MYSQL proxysql 在深入 信息获取和信息输出
ProxySQL 前两期针对不同的MYSQL高可用的方式来说的, 本期会更加深入到PROXYSQL 的一些本身的东西. 在PROXYSQL 中有一个表,存储了所有的global variables, ...
- 常见随身WiFi设备总结
常见随身WiFi设备总结 随着无线通信技术的的爆发式发展,随身WiFi设备必将火爆整个市场,一定会像手机一样普及到每一个用户家里或手里.WIFI是一种无线连接技术的简称,可以简单理解为无线高速连接,随 ...
- MQTT客户端远程控制WIFI设备(阿里云物联网平台)
MQTT客户端远程控制WIFI设备(阿里云物联网平台) MQTT客户端远程控制WIFI设备(阿里云物联网平台) 准备工作 配置Topic 调试 MQTT客户端远程控制WIFI设备(阿里云物联网平台) ...
最新文章
- android底部导航栏_Kotlin实现底部导航栏
- 基于MTD的NAND驱动开发(二)
- 开头th_是什么文件_Python文件读写最详细的讲解
- 8.Java 面试题整理(J2EE,MVC方面)
- solve det(I + uv^t)
- LAMP架构调优(一)——隐藏Apache版本信息
- cmd 文本文件分割_cmd - 分割大文件
- 2015 2020 r4烧录卡 区别_2020版药典,药用辅料被重视了!
- mysql pxc搭建_MySQL(PXC)集群搭建
- 贝叶斯分类器matlab实现
- Elastic Stack应用性能监控APM初窥门径
- 通过直链下载google网盘里的文件
- 用python画花球_只靠一把小小剪刀!她把这些花养成了花球!
- 时间焦虑:为时已晚?
- 【附源码】计算机毕业设计SSM校园流浪猫关爱系统
- Apache IoTDB 鼠年总结
- 答题卡的计分方式_如何建立信用风险模型和记分卡
- 电子元器件品牌及其代理商
- 计算机英语中协议英语,计算机英语
- To_Heart—题解——[HEOI2013]ALO
热门文章
- linux应用编程之进程间同步
- UIButton设置圆角和边框
- andoid-sdk 安装时出现 Stopping ADB server failed(code -1) 错
- C# 11 新增特性
- C语言编译-嵌入式系统
- 微软 Fluent 设计体系, Fluent UI
- Java中遍历Set集合的三种方法
- Vue学习笔记之07-v-for循环遍历
- html() 无效,Internet Explorer无效HTML解析代码漏洞
- 一个树杈y图片_鬼脸纹:黄花梨树上一个树杈,反映到主干上时,会形成一个疖痕...