wifi作为手机的重要模块,我们开发中免不了要和它打交道。比如,我们有时候要和wifi进行交互,那我们一定要知道连接的wifi是不是我们要的那个wifi,这时候就需要知道wifi的名字,即SSID。或者有时候我们需要获取手机保存的wifi网络。这些操作都离不开我们的wifi管理器。
1.WifiManager的常用方法
- isWifiEnabled:判断WLAN功能是否开启。
- setWifiEnabled:开启或关闭WLAN功能。
- getWifiState:获取当前的WiFi连接状态。WiFi连接状态的取值见下表
WifiManager类的连接状态 | 说明 | WIFI_STATE_DISABLED | 已断开WiFi | WIFI_STATE_DISABLING | 正在断开WiFi | WIFI_STATE_ENABLED | 已连上WiFi | WIFI_STATE_ENABLING | 正在连接WiFi | WIFI_STATE_UNKNOWN | 连接状态未知 |
- getConnectionInfo:获取当前WiFi的连接信息。该方法返回一个WifiInfo对象,通过该对象的各个方法可获得更具体的WiFi设备信息。下表是WifiInfo的相关主要方法。
方法 | 说明 | getSSID | WiFi路由器MAC | getRssi | WiFi信号强度 | getLinkSpeed | 连接速率 | getNetworkId | WiFi的网络编号 | getIpAddress | 手机的IP地址。整型数,需转换为常见的IPv4地址。 | getMacAddress | 手机的MAC地址。 |
- startScan:开始扫描周围的WiFi信息。
- getScanResults:获取WiFi的扫描结果。
- calculateSignalLevel:根据信号强度计算信号等级。
- getConfiguredNetworks:获取已配置的网络信息。
- addNetwork:添加指定的WiFi连接。
- enableNetwork:启用指定的WiFi连接。第二个参数表示是否同时禁用其他WiFi。
- disableNetwork:禁用指定的WiFi连接。
- disconnect:断开当前的WiFi连接。
2.获取当前连接WIFI的SSID示例
WifiManager wifiManager = ((WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE));
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String wifiName = wifiInfo.getSSID();
3.注意事项
我们要操作wifi管理器,必须要获取到定位权限。首先是清单文件中
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
当然,定位的动态权限也是需要加上的。如何申请动态权限我这里就不重复了。
|