上一次使用的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);