4

開発中の新しい Android アプリで自動化のテストをセットアップしようとしていますが、API の 1 つに少し問題があります。

私が直面している問題は、接続状態ではなく、wifi が接続された後にテストを開始したいということです。私は2つの解決策を試しましたが、運がなく、Androidデバイスが完全に接続される前にテストが開始されたようです(wifiバーにxはありません)

wifiManager.setWifiEnabled(state);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
while (wifiInfo.getSSID() == null) {
    Log.i("WifiStatus", "Here I am");
    Thread.sleep(Time.ONE_SECOND);
    wifiInfo = wifiManager.getConnectionInfo();

これは、接続が確立されているかどうかを判断するために SSID を取得しようとする最初の実装です。ただし、完全な接続が確立される前にテストが開始され、セットアップに失敗します。

ConnectivityManager connManager = 
    (ConnectivityManager) con.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

wifiManager.setWifiEnabled(state);
while (!networkInfo.isConnected()) {
    Log.i("WifiStatus", "Here I am");
    Thread.sleep(Time.ONE_SECOND);
    networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
}

2 番目の実装では、代わりに接続マネージャーを使用し、isConnected().

デバイスがwifiとの接続を完全に確立しているかどうかを確認するために確認できる別の方法はありますか?

4

3 に答える 3

4

networkinfo を手動で取得する代わりに...「現在アクティブな」ネットワークを取得して、それが Wi-Fi かどうかを確認してみてください。注: null の場合は、ネットワークが接続されていないことを意味するため、isConnected 呼び出しを置き換えます。

ConnectivityManager connManager = 
    (ConnectivityManager) con.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo current = connManager.getActiveNetworkInfo();
boolean isWifi = current != null && current.getType() == ConnectivityManager.TYPE_WIFI;
于 2013-01-10T23:12:00.587 に答える
3

そのように呼びたい場合は、「ping」を送信します。接続が完了すると、まだ接続されていることがわかります。IOExceptionまたはが表示された場合はNullPointerException、おそらくタイムアウトしており、接続されていません。

try {
        URL url = new URL("http://www.google.com");
        HttpURLConnection urlConnect = (HttpURLConnection) url.openConnection();
        urlConnect.setConnectTimeout(1000);
        urlConnect.getContent();
        System.out.println("Connection established.");
    } catch (NullPointerException np) {
        np.printStackTrace();
    } catch (IOException io) {
        io.printStackTrace();
    }
于 2013-01-10T22:58:46.923 に答える