2013-08-06 5 views
0

저는 Android projet에서 작업 중이며 사용자가 인터넷에 언제 접속할 수 있는지 알아야합니다. 그것은 사용에 있기 때문에 내 응용 프로그램 아래ping없이 Android로 핫스팟 wifi 연결 확인

public static boolean isOnline(final Context context) { 
    boolean result = false; 
    ConnectivityManager connec = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    if (connec.getNetworkInfo(0).isConnectedOrConnecting() || connec.getNetworkInfo(1).isConnectedOrConnecting()) { 
     URL url = new URL("https://www.google.fr"); 
     URLConnection urlConnection; 
     urlConnection = url.openConnection(); 
     HttpURLConnection httpConnection = (HttpURLConnection) urlConnection; 
     int responseCode = httpConnection.getResponseCode(); 
     result = (responseCode == 200); 
    } 
    return result; 
} 

이 방법을 작동하지만 속도가 느려집니다 : (. 와이파이가 활성화뿐만 아니라 경우 사용자가 핫스팟 와이파이 연결을 사용하는 경우, 예를 들어)

을 나는이 방법을 사용 5 초마다 사용자의 연결을 확인하는 타이머 그리고 나는 사용자의 연결 상태를 실시간으로 알아야합니다 ...

다른 사람이 인터넷 연결을 확인하는 방법을 알고 있습니까? 아마 자바 리플렉션과 함께 ...?

+0

아마도이 질문에서 뭔가를 찾을 수 있습니다. http://stackoverflow.com/questions/1560788/how-to-check-internet-access-on-android-inetaddress-never-timeouts –

+0

이 빠른 답변 주셔서 감사합니다. ! :-) 나는 그것을 볼 것이다. – Dish

+0

왜 지구상에 * 5 초마다 네트워크 가용성을 확인해야합니까? 배터리를 아주 빨리 소모 할 것입니다. 데이터를 * 전송해야하는 경우 먼저 별도의 온라인 확인을 사용하지 않고 데이터를 전송하십시오. 데이터 전송 요청 자체는 오프라인 상태 일 때 알려줍니다. – Barend

답변

-1
ConnectivityManager mConnMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 

public boolean hasWifi() { 
    return mConnMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI) != null 
      && mConnMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting(); 
} 

이게 원하는가요?

+0

장치가 작동하지 않으면이 방법이 작동하지 않습니다 핫스팟 Wifi에 연결됩니다. 효과적으로 Wifi에 연결되어 있지만, 예를 들어 Google 웹 사이트에서 요청을 시작하려고하면 핫스팟의 포털로 리디렉션됩니다. – Dish

관련 문제