0

アプリを作成しようとしていますが、今のところ解決できない問題がいくつかあります。

私のアプリケーションは、指定された名前の特定の AP に接続し、IP ゲートウェイを表示する必要があります。私がやろうとしているのは、アプリの起動時に、WiFi モジュールが有効になっているかどうかを確認することです。そうでない場合は、有効にして AP に接続します。有効になっている場合は、正しい AP に既に接続されているかどうかを確認し、そうでない場合はそこに接続します。

だから、今のところ私はした:

wifi部分を有効にします。enableWifi() という名前の AlertDialog を介して呼び出される関数です (アプリケーションから WiFi を有効/無効にする方法は? )

WiFi ネットワーク情報を設定し、そこに接続します。また、setupWiFi() という名前の AlertDialog を介して呼び出される関数でもあります ( WPA2 PSK WiFi ネットワークに接続するために Android WifiConfiguration.preSharedKey に設定する方法と対象)

IP ゲートウェイを取得します。setIP() という名前の関数です。これにより、EditText ビューに IP が書き込まれます。(ゲートウェイとサブネット マスクの詳細をプログラムで取得する)

AP に接続するには、次の 2 つの方法があります。

1) Wifi を有効にする -> AP に接続する

2) AP に接続する

ここで問題が発生します。WiFi モジュールを有効にすると、AP への接続を開始するために有効化が完了するまで待ってから、ゲートウェイ IP を取得するために接続が完了するまで待つ必要があります。これらの「待機」部分の実行方法がわかりません。2) の場合にアプリが実行することは、AP に接続し、現在のネットワークのゲートウェイを取得することです。これはまだ古いネットワークであり、必要のないネットワークです。

AsyncTask や Thread などのスレッドを試しましたが、うまくいきませんでした...

読んでくれてありがとう。これが簡単に解決できることを願っています!

敬具、 ラウル・スアレス

4

1 に答える 1

2

アクション (ConnectivityManager.CONNECTIVITY_ACTION) をリッスンして、アクティブなネットワークに接続しているかどうかを識別できます。

IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);

さらに、現在アクティブなネットワーク タイプ (Type_WIFI、Type_MOBILE) を確認できます。このインテント フィルターを使用してブロードキャスト レシーバーを実装し、レシーバーの onReceive() メソッドでタスクを実行します。

于 2013-05-06T16:13:22.453 に答える