diff --git a/CHANGELOG.md b/CHANGELOG.md index 7706268..fe5a9e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ OpenSeizureDetector Android App - Change Log ============================================ + V2.5.5 - 23feb2018 - Improved logging to help diagnose network problems + that result in 'net fault' warnings from network data source + ('wifi-storms'). + V2.5.4 - 03dec2017 - Added option to use either tone generator or MP3 alarm sound, as a user reported problem with tone generator on high end samsung phone. V2.5.3 - 10sep2017 - Added Pebble App V2.6 which provides better alarm reliability diff --git a/app/release/app-release.apk b/app/release/app-release-2.5.5.apk similarity index 60% rename from app/release/app-release.apk rename to app/release/app-release-2.5.5.apk index db89ad3..091e3b0 100644 Binary files a/app/release/app-release.apk and b/app/release/app-release-2.5.5.apk differ diff --git a/app/release/output.json b/app/release/output.json index 875bdfd..6a70039 100644 --- a/app/release/output.json +++ b/app/release/output.json @@ -1 +1 @@ -[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":38},"path":"app-release.apk","properties":{"packageId":"uk.org.openseizuredetector","split":"","minSdkVersion":"14"}}] \ No newline at end of file +[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":39},"path":"app-release.apk","properties":{"packageId":"uk.org.openseizuredetector","split":"","minSdkVersion":"14"}}] \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7e7ee7c..e355c85 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,11 +1,12 @@ + android:versionCode="39" + android:versionName="2.5.5"> + diff --git a/app/src/main/java/uk/org/openseizuredetector/SdDataSourcePebble.java b/app/src/main/java/uk/org/openseizuredetector/SdDataSourcePebble.java index a0b8a09..a84f7f1 100644 --- a/app/src/main/java/uk/org/openseizuredetector/SdDataSourcePebble.java +++ b/app/src/main/java/uk/org/openseizuredetector/SdDataSourcePebble.java @@ -245,7 +245,7 @@ public class SdDataSourcePebble extends SdDataSource { */ public void updatePrefs() { Log.v(TAG, "updatePrefs()"); - mUtil.writeToSysLogFile("SdDataSourcePebble.updatePrefs()"); + //mUtil.writeToSysLogFile("SdDataSourcePebble.updatePrefs()"); SharedPreferences SP = PreferenceManager .getDefaultSharedPreferences(mContext); try { @@ -527,7 +527,7 @@ public class SdDataSourcePebble extends SdDataSource { */ public void getPebbleSdSettings() { Log.v(TAG, "getPebbleSdSettings() - sending required settings to pebble"); - mUtil.writeToSysLogFile("SdDataSourcePebble.getPebbleSdSettings()"); + //mUtil.writeToSysLogFile("SdDataSourcePebble.getPebbleSdSettings()"); sendPebbleSdSettings(); //Log.v(TAG, "getPebbleSdSettings() - requesting settings from pebble"); //mUtil.writeToSysLogFile("SdDataSourcePebble.getPebbleSdSettings() - and request settings from pebble"); @@ -545,7 +545,7 @@ public class SdDataSourcePebble extends SdDataSource { */ public void sendPebbleSdSettings() { Log.v(TAG, "sendPebblSdSettings() - preparing settings dictionary.. mSampleFreq=" + mSampleFreq); - mUtil.writeToSysLogFile("SdDataSourcePebble.sendPebbleSdSettings()"); + //mUtil.writeToSysLogFile("SdDataSourcePebble.sendPebbleSdSettings()"); // Watch Settings final PebbleDictionary setDict = new PebbleDictionary(); diff --git a/app/src/main/java/uk/org/openseizuredetector/SdServer.java b/app/src/main/java/uk/org/openseizuredetector/SdServer.java index cc56ca8..f3d048a 100644 --- a/app/src/main/java/uk/org/openseizuredetector/SdServer.java +++ b/app/src/main/java/uk/org/openseizuredetector/SdServer.java @@ -37,9 +37,11 @@ import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; +import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.content.IntentFilter; import android.content.res.AssetManager; import android.content.SharedPreferences; import android.graphics.drawable.Drawable; @@ -47,6 +49,8 @@ import android.location.Location; import android.media.AudioManager; import android.media.RingtoneManager; import android.media.ToneGenerator; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; import android.net.Uri; import android.os.CountDownTimer; import android.os.Environment; @@ -123,6 +127,8 @@ public class SdServer extends Service implements SdDataReceiver, SdLocationRecei private Handler mHandler; private ToneGenerator mToneGenerator; + private NetworkBroadcastReceiver mNetworkBroadcastReceiver; + private final IBinder mBinder = new SdBinder(); /** @@ -764,7 +770,7 @@ public class SdServer extends Service implements SdDataReceiver, SdLocationRecei // Start timer to remove the cancel audible flag // after the required period. if (mCancelAudibleTimer != null) { - Log.v(TAG, "onCreate(): cancel audible timer already running - cancelling it."); + Log.v(TAG, "cancelAudible(): cancel audible timer already running - cancelling it."); mCancelAudibleTimer.cancel(); mCancelAudibleTimer = null; mCancelAudible = false; @@ -792,7 +798,8 @@ public class SdServer extends Service implements SdDataReceiver, SdLocationRecei /** - * Start the web server (on port 8080) + * Start the web server (on port 8080), and register for network connectivity events so we can log + * problems. */ protected void startWebServer() { Log.v(TAG, "startWebServer()"); @@ -808,10 +815,16 @@ public class SdServer extends Service implements SdDataReceiver, SdLocationRecei } else { Log.v(TAG, "startWebServer(): server already running???"); } + + mNetworkBroadcastReceiver = new NetworkBroadcastReceiver(); + IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); + //filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED); + getApplicationContext().registerReceiver(mNetworkBroadcastReceiver,filter); } /** * Stop the web server - FIXME - doesn't seem to do anything! + * And de-register for network connectivity events. */ protected void stopWebServer() { Log.v(TAG, "SdServer.stopWebServer()"); @@ -824,8 +837,50 @@ public class SdServer extends Service implements SdDataReceiver, SdLocationRecei } webServer = null; } + getApplicationContext().unregisterReceiver(mNetworkBroadcastReceiver); } + private class NetworkBroadcastReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + Log.v(TAG,"NetworkBroadCastReceiver.onReceive"); + mUtil.writeToSysLogFile("Network State Changed" + intent.getAction()); + //mUtil.showToast("Network State Changed" + intent.getAction()); + + ConnectivityManager cm = + (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); + + NetworkInfo activeNetwork = null; + try { + activeNetwork = cm.getActiveNetworkInfo(); + } catch (Exception e) { + Log.v(TAG,"NetworkBroadcastReceiver - failed to retrieve active network info"); + mUtil.writeToSysLogFile("NetworkBroadcastReceiver - failed to retrieve active network info"); + Log.v(TAG,e.toString()); + } + if (activeNetwork != null) { + boolean isConnected = activeNetwork != null && + activeNetwork.isConnectedOrConnecting(); + boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI; + if (!isWiFi) { + Log.v(TAG,"NetworkBroadcastReceiver - no Wifi Connection"); + mUtil.writeToSysLogFile("Network State Changed - no Wifi Connection"); + mUtil.showToast("Network State Changed - no Wifi Connection"); + } else { + Log.v(TAG,"NetworkBroadcastReceiver - Wifi Connected"); + mUtil.writeToSysLogFile("Network State Changed - Wifi Connected"); + mUtil.showToast("Network State Changed - Wifi Connected"); + } + + } else { + Log.v(TAG,"NetworkBroadcastReceiver - No Active Network"); + mUtil.writeToSysLogFile("Network State Changed - No Active Network"); + mUtil.showToast("Network State Changed - No Active Network"); + } + } + } + + /** * Log data to SD card if mLogData is set in preferences. */