2013-10-03 42 views
1

我正在開發一款Android應用,切換上WiFi和它打開的時候進行進一步的處理..添加小定時器到活動,直到wifi重新啓動?

wifiManager.setWifiEnabled(true); 

但條件..

wifiEnabled = wifiManager.isWifiEnabled(); 


if(wifiEnabled) 
{ ...... } 

,因爲無線網絡需要時間來重新總是返回False 我如何等待,直到它重新啓動或實際連接到一個WiFi網絡..

我知道我可以用來檢查它是否實際連接或連接的情況。

Boolean isWifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting(); 
Boolean isWifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected(); 

我的兩個問題?

1-等到wifi啓用,即打開? 2,等待untli它實際連接到一個wifi網絡?

回答

2

1-等到wifi啓用,即打開? 2-等待不要它 實際連接到一個WiFi網絡?

您可以爲這兩個事件創建BroadcastReceiver然後執行具體行動:

public class WifiStateReceiver extends BroadcastReceiver { 

    // action for Wi-Fi device status changes (enabled, disabled etc.) 
    if (intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) { 

     // get actual status of Wi-Fi 
     int state = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 
            WifiManager.WIFI_STATE_UNKNOWN); 

    if (state == WifiManager.WIFI_STATE_ENABLED) { 
     // do your stuff 
    } 

    ... 

    // similar for WIFI_STATE_DISABLED 
    } 

    // action for connectivity changes (connected, disconnected etc.) 
    if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) { 

     NetworkInfo ni = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); 

     if (ni.getState().equals(NetworkInfo.State.CONNECTED)) { 
     // do your stuff if is connected 
     } 

     ... 

     // similar for DISCONNECTED 
    } 
} 

如果您想了解更多的連接狀態(連接,獲得IP地址等),你需要使用:

networkInfo.getDetailedState(); 

這也取決於設備上的實際API級別。

最後,你需要這些意向過濾器廣播接收器:

<action android:name="android.net.wifi.WIFI_STATE_CHANGED" /> 
<action android:name="android.net.wifi.STATE_CHANGE" /> 

參考文獻:

0

如果你真的需要WIFI連接與您的應用程序進行你必須等待的邏輯。說,你可以創建一個AsyncTask來處理「等待」情況。 AsyncTask將顯示一個ProgressDialog表示WiFi連接狀態。

如果用戶必須手動開啓wifi ON,則AsyncTask將在wifiEnabled = true後運行,並在manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected() == true時停止。

我不知道這個答案可以幫助你,但這是我對你的問題的解釋。
保重,希望它有幫助。

相關問題