DefaultHttpClient 및 HttpGet을 사용하여 서버의 데이터를 폴링합니다. 이제 사용자가 Wi-Fi 네트워크에 있었고 방 밖으로 나왔습니다. 따라서 휴대 전화는 자동으로 3G 네트워크를 사용하기 시작합니다. 그러한 변경에 대한 콜백이 있으며 그러한 변경을 어떻게 처리해야합니까? 다시 폴링을 시작해야하거나 OS 적절안드로이드, 데이터 폴링 중 GPRS에서 Wi-Fi (또는 그 반대로) 변경을 처리하는 방법
6
A
답변
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 주소가 있어야합니다. 그건 내 대답입니다.
모바일 장치의 클라이언트가 IP 주소를 변경할 가능성이 높습니다. 이것은 2011 년 3 월부터 OP의 질문에 대답하지 않습니다. –