2016-10-02 13 views
0

私はWi-Fi接続を待つ目的でハンドラを使用しようとしています。この私が使用しているコードの一部:whileループでハンドラを使用してイベントを待つ方法は?

final AlertDialog alertDialog2 = new AlertDialog.Builder(new android.view.ContextThemeWrapper(context, R.style.AlertDialogCustom)).create(); 
    alertDialog2.setTitle("Loading..."); 
    alertDialog2.setIcon(R.drawable.check); 
    alertDialog2.show(); 
    Handler handler = new Handler(); 
    int count = 0; 
    while (!isConnected() /*Check wifi connection*/) { 
     handler.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       alertDialog2.dismiss(); 
       // do other thing 
      } 
     }, 200); 
     count++; 
     /*stop the loop after 20s*/ 
     if (count > 100) { 
      break; 
     } 
    } 

をあなたは私が運転中に負荷alertDialogを見せたいし、それが終了していますとき、私は通知するようにそれを停止したいのですが、コードの一部で見ることができるように彼のWiFi接続のためのユーザー。

答えて

0

あなたはWIFIブロードキャスト受信機を使用する必要があります。

最初にダイアログを表示し、WIFIステータスが変更されたときとダイアログを閉じるタイミングを通知するwifiブロードキャスト受信者を登録する必要があります。

はWIFIの状態を検出する方法を知るには、以下のリンクを参照してください

How to detect when WIFI Connection has been established in Android?

final AlertDialog alertDialog2 = new AlertDialog.Builder(new android.view.ContextThemeWrapper(context, R.style.AlertDialogCustom)).create(); 
alertDialog2.setTitle("Loading..."); 
alertDialog2.setIcon(R.drawable.check); 
alertDialog2.show(); 

private final BroadcastReceiver myReceiver = new BroadcastReceiver() { 

@Override 
    public void onReceive(Context context, Intent intent) { 
     if(intent.getAction().equalsIgnoreCase("android.net.wifi.STATE_CHANGE")) { 
      Log.d(TAG,"WIFI STATE CHANGED"); 
alertDialog2. dismiss(); 
     } 
    } 
}; 

IntentFilter intent = new IntentFilter(""); 
registerReceiver(myReceiver, intent); 
+0

あなたの答えてくれてありがとうしかし、問題は無線LANが接続されている場合にのみ、私は通知されるということですが変更されます。しかし、それが失敗したかどうかはどうすればわかりますか?だから私はタイマーが欲しかったのです。 –

関連する問題