2011-03-02 5 views
6

DefaultHttpClientHttpGet을 사용하여 서버의 데이터를 폴링합니다. 이제 사용자가 Wi-Fi 네트워크에 있었고 방 밖으로 나왔습니다. 따라서 휴대 전화는 자동으로 3G 네트워크를 사용하기 시작합니다. 그러한 변경에 대한 콜백이 있으며 그러한 변경을 어떻게 처리해야합니까? 다시 폴링을 시작해야하거나 OS 적절안드로이드, 데이터 폴링 중 GPRS에서 Wi-Fi (또는 그 반대로) 변경을 처리하는 방법

답변

16

당신은 매니페스트에 리시버를 설정할 수 있습니다 변경을 알아서 않습니다

public class NetworkChangeReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(final Context context, final Intent intent) { 
    final ConnectivityManager connMgr = (ConnectivityManager) 
    context.getSystemService(Context.CONNECTIVITY_SERVICE); 

    final android.net.NetworkInfo wifi = 
    connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

    final android.net.NetworkInfo mobile = 
    connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 

    if (wifi.isAvailable()) { 
     //Do something 
    if (mobile.isAvailable()) { 
     //Do something else 
    } 
    } 
} 
이 같은으로 Receiver

<receiver 
    android:name=".NetworkChangeReceiver" 
    android:label="NetworkChangeReceiver"> 
    <intent-filter> 
    <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
    <action android:name="android.net.wifi.WIFI_STATE_CHANGED" /> 
    </intent-filter> 
</receiver> 

및 구현

지속적인 연결을 유지하면 연결이 끊어 지므로 다시 연결해야합니다.

서비스를 예약했지만 연결을 지속적으로 유지하지 않으면 문제가 발생하지 않습니다.

-3

당신이해야 할 일은 아무것도 없지만 서버의 IP 주소가 무작위로 정렬되지 않도록해야합니다. 즉, 고정 IP 주소가 있어야합니다. 그건 내 대답입니다.

+1

모바일 장치의 클라이언트가 IP 주소를 변경할 가능성이 높습니다. 이것은 2011 년 3 월부터 OP의 질문에 대답하지 않습니다. –