安卓版本:4.4.2 运行平台:广州微嵌安卓工业平板
1、安卓使用wifi模块需在AndroidMainfest.xml声明权限:
允许程序改变Wi-Fi连接状态
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
允许程序访问Wi-Fi网络状态信息
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
2、获取WifiManager的实例,用于操作wifi:
wifiManager = (WifiManager)getSystemService(Service.WIFI_SERVICE);
3、打开或关闭wifi
//isChecked为true表示打开wifi,false关闭WiFi
if(!wifiManager.wifiEnable(isChecked))
{
Toast.makeText(MainActivity.this,"WifisetEnabledfaled",
Toast.LENGTH_SHORT).show();;
}
//获取WiFi当前的状态
switch(wifiManager.getWifiState())
{
//wifi处于关闭状态
case WifiManager.WIFI_STATE_DISABLED:
enableSwitch.setChecked(false);
break;
//wifi处于打开状态
case WifiManager.WIFI_STATE_ENABLED:
enableSwitch.setChecked(true);
//该方法用于开始扫描附近的wifi热点
wifiManager.startScan();
break;
}
4、注册wifi的相应广播监听wifi的状态改变:
//扫描到可用的wifi热点
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION
//wifi状态改变
WifiManager.WIFI_STATE_CHANGED_ACTION
//wifi请求连接成功或失败
WifiManager.SUPPLICANT_STATE_CHANGED_ACTION
//wifi连接或断开状态改变,
ConnectivityManager.CONNECTIVITY_ACTION
//wifi热点状态改变
"android.net.wifi.WIFI_AP_STATE_CHANGED"
定义BroadcastReceiver接收广播:
class WifiReceiver extends BroadcastReceiver
{
public void onReceive(Context context, Intent intent)
{
//扫描到可用热点
if (intent.getAction().equals(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION))
{
//获取最近一次扫描到的wifi列表
resultList = wifiManager.getScanResults();
String[] result = mywifi.getString(resultList);
int i=0;
for(ScanResult scan:resultList){
//判断是否已保存了连接信息
if(mywifi.isSaveConfigtion(scan.SSID)!=null){
result[i] += ":已保存";
}
i++;
}
}
//wifi或热点的状态发生改变
else if(intent.getAction()
.equals(WifiManager.WIFI_STATE_CHANGED_ACTION)||
intent.getAction()
.equals("android.net.wifi.WIFI_AP_STATE_CHANGED"))
{
//获取wifi或热点当前的状态
switch(intent.getIntExtra("wifi_state", 0)){
//wifi状态变成关闭
case 1:
adapter.clear();
stateText.setText("Wifi已关闭");
break;
//WiFi状态变成打开
case 3: