相关授权:
使用wifi
<uses-feature android:name=”android.hardware.wifi” />
访问Wi-Fi网络状态信息
<uses-permission android:name=”android.permission.ACCESS_WIFI_STATE” />
改变WiFi状态
<uses-permission android:name=”android.permission.CHANGE_WIFI_STATE” />
改变WiFi多播状态
<uses-permission android:name=”android.permission.CHANGE_WIFI_MULTICAST_STATE” />
android.net.wifi 中常用的类有:
-
ScanResult, 主要用来描述已经检测出的接入点,包括接入点的地址、接入点的名称、身份认证、频率、信号强度等。
-
WifiConfiguration, wifi网络配置,包括安全配置等。
-
WifiInfo, Wifi无线连接的描述,包括接入点、网络连接状态、隐藏的接入点、IP地址、连接速度、MAC地址、网络ID、信号强度等。
-
WifiManager, 提供管理wifi连接的大部分API。
-
WifiManager.WifiLock, 通过WifiLock来锁定wifi网络,使其一直保持连接,直到这个锁定被释放。如果app需要下载很大的文件,就需要保持wifi锁,来确保app有足够的时间下载完成。wifi锁不能超越wifi-enabled设置,也没有飞行模式。
WifiManager的常用方法
-
addNetwork
-
calculateSignalLevel,
-
compareSignalLevel,
-
createWifiLock,
-
disableNetwork,
-
disconnect,
-
enableNetwork,
-
getConfiguredNetworks,
-
getDhcpInfo,
-
getScanResults,
-
getWifiState,
-
isWifiEnabled,
-
pingSupplicant,
-
reassociate,
-
removeNetwork,
-
saveConfiguration,
-
setWifiEnabled,
-
startScan,
-
updateNetwork.
应用
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
mWifiInfo = mWifiManager.getConnectionInfo();
// 打开wifi
mWifiManager.setWifiEnabled(true);
private List<ScanResult> mWifiList;
// 扫描wifi网络
mWifiManager.startScan();
mWifiList = mWifiManager.getScanResults();
WifiConfiguration wifiConfig = new WifiConfiguration();
wifiConfig.SSID = "\"" + ssid + "\"";
wifiConfig.preSharedKey = "\"" + 密码 + "\"";
......
// 添加一个网络并连接
int wifiConfigId = mWifiManager.addNetwork(wifiConfig);
mWifiManager.enableNetwork(wifiConfigId, true);
// 得到MAC地址
mWifiInfo.getMacAddress();
// 得到接入点的BSSID
mWifiInfo.getBSSID();
// 得到IP地址
mWifiInfo.getIpAddress();
......