2015-11-02 141 views
0

夥計。Wi-Fi連接監聽器

我的wifi監聽器出現了一些問題。

我爲此已使用BroadcastReceiver

這是我的代碼。

public class WiFiService extends BroadcastReceiver { 

Context mcontext; 

@Override 
public void onReceive(Context mcontext, Intent intent) { 
    NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); 

    if(info != null) { 

     if(info.isConnected()) { 
      WifiManager wifiManager = (WifiManager)mcontext.getSystemService(Context.WIFI_SERVICE); 
      WifiInfo wifiInfo = wifiManager.getConnectionInfo(); 

      Log.d("WifiConnection", "Connected"); 
      this.mcontext = mcontext; 

      Wifi(); 
     } 
    } 
} 

private void Wifi() { 
    WifiManager wifiManager = (WifiManager)mcontext.getSystemService(Context.WIFI_SERVICE); 
    WifiInfo wifiInfo = wifiManager.getConnectionInfo(); 
    String bssid = wifiInfo.getBSSID(); 

    //Have something to do here. 

    Log.d("WifiConnection", "HomeWifi"); 
}} 

正如你所看到的,是有記錄儀,上面寫着ConnectedWifi

當我的手機連接到無線網絡,th日誌顯示這樣。

11-02 16:45:22.611 6678-6678/com.bedrock.live D/WifiConnection: Connected 
11-02 16:45:22.622 6678-6678/com.bedrock.live D/WifiConnection: HomeWifi 
11-02 16:45:22.627 6678-6678/com.bedrock.live D/WifiConnection: Connected 
11-02 16:45:22.627 6678-6678/com.bedrock.live D/WifiConnection: HomeWifi 
11-02 16:45:25.842 6678-6678/com.bedrock.live D/WifiConnection: Connected 
11-02 16:45:25.843 6678-6678/com.bedrock.live D/WifiConnection: HomeWifi 

它重複三次。任何想法只顯示一次?

謝謝。

回答

1

我不認爲有任何事情可以做,以避免它。廣播由系統發送。不過,我認爲你可以用一個布爾標誌來破解它:

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

if(info != null) { 

    if(info.isConnected() && !flagIsConnected) { 
     //state change from disconnected to connected 
     flagIsConnected = true; // set flag here to 
     WifiManager wifiManager = (WifiManager)mcontext.getSystemService(Context.WIFI_SERVICE); 
     WifiInfo wifiInfo = wifiManager.getConnectionInfo(); 

     Log.d("WifiConnection", "Connected"); 
     this.mcontext = mcontext; 

     Wifi(); 
    }else if(!info.isConnected() && flagIsConnected){ 
     //state change from connect to disconnected 
     flagIsConnected = false; 
    } 
} 
+0

所以我應該使用這個'布爾flagIsConnected;'? –

+0

@BedrockDev是的,你應該使用國旗 –

+0

它顯示這樣的錯誤: –