2016-05-10 4 views
0

Я подключаюсь к сети wifi в своем приложении , и пока я делаю это, я показываю пользователю диалог с костюмом, в котором есть анимация.wifi Manager wifiManager.addNetwork Останавливает мой UI

проблема заключается в том, что в то время как я сделать эту линию>

wifiManager.addNetwork(conf); 

моя анимация в прихвата и иногда мое приложение диалогового ПОЛУЧИТЬ идет не отвечает.

любая идея о том, как исправить это?

, и если я не могу показать диалог при подключении к сети, что вы предлагаете показывать пользователю?

это мой Подключение к сети функции в моем Wifi Упаковочный класса:

public void connectToNetwork(String ssidName, String netPassword, final Context applicationContext, final wifiConnectionEsteblishedInterface callback) { // in order to call callback from another thread it needs to be final 

     final String networkSSID = ssidName; 
     String networkPass = netPassword; 

     WifiConfiguration conf = new WifiConfiguration(); 
     conf.SSID = "\"" + networkSSID + "\""; // Please note the quotes. String should contain 
     conf.preSharedKey = "\"" + networkPass + "\""; 

     WifiManager wifiManager = (WifiManager) applicationContext.getSystemService(Context.WIFI_SERVICE); 
     wifiManager.addNetwork(conf); 

     List<WifiConfiguration> list = wifiManager.getConfiguredNetworks(); 
     for (WifiConfiguration i : list) { 

      if (i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"")) { 

       wifiManager.disconnect(); 
       wifiManager.enableNetwork(i.networkId, true); 
       wifiManager.reconnect(); 
       break; 
      } 
     } 

     Log.d("myLogs", "log-0"); 

     callback.callbackFromWifi(); // calls the cllback 


    } 

и это мой диалог слушателем

public void onClick(DialogInterface dialog, int id) { //on button clicked 

         mainDialog.show(); //show main dialog back again 

         loaderScreenMainText.setText("Connecting to RADWIN WiFi"); // shows on screen message 

         final Handler handler = new Handler(); 
         handler.postDelayed(new Runnable() { 
          @Override 
          public void run() { 
           // Do something after 5s = 5000ms 
           wifiWrapper WifiWrapper = new wifiWrapper(); 

           WifiWrapper.toggleWiFi(Scanning_Barcode_Activity.this, true); // turns wifi ON 

           aligmentManager aligmentManager = new aligmentManager(); // tells the manager that we started looking for a wifi 
           aligmentManager.initlizedConnectingToWifi(); 


           if (scanResults != null) { //in future use we will use scanResults veriable which is already initlized by now; 

            WifiWrapper.connectToNetwork("nmsRoom", "12345678", getApplication(), callbackFunctionForisWifiConnection); //in the future we will pass the scan results to the network 

            // 

           } else { 
            //do something in case scan result fails 

           } 


          } 
         }, 500); //deley in order to start the animation before hand (otherwise the dialog shows after, 2, 3 seconds 


        } 

ответ

1

Вы подключаетесь к Wi-Fi в потоке пользовательского интерфейса, который останавливается пока код не закончится. Если вы хотите, чтобы анимация запускалась, вы должны поместить код подключения в AsyncTask или каким-либо другим способом переместить его из потока пользовательского интерфейса.

+0

Thnx Allot, @Panel, вы знаете более простой способ, чем открыть AsyncTask для выполнения операции Wifi? –

+0

Вы можете запустить новую тему, переопределить run() и скопировать код там. Не забудьте вызвать на нем start(). – Panel

+0

THNX помогло выделить –