2013-01-10 2 views
4

내가 개발 중이지만 api 중 하나와 문제가있는 새로운 Android 앱에 대한 테스트를 설정하려고합니다.안드로이드가 wifi에 연결되어 있는지 프로그래밍 방식으로 결정하는 방법은 무엇입니까?

문제는 내가 테스트를 시작하려고합니다. wifi가 연결되면, 연결 상태가 아닐 때. 나는 두 가지 솔루션을 시도했지만 운이 없었 테스트 내 안드로이드 장치가 완전히 (와이파이 막대에는 x)가 연결되어 있지되기 전에 나의 첫번째 구현이 SSID 연결 여부를 결정하려고 노력한다

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(); 

시작하는 것 같습니다있다 설립되었습니다. 그러나 전체 연결이 이루어지기 전에 테스트가 시작되어 설정에 실패합니다.

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

내가 대신 연결 관리자를 사용하고 isConnected()을 사용하고 두 번째 구현입니다.

다른 사람이 장치에서 Wi-Fi와의 연결을 완전히 설정했는지 확인할 수있는 방법이 있습니까?

+0

아마도 google.com에 핑하는 어떤 종류의? – twoleggedhorse

+0

감사합니다! 나는 실제로 그 방법에 의지하여 네트워크에 대한 완전한 연결을 결정해야만했다. – kptkev

답변

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(); 
    } 
+3

이것은 3G 또는 EDGE 연결로부터의 Wi-Fi 연결을 어떻게 나타낼까요? – 9000

+0

기기가 휴대 전화 네트워크가 아닌 ** WI-FI **에 연결되었는지 여부를 묻는 질문이 표시됩니다. – syb0rg

+0

감사합니다 syb0rg! 많은 도움이되었습니다. api 내가 사용하고 있었는지 확실하지 않았거나 이미 처리했는지 여부는이 문제에 대한 해결 방법입니다. – kptkev

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; 
+0

내가 이것을 사용했을 때 어떤 이유로, 연결될 수 있지만 연결이 제한되어있는 문제에 부딪혔다. 내가 원하지 않는 테스트를 계속한다. ( – kptkev

+0

@Felix WI-FI에 연결된 안드로이드 장치 그 시간은 내가 데이터베이스를 업데이 트하는 API를 호출하고 싶어 –