赞
踩
在平常开发中经常会涉及到wifi相关的内容,在此将之前所用到的整理一下,以免忘记。
操作wifi的相关类,主要放在android.net.wifi包下面。使用wifi相关方法需要申请一些权限:
ACCESS_WIFI_STATE 获取WiFi状态。
CHANGE_WIFI_STATE 改变WiFi状态。
CHANGE_WIFI_MULTICAST_STATE 改变WiFi多播状态
申请权限方式:在AndroidManifest.xml文件中填写
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
先说一下wifi的基本使用情况。
这些代码看起来没有什么问题,但是通过不同环境的测试,发现了一些问题。
1 测试到的wifi热点,有的ssid为”“,也就是ssid != null,获取不到said。
2 wifi列表中有许多同名的wifi热点,也就是扫描的结果中有重合部分,并不是有多个同名的wifi热点。
第一个问题ssid为“”,这个看设置中并没有多余wifi,但这个热点点其它信息可以获取到,说明这个热点是存在的,应该是该热点隐藏了,所以获取不到。这也就是手机设置中为什么会有添加网路的按钮了。
第二个问题,当附近wifi热点比较少时不会出现此问题,当附近wifi网络比较多时会出现此问题。这就需要将同名的热点进行删除,但是如果真有两个ssid名相同的wifi,那就可以通过capabilities去区分吧,如果capabilities也相同就没办法了,系统设置里面也不显示同名的。
修改上面的方法 startScan()。
代码
这个类主要是通过Wifi硬件的扫描来获取一些周边的wifi热点(access point)的信息。该类主要有5个域,
返回类型 | 域名 | 解释 |
public String | BSSID | 接入点的地址 |
public String | SSID | 网络的名字 |
public String | capabilities | 网络性能,包括接入点支持的认证、密钥管理、加密机制等 |
public int | frequency | 以MHz为单位的接入频率 |
public int | level | 以dBm为单位的信号强度。 |
打印信息如下所示:
通过该类获取一个wifi网络的网络配置,包括安全配置等。它包含6个子类,如下所示:
子类 | 解释 |
WifiConfiguration.AuthAlgorthm | 获取IEEE 802.11的加密方法 |
WifiConfiguration.GroupCipher | 获取组密钥 |
WifiConfiguration.KeyMgmt | 获取密码管理体制 |
WifiConfiguration.PairwiseCipher | 获取WPA方式的成对密钥 |
WifiConfiguration.Protocol | 获取加密协议 |
WifiConfiguration.Status | 获取当前网络状态 |
该类可以获得已经建立的或处于活动状态的wifi网络的状态信息。常用方法如下:
代码:
该类用于管理Wifi连接,定义了许多常量和方法,这里就不一一说了。
常用方法。
需要指出的是getWifiState()方法是反悔wifi的状态,有整型常量表示,
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。