From 6fda464ed87a39d024003b5ae0f259b62a62c80c Mon Sep 17 00:00:00 2001 From: CiufudeanDani Date: Mon, 2 May 2022 16:17:47 +0300 Subject: [PATCH] handle network swap --- .../safedispatch/TabLayoutActivity.java | 64 ++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/safeDispatch/src/main/java/com/safemobile/safedispatch/TabLayoutActivity.java b/safeDispatch/src/main/java/com/safemobile/safedispatch/TabLayoutActivity.java index 0737249..c646df3 100644 --- a/safeDispatch/src/main/java/com/safemobile/safedispatch/TabLayoutActivity.java +++ b/safeDispatch/src/main/java/com/safemobile/safedispatch/TabLayoutActivity.java @@ -74,6 +74,9 @@ import android.content.res.AssetManager; import android.content.res.Configuration; import android.content.res.Resources; import android.net.ConnectivityManager; +import android.net.Network; +import android.net.NetworkCapabilities; +import android.net.NetworkRequest; import android.net.Uri; import android.os.AsyncTask; import android.os.Build; @@ -571,8 +574,67 @@ public class TabLayoutActivity extends AbstractSDParentActivity { /* Create Service and bind to it */ getApplicationContext().bindService(new Intent(this, TCPService.class), serviceConnection, Context.BIND_AUTO_CREATE); + + + ConnectivityManager connectivityManager = + (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) + connectivityManager.registerDefaultNetworkCallback(networkCallback); + else { + NetworkRequest request = new NetworkRequest.Builder() + .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET).build(); + connectivityManager.registerNetworkCallback(request, networkCallback); + } } + private final ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() { + @Override + public void onAvailable(Network network) { + // network available + Log.v(TAG, "network available"); + Log.v(TAG, "tcp: " + (tcp != null)); +// if (tcp == null) +// getApplicationContext().bindService(new Intent(context, TCPService.class), serviceConnection, Context.BIND_AUTO_CREATE); + +// if (myService != null) +// tcp = myService.getTCPConnection(); + + if (tcp != null) { + if (tcp.isConnectionUP) { + tcp.isConnectionUP = false; + tcp.Stop(); + } +// tcp = null; + + uiHandler.post(() -> { + Log.v(TAG, "myService: " + (myService != null)); + if (myService != null) { + myService.stopTCPConnection(); + myService.recreateTCPConnection(); + + getApplicationContext().bindService(new Intent(context, TCPService.class), serviceConnection, Context.BIND_AUTO_CREATE); + if (getRadioActivity() != null) + getRadioActivity().onCreate(getRadioActivity().savedInstanceState); + if (getMessageActivity() != null) + getMessageActivity().onCreate(getMessageActivity().getSavedInstanceState()); + if (getRecordingsActivity() != null) + getRecordingsActivity().onCreate(getRecordingsActivity().getSavedInstanceState()); + if (getAlarmActivity() != null) + getAlarmActivity().onCreate(getAlarmActivity().getSavedInstanceState()); + + uiHandler.post(initTCPRUN); + } + }); + } + } + + @Override + public void onLost(Network network) { + // network unavailable + Log.v(TAG, "network unavailable"); + } + }; + /** * Broadcast Received for notifications */ @@ -2098,7 +2160,7 @@ public class TabLayoutActivity extends AbstractSDParentActivity { // whenBackPressed(AppParams.ActivityResult.tcpDown); // send a broadcast - notifyBroadcast(OperationCodes.TCP_CONNECTION_DOWN + ""); +// notifyBroadcast(OperationCodes.TCP_CONNECTION_DOWN + ""); } @Override