2015-11-02 1 views
0

gars.Écouteur de connexion Wi-Fi

J'ai un problème avec mon auditeur wifi. J'ai utilisé BroadcastReceiver pour cela.

Ceci est mon code.

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"); 
}} 

Comme vous pouvez le voir, il y a un enregistreur qui dit Connected et Wifi.

Lorsque mon téléphone se connecte au réseau Wi-Fi, le journal apparaît comme ceci.

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 

Il se répète trois fois. Des idées pour montrer cela une seule fois?

Merci.

Répondre

1

Je ne pense pas que vous puissiez faire quelque chose pour l'éviter. La diffusion est envoyée par le système. Cependant, je pense que vous pouvez le pirater avec un drapeau booléen comme:

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

alors devrais-je l'utiliser comme 'Boolean flagIsConnected;'? –

+0

@BedrockDev Oui, vous devez utiliser le drapeau –

+0

il montre l'erreur comme ceci: –