WIFI部分:
WifiManager代表Android中Wifi连接服务,用于配置管理WIFI连接,通过getSystemService获得,获得方式如下:
wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
在这之前需要配置Wifi的权限:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
通过调用wifiManager的setWifiEnabled方法可以切换wifi状态,setWifiEnabled的参数为true时为打开wifi,为flase为关闭;当然,在这之前最好先调用getWifiState或者isWifiEnabled查看当前wifi的状态,getWifiState的返回值为WifiManager中的WIFI_STATE_ENABLED、WIFI_STATE_ENABLING、WIFI_STATE_DISENABLED、WIFI_STAT_DISENABLING、WIFI_STATE_UNKNOWN中的一个,这与监听WIFI_STATE_CHANGE_ACTION时从接收到的广播中取出的状态是一样的,当wifi状态改变时,就能接收来之系统附带当前wifi状态的广播。
public int getWifiState(){
return wifiManager.getWifiState();
}
public void openWifi(){
if(!wifiManager.isWifiEnabled()){
wifiManager.setWifiEnabled(true);
}
}
public void closeWifi(){
if(wifiManager.isWifiEnabled()){
wifiManager.setWifiEnabled(false);
}
}
调用wifiManager的startScan方法开始扫描周围可连接的WIFI,然后调用getSancResults方法可以获得扫描到的可连接wifi。
private List<ScanResult> getScanResult(){
wifiManager.startScan();
List<ScanResult> wifiList = wifiManager.getScanResults();
return wifiList;
}
ScanResult类中记录的是扫描到的热点的信息,包括:
SSID wifi的名字
BSSID 接入点的地址,也是wifi网卡的mac地址(手机wifi网卡下wifi通道和p2p通道mac地址不同)
capabilities wifi的加密方式
frequency wifi的频率
level wifi的信号强度
连接wifi需要调用wifimanager的enableNetwork方法,这个方法的第一个参数是需要连接wifi网络的n