From 18dd857d6d2c8a80712f9d4a85c9ac3f9d9324dd Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Sun, 26 Jan 2014 20:26:17 +1300 Subject: [PATCH] Handle network connection status --- .../org/traccar/client/ClientController.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/traccar-client/src/main/java/org/traccar/client/ClientController.java b/traccar-client/src/main/java/org/traccar/client/ClientController.java index f6cba03..2aa6114 100644 --- a/traccar-client/src/main/java/org/traccar/client/ClientController.java +++ b/traccar-client/src/main/java/org/traccar/client/ClientController.java @@ -18,8 +18,13 @@ package org.traccar.client; import java.util.LinkedList; import java.util.Queue; +import android.content.BroadcastReceiver; import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.net.ConnectivityManager; import android.os.Handler; +import android.util.Log; public class ClientController implements Connection.ConnectionHandler { @@ -45,13 +50,30 @@ public class ClientController implements Connection.ConnectionHandler { this.loginMessage = loginMessage; } + private BroadcastReceiver connectivityListener = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + if (intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false)) { + handler.removeCallbacksAndMessages(null); + } else { + reconnect(); + } + } + }; + public void start() { handler = new Handler(); connection = new Connection(this); connection.connect(address, port); + + IntentFilter filter = new IntentFilter(); + filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); + context.registerReceiver(connectivityListener, filter); } public void stop() { + context.unregisterReceiver(connectivityListener); + connection.close(); handler.removeCallbacksAndMessages(null); }