上一次使用的wifi自动断开/连接的基本方法是:先判断wifi是否打开,并且连接上,如果连上,则断开,断开后再连接,如此循环,因为打开wifi连接中间有一个时间差,当时是直接用线程,然后让该线程休眠的办法,来错开这个时间差,结果是可以达到想要的效果,可是,可最后发现这样有问题,因为这样硬性地去控制为休眠多少秒,显然有问题,如果考虑到硬件和环境等等的额外因素,万一休眠过后还是没有做完上一步,所以只能弃用这种办法,选择利用广播去监听wifi的真实状态,例如,能够准确获取到wifi是否已经开打,或者断开,而不是一切别的时候,例如正在断开,和正在连接,就不会出现其实是在正在连接的状态却被判断成了无连接wifi。
// 监听wifi状态广播
private BroadcastReceiver mwifiBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
ConnectivityManager localConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo localNetworkInfo = (localConnectivityManager == null ? null
: localConnectivityManager.getActiveNetworkInfo());
if (localNetworkInfo != null) {
if (localNetworkInfo.isConnected()) {
//已连接
} else {
//断开连接
}
} else {
//localNetworkInfo is null, NETWORK................DISCONNECT......
}
}
}
};
//注册广播
IntentFilter myIntentFilter = new IntentFilter();
myIntentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mwifiBroadcastReceiver,myIntentFilter);