我需要知道如何檢測Wi-Fi網絡中的交換機,儘管是自動或手動的,這並不重要。檢測到交換機時,整個系統是否有某種意圖被廣播?還是必須通過調用ConnectivityManager上的方法手動檢查是否選擇了新網絡?如何檢測網絡中的變化?
回答
在這個時間點,我有固定的這個像這樣(沒有經過充分測試它尚未因爲我沒有在目前可用的第二個網絡):
我延長了廣播接收器類
private class NetworkSwitcher extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (!action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
return;
}
NetworkInfo networkInfo =
(NetworkInfo)intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
if (networkInfo.isConnected()) {
if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
Log.d(TAG, "Network type: " + networkInfo.getTypeName() +
" Network subtype: " + networkInfo.getSubtypeName());
getOwnIpAddress();
mClient.updateUnicastSocket(mOwnAddress, mUnicastPort);
}
}
else {
Log.e(TAG, "Network connection lost");
}
}
}
我註冊這個類作爲與設置爲ConnectivityManager.CONNECTIVITY_ACTION
意圖(其設置在onResume()
和onPause()
釋放它)的過濾器的接收器。這應該捕獲任何自動Wi-Fi網絡交換機。 getOwnIpAddress
從WifiManager
中檢索設備的IP地址。
我還發現它在我從其他活動返回到活動時起作用。
我意識到這是公認的(由OP),但我不認爲它會工作。文檔建議使用WifiManager而不是ConnectivityManager來描述您所描述的內容,因此您可以使用WifiManager.NETWORK_STATE_CHANGED_ACTION,但我不確定是否即使這樣做也能解決問題:當您的客戶端從一個BSSID漫遊到下一個時通知您(如果我正確地理解了這個問題)。 – Tom 2013-02-07 04:02:56
這實際上可能是一個更好的解決方案。雖然我不再在這個應用程序上工作(可能在未來也是如此)。如果我知道WifiManager,我也會嘗試。 – ThaMe90 2013-02-07 07:41:58
'WifiManager.NETWORK_STATE_CHANGED_ACTION'將完全按照@Tom的說法在[Documentation]中提及(http://developer.android.com/reference/android/net/wifi/WifiManager.html#NETWORK_STATE_CHANGED_ACTION) – Sdghasemi 2015-12-10 19:34:40
- 1. 如何使用可達性檢測網絡中的變化?
- 2. 如何檢測iOS中的WiFi網絡變化
- 3. 在iPad上檢測wifi網絡變化
- 4. CentOS服務器:如何檢測網絡狀態變化
- 5. 檢測網頁中的變化區域
- 6. 廣播接收器檢測到變化的移動網絡
- 7. 如何檢測Android中塔的變化?
- 8. 如何檢測iOS中的SIM變化
- 9. 如何檢測youtube中的變化getCurrentTime()?
- 10. 檢測網絡是否改變?
- 11. PHP如何檢測變量的變化?
- 12. 如何檢測變量的變化?
- 13. 不斷檢查無線網絡變化
- 14. 如何檢測VB.NET中數據網格的變化
- 15. 如何檢測網絡斷開連接?
- 16. 如何檢測網絡空閒時間?
- 17. 如何在網絡上檢測iPhone?
- 18. 如何自動檢測網絡中的子網數
- 19. 網絡攝像機,如何在網絡上檢測它?
- 20. 如何檢測當前的網址當發生任何變化
- 21. 如何捕捉無線網絡變化?
- 22. Java如何檢測變量變化
- 23. 如何檢測RadioNodeList的值的變化?
- 24. 檢測變化
- 25. 檢測任何連接的網絡
- 26. 檢測任何連接網絡的人
- 27. 如何檢測/etc/init.d腳本中的網絡初始化時間?
- 28. 如何檢測DOM屬性的變化?
- 29. 如何檢測屏幕上的變化?
- 30. 如何從mainactivity檢測的ListView變化
[檢測3G或Wifi網絡恢復]的可能的副本(http://stackoverflow.com/questions/4503561/detect-3g-or-wifi-network-restoration) – Reno 2011-06-03 08:07:57
這個問題似乎回答如何檢測是否一個網絡一般連接或斷開。我需要知道網絡之間何時發生切換。 – ThaMe90 2011-06-03 08:18:06
您可以使用相同的代碼。如果類型爲Wifi,請使用NetworkInfo獲取[EXTRA_](http://developer.android.com/reference/android/net/wifi/WifiManager.html)數據。例如,對於各種WiFi n/w,BSSID應該不同 – Reno 2011-06-03 08:36:21