Added error checking for network connection issues - MainActivity logic needs correcting though - Airoplane mode shows as ok

This commit is contained in:
Graham Jones
2022-02-02 22:17:43 +00:00
parent c12a8097c6
commit d911d89e34
4 changed files with 88 additions and 14 deletions

View File

@@ -577,20 +577,38 @@ public class MainActivity extends AppCompatActivity {
if (!mConnection.mSdServer.mLogDataRemoteMobile) { if (!mConnection.mSdServer.mLogDataRemoteMobile) {
Log.v(TAG,"mLogDataRemoteMobile="+mConnection.mSdServer.mLogDataRemoteMobile); Log.v(TAG,"mLogDataRemoteMobile="+mConnection.mSdServer.mLogDataRemoteMobile);
Log.v(TAG,"mUtil.isMobileDataActive="+mUtil.isMobileDataActive()); Log.v(TAG,"mUtil.isMobileDataActive="+mUtil.isMobileDataActive());
if (mUtil.isMobileDataActive()) { if (mUtil.isNetworkConnected()) {
tv = (TextView) findViewById(R.id.remoteDbTv); if (mUtil.isMobileDataActive()) {
tv.setText(getString(R.string.data_sharing_status) tv = (TextView) findViewById(R.id.remoteDbTv);
+ ": " tv.setText(getString(R.string.data_sharing_status)
+ getString(R.string.not_updating_mobile)); + ": "
tv.setBackgroundColor(warnColour); + getString(R.string.not_updating_mobile));
tv.setTextColor(warnTextColour); tv.setBackgroundColor(warnColour);
tv.setTextColor(warnTextColour);
} else {
if (mConnection.mSdServer.mLm.mWac.mServerConnectionOk) {
tv = (TextView) findViewById(R.id.remoteDbTv);
tv.setText(getString(R.string.data_sharing_status)
+ ": "
+ getString(R.string.data_sharing_setup_ok));
tv.setBackgroundColor(okColour);
tv.setTextColor(okTextColour);
} else {
tv = (TextView) findViewById(R.id.remoteDbTv);
tv.setText(getString(R.string.data_sharing_status)
+ ": "
+ getString(R.string.error_connecting_to_server));
tv.setBackgroundColor(warnColour);
tv.setTextColor(warnTextColour);
}
}
} else { } else {
tv = (TextView) findViewById(R.id.remoteDbTv); tv = (TextView) findViewById(R.id.remoteDbTv);
tv.setText(getString(R.string.data_sharing_status) tv.setText(getString(R.string.data_sharing_status)
+ ": " + ": "
+ getString(R.string.data_sharing_setup_ok)); + getString(R.string.not_updating_no_network));
tv.setBackgroundColor(okColour); tv.setBackgroundColor(warnColour);
tv.setTextColor(okTextColour); tv.setTextColor(warnTextColour);
} }
} else { } else {
tv = (TextView) findViewById(R.id.remoteDbTv); tv = (TextView) findViewById(R.id.remoteDbTv);

View File

@@ -302,6 +302,7 @@ public class OsdUtil implements ActivityCompat.OnRequestPermissionsResultCallbac
// return true if we are using mobile data, otherwise return false // return true if we are using mobile data, otherwise return false
ConnectivityManager cm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE); ConnectivityManager cm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork == null) return false;
if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) { if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {
return true; return true;
} else { } else {
@@ -313,7 +314,11 @@ public class OsdUtil implements ActivityCompat.OnRequestPermissionsResultCallbac
// return true if we have a network connection, otherwise false. // return true if we have a network connection, otherwise false.
ConnectivityManager cm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE); ConnectivityManager cm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
return (activeNetwork.isConnected()); if (activeNetwork != null) {
return (activeNetwork.isConnected());
} else {
return (false);
}
} }
/** /**

View File

@@ -36,6 +36,7 @@ import java.util.function.Consumer;
public class WebApiConnection { public class WebApiConnection {
public String retVal; public String retVal;
public int retCode; public int retCode;
public boolean mServerConnectionOk = false;
private String mUrlBase = "https://osdApi.ddns.net"; private String mUrlBase = "https://osdApi.ddns.net";
private String TAG = "WebApiConnection"; private String TAG = "WebApiConnection";
private String mAuthToken; private String mAuthToken;
@@ -76,6 +77,7 @@ public class WebApiConnection {
try { try {
JSONObject jo = new JSONObject(response); JSONObject jo = new JSONObject(response);
tokenStr = jo.getString("token"); tokenStr = jo.getString("token");
mServerConnectionOk = true;
} catch (JSONException e) { } catch (JSONException e) {
tokenStr = "Error Parsing Rsponse"; tokenStr = "Error Parsing Rsponse";
} }
@@ -92,6 +94,7 @@ public class WebApiConnection {
} else { } else {
Log.e(TAG, "Login Error: Returned null response"); Log.e(TAG, "Login Error: Returned null response");
} }
mServerConnectionOk = false;
setStoredToken(null); setStoredToken(null);
callback.accept(null); callback.accept(null);
} }
@@ -167,12 +170,14 @@ public class WebApiConnection {
@Override @Override
public void onResponse(String response) { public void onResponse(String response) {
Log.v(TAG, "Response is: " + response); Log.v(TAG, "Response is: " + response);
mServerConnectionOk = true;
callback.accept(response); callback.accept(response);
} }
}, },
new Response.ErrorListener() { new Response.ErrorListener() {
@Override @Override
public void onErrorResponse(VolleyError error) { public void onErrorResponse(VolleyError error) {
mServerConnectionOk = false;
if (error != null) { if (error != null) {
String responseBody = new String(error.networkResponse.data); String responseBody = new String(error.networkResponse.data);
Log.e(TAG, "Create Event Error: " + error.toString() + ", message:" + error.getMessage() + ", Response Code:" + error.networkResponse.statusCode + ", Response: " + responseBody); Log.e(TAG, "Create Event Error: " + error.toString() + ", message:" + error.getMessage() + ", Response Code:" + error.networkResponse.statusCode + ", Response: " + responseBody);
@@ -242,6 +247,7 @@ public class WebApiConnection {
Log.e(TAG, "getEventTypes.onRespons(): Error: " + e.getMessage() + "," + e.toString()); Log.e(TAG, "getEventTypes.onRespons(): Error: " + e.getMessage() + "," + e.toString());
callback.accept(null); callback.accept(null);
} }
mServerConnectionOk = true;
} }
}, },
new Response.ErrorListener() { new Response.ErrorListener() {
@@ -253,6 +259,7 @@ public class WebApiConnection {
} else { } else {
Log.e(TAG, "Create Event Error: returned null response"); Log.e(TAG, "Create Event Error: returned null response");
} }
mServerConnectionOk = false;
callback.accept(null); callback.accept(null);
} }
}) { }) {
@@ -292,6 +299,7 @@ public class WebApiConnection {
@Override @Override
public void onResponse(String response) { public void onResponse(String response) {
Log.v(TAG, "Response is: " + response); Log.v(TAG, "Response is: " + response);
mServerConnectionOk = true;
try { try {
JSONObject retObj = new JSONObject(); JSONObject retObj = new JSONObject();
JSONArray eventArray = new JSONArray(response); JSONArray eventArray = new JSONArray(response);
@@ -306,10 +314,15 @@ public class WebApiConnection {
new Response.ErrorListener() { new Response.ErrorListener() {
@Override @Override
public void onErrorResponse(VolleyError error) { public void onErrorResponse(VolleyError error) {
//if ((error != null) && (error.networkResponse != null) && (error.networkResponse.data != null)) { //if ((error != null) && (error.networkResponse != null) && (error.networkResponse.data != null)) {#
mServerConnectionOk = false;
if (error != null) { if (error != null) {
String responseBody = new String(error.networkResponse.data); if (error.networkResponse != null) {
Log.e(TAG, "getEvents(): Error: " + error.toString() + ", message:" + error.getMessage() + ", Response Code:" + error.networkResponse.statusCode + ", Response: " + responseBody); String responseBody = new String(error.networkResponse.data);
Log.e(TAG, "getEvents(): Error: " + error.toString() + ", message:" + error.getMessage() + ", Response Code:" + error.networkResponse.statusCode + ", Response: " + responseBody);
} else {
Log.e(TAG, "getEvents(): Error: - request returned null networkResponse");
}
} else{ } else{
Log.e(TAG, "getEvents(): Error: - request returned null response"); Log.e(TAG, "getEvents(): Error: - request returned null response");
} }
@@ -368,6 +381,7 @@ public class WebApiConnection {
@Override @Override
public void onResponse(String response) { public void onResponse(String response) {
Log.v(TAG, "Response is: " + response); Log.v(TAG, "Response is: " + response);
mServerConnectionOk = true;
try { try {
JSONObject retObj = new JSONObject(response); JSONObject retObj = new JSONObject(response);
callback.accept(retObj); callback.accept(retObj);
@@ -380,6 +394,7 @@ public class WebApiConnection {
new Response.ErrorListener() { new Response.ErrorListener() {
@Override @Override
public void onErrorResponse(VolleyError error) { public void onErrorResponse(VolleyError error) {
mServerConnectionOk = false;
if (error != null) { if (error != null) {
String responseBody = new String(error.networkResponse.data); String responseBody = new String(error.networkResponse.data);
Log.e(TAG, "Create Event Error: " + error.toString() + ", message:" + error.getMessage() + ", Response Code:" + error.networkResponse.statusCode + ", Response: " + responseBody); Log.e(TAG, "Create Event Error: " + error.toString() + ", message:" + error.getMessage() + ", Response Code:" + error.networkResponse.statusCode + ", Response: " + responseBody);
@@ -458,12 +473,14 @@ public class WebApiConnection {
@Override @Override
public void onResponse(String response) { public void onResponse(String response) {
Log.v(TAG, "Response is: " + response); Log.v(TAG, "Response is: " + response);
mServerConnectionOk = true;
callback.accept(response); callback.accept(response);
} }
}, },
new Response.ErrorListener() { new Response.ErrorListener() {
@Override @Override
public void onErrorResponse(VolleyError error) { public void onErrorResponse(VolleyError error) {
mServerConnectionOk = false;
if (error != null) { if (error != null) {
// Fixme = are we sure that networResponse.data is not null??? // Fixme = are we sure that networResponse.data is not null???
String responseBody = new String(error.networkResponse.data); String responseBody = new String(error.networkResponse.data);
@@ -534,6 +551,7 @@ public class WebApiConnection {
@Override @Override
public void onResponse(String response) { public void onResponse(String response) {
Log.v(TAG, "getEventTypes.onResponse(): Response is: " + response); Log.v(TAG, "getEventTypes.onResponse(): Response is: " + response);
mServerConnectionOk = true;
try { try {
JSONObject retObj = new JSONObject(response); JSONObject retObj = new JSONObject(response);
callback.accept(retObj); callback.accept(retObj);
@@ -546,6 +564,7 @@ public class WebApiConnection {
new Response.ErrorListener() { new Response.ErrorListener() {
@Override @Override
public void onErrorResponse(VolleyError error) { public void onErrorResponse(VolleyError error) {
mServerConnectionOk = false;
if (error != null) { if (error != null) {
String responseBody = new String(error.networkResponse.data); String responseBody = new String(error.networkResponse.data);
Log.e(TAG, "getEventTypes.onErrorResponse(): " + error.toString() + ", message:" + error.getMessage() + ", Response Code:" + error.networkResponse.statusCode + ", Response: " + responseBody); Log.e(TAG, "getEventTypes.onErrorResponse(): " + error.toString() + ", message:" + error.getMessage() + ", Response Code:" + error.networkResponse.statusCode + ", Response: " + responseBody);
@@ -570,5 +589,35 @@ public class WebApiConnection {
} }
/**
* Retrieve a trivial file from the server to check we have a good server connection.
* sets mServerConnectionOk.
* @return true if request sent successfully or else false.
*/
public boolean checkServerConnection() {
Log.v(TAG, "checkServerConnection()");
String urlStr = mUrlBase + "/static/test.txt";
Log.v(TAG, "urlStr=" + urlStr);
StringRequest req = new StringRequest(Request.Method.GET, urlStr,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.v(TAG, "checkServerConnection.onResponse(): Response is: " + response);
mServerConnectionOk = true;
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.v(TAG, "checkServerConnection.onErrorResponse");
mServerConnectionOk = false;
}
});
mQueue.add(req);
return (true);
}
} }

View File

@@ -339,4 +339,6 @@
<string name="please_confirm_seizure_events">Please Check your Shared Seizure Events</string> <string name="please_confirm_seizure_events">Please Check your Shared Seizure Events</string>
<string name="data_sharing_log_in">Data Sharing Log-In</string> <string name="data_sharing_log_in">Data Sharing Log-In</string>
<string name="not_updating_mobile">Not Updating using Mobile Internet</string> <string name="not_updating_mobile">Not Updating using Mobile Internet</string>
<string name="not_updating_no_network">Not Updating - No Network Connection</string>
<string name="error_connecting_to_server">Error Connecting to Server</string>
</resources> </resources>