Android学习笔记(十)WIFI设备
一、废话
很久没有更新博客了,因为放假在家没有网络,直到前天才上班,昨晚去潇洒了,今天开始继续更新博客。在笔记九中介绍了蓝牙设备,并在结尾的时候说了要介绍下WIFI设备的一些操作。
二、正文
1、WIFI设备是个啥?
WIFI是个啥?请移步至百度百科。
2、WIFI有哪些状态?
在Android的官方文档中定义了如下五种状态:
-
- WIFI_STATE_DISABLED WIFI网卡不可用
- WIFI_STATE_DISABLING WIFI网卡正在关闭
- WIFI_STATE_ENABLED WIFI网卡可用
- WIFI_STATE_ENABLING WIFI网卡正在打开
- WIFI_STATE_UNKNOWN WIFI网卡状态不可知
3、如何操作WIFI?
要操作WIFI设备,就需要使用Context.getSystemService(Context.WIFI_SERVICE)来获取WifiManager对象,并通过这个对象来管理我们的WIFI设备。
-
- addNetwork(WifiConfiguration config) 添加一个config描述的WIFI网络,默认情况下,这个WIFI网络是DISABLE状态的。
- calculateSignalLevel(int rssi , int numLevels) 计算信号的等级
- compareSignalLevel(int rssiA, int rssiB) 对比网络A和网络B的信号强度
- createWifiLock(int lockType, String tag) 创建一个WIFI 锁,锁定当前的WIFI连接
- disableNetwork(int netId) 让一个网络连接失效
- disconnect() 断开当前的WIFI连接
- enableNetwork(int netId, Boolean disableOthers) 连接netId所指的WIFI网络,并是其他的网络都被禁用
- getConfiguredNetworks() 获取网络连接的状态
- getConnectionInfo() 获取当前连接的信息
- getDhcpInfo() 获取DHCP 的信息
- getScanResulats() 获取扫描测试的结果
- getWifiState() 获取当前WIFI设备的状态
- isWifiEnabled() 判断WIFI设备是否打开
- pingSupplicant() ping操作,和PC的ping操作相同作用
- ressociate() 重新连接WIFI网络,即使该网络是已经被连接上的
- reconnect() 重新连接一个未连接上的WIFI网络
- removeNetwork() 移除某一个网络
- saveConfiguration() 保留一个配置信息
- setWifiEnabled() 让一个连接有效
- startScan() 开始扫描
- updateNetwork(WifiConfiguration config) 更新一个网络连接
4、如何得到周围的WIFI热点列表?
如果要想得到周围的WIFI热点列表,可以使用WifiManager.getScanResults()返回一个ScanResult列表,ScanResult对象中,包含了以下几个属性:
-
- BSSID 接入点的地址
- SSID 网络的名字,唯一区别WIFI网络的名字
- Capabilities 网络接入的性能
- Frequency 当前WIFI设备附近热点的频率(MHz)
- Level 所发现的WIFI网络信号强度
5、如何连接上我的WIFI?
1 /**
2 * 根据ID值来自动连接WIFI网络
3 * @param index ID值
4 */
5 public void ConnectWifiBySSID(int index) {
6 // 索引大于配置好的网络索引返回
7 if (index > mWifiConfiguration.size()) {
8 return;
9 }
10 // 连接配置好的指定ID的网络
11 mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,true);
12 }
13 /**
14 * 根据WifiConfiguration对象来自动连接WIFI网络
15 * @param wcg WifiConfiguration对象
16 */
17 public void ConnectWifiByConfig(WifiConfiguration wifiConfiguration) {
18 int wcgID = mWifiManager.addNetwork(wifiConfiguration);
19 mWifiManager.enableNetwork(wcgID, true);
20 }
没什么好解释的,可以直接看上面的代码段。
6、如何查看已经连接上的WIFI信息?
在Android的SDK中为我们提供了一个叫做WifiInfo的对象,这个对象可以通过WifiManager.getConnectionInfo()来获取。WifiInfo中包含了当前连接中的相关信息。
-
- getBSSID() 获取BSSID属性
- getDetailedStateOf() 获取客户端的连通性
- getHiddenSSID() 获取SSID 是否被隐藏
- getIpAddress() 获取IP 地址
- getLinkSpeed() 获取连接的速度
- getMacAddress() 获取Mac 地址
- getRssi() 获取802.11n 网络的信号
- getSSID() 获取SSID
- getSupplicanState() 获取具体客户端状态的信息
三、总结
以上就是WIFI的一些操作了,本来打算要介绍下Android中数据的传输的相关知识的,但是我由于数据传输还比较多,所以就放到明天的笔记中介绍了。
【源码下载】
作者:Libo@Deng
出处:http://www.cnblogs.com/cxcco/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
我的微博:
新浪微博