diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f3d359..75f7beb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ OpenSeizureDetector Android App - Change Log ============================================ + V3.1.14 - 27feb2020 + - Fixed the web interface, which stopped working in V3.1.13 + - Separated the user interface text into separate strings.xml file so we can + have multi-lingual versions of the app (if people offer to do the translations + for me, because I can't do it myself!) + - Note that I think Google has forced me to drop support for Android 4.x in a recent + update - I could only get it to compoile if I increased the minimum android version + to Android 5.0. This is a shame because I am one of the 3 Android 4 users.... V3.1.13 - 16feb2020 - Fixed problem with NetworkDataSource not responding to FAULT conditions properly. diff --git a/app/build.gradle b/app/build.gradle index 46e8d09..24758a2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,7 +6,7 @@ android { defaultConfig { applicationId "uk.org.openseizuredetector" - minSdkVersion 14 + minSdkVersion 21 targetSdkVersion 28 multiDexEnabled true } @@ -52,4 +52,5 @@ dependencies { repositories { mavenCentral() maven { url "https://oss.sonatype.org/content/groups/public/" } -} \ No newline at end of file +} + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 401044d..4641111 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,8 +1,8 @@ diff --git a/app/src/main/assets/www/js/osd_main.js b/app/src/main/assets/www/js/osd_main.js index 815b209..1556d67 100644 --- a/app/src/main/assets/www/js/osd_main.js +++ b/app/src/main/assets/www/js/osd_main.js @@ -4,8 +4,8 @@ function get_settings() { }; -function populate_settings(dataStr) { - var dataObj = JSON.parse(dataStr); +function populate_settings(dataObj) { + //var dataObj = JSON.parse(dataStr); //alert (dataStr); var alarmFreqMin = dataObj['alarmFreqMin']; var alarmFreqMax = dataObj['alarmFreqMax']; @@ -40,8 +40,8 @@ function get_data() { $.ajax({url:"/data",success:process_data}); }; -function process_data(dataStr) { - var dataObj = JSON.parse(dataStr); +function process_data(dataObj) { + //var dataObj = JSON.parse(dataStr); //alert (dataStr); var timeStr = dataObj['Time']; var maxFreq = dataObj['maxFreq']; @@ -109,8 +109,8 @@ function get_spectrum() { $.ajax({url:"/spectrum",success:process_spectrum}); }; -function process_spectrum(dataStr) { - var dataObj = JSON.parse(dataStr); +function process_spectrum(dataObj) { + //var dataObj = JSON.parse(dataStr); var chartData = { labels:["1","2","3","4","5","6","7","8","9","10"], diff --git a/app/src/main/java/uk/org/openseizuredetector/MainActivity.java b/app/src/main/java/uk/org/openseizuredetector/MainActivity.java index c74edd2..547d712 100644 --- a/app/src/main/java/uk/org/openseizuredetector/MainActivity.java +++ b/app/src/main/java/uk/org/openseizuredetector/MainActivity.java @@ -289,7 +289,7 @@ public class MainActivity extends AppCompatActivity { TextView tv; tv = (TextView) findViewById(R.id.versionTv); String versionName = mUtil.getAppVersionName(); - tv.setText("OpenSeizureDetector Android App Version " + versionName); + tv.setText(getString(R.string.AppTitleText) + versionName); if (mUtil.isServerRunning()) { mUtil.writeToSysLogFile("MainActivity.onStart - Binding to Server"); @@ -370,18 +370,18 @@ public class MainActivity extends AppCompatActivity { if (mUtil.isServerRunning()) { tv = (TextView) findViewById(R.id.serverStatusTv); if (mConnection.mBound) - tv.setText("Server Running OK\n" + mConnection.mSdServer.mSdDataSourceName + " Data Source"); + tv.setText(getString(R.string.ServerRunningOK) + mConnection.mSdServer.mSdDataSourceName + " " +getString(R.string.DataSource)); tv.setBackgroundColor(okColour); tv.setTextColor(okTextColour); tv = (TextView) findViewById(R.id.serverIpTv); - tv.setText("Access Server at http://" + tv.setText(getString(R.string.AccessServerAt)+" http://" + mUtil.getLocalIpAddress() + ":8080"); tv.setBackgroundColor(okColour); tv.setTextColor(okTextColour); } else { tv = (TextView) findViewById(R.id.serverStatusTv); - tv.setText("Server Stopped"); + tv.setText(R.string.ServerStopped); tv.setBackgroundColor(warnColour); tv.setTextColor(warnTextColour); tv = (TextView) findViewById(R.id.serverIpTv); @@ -397,29 +397,29 @@ public class MainActivity extends AppCompatActivity { if ((mConnection.mSdServer.mSdData.alarmState == 0) && !mConnection.mSdServer.mSdData.alarmStanding && !mConnection.mSdServer.mSdData.fallAlarmStanding) { - tv.setText("OK"); + tv.setText(getString(R.string.okBtnTxt)); tv.setBackgroundColor(okColour); tv.setTextColor(okTextColour); } if ((mConnection.mSdServer.mSdData.alarmState == 1) && !mConnection.mSdServer.mSdData.alarmStanding && !mConnection.mSdServer.mSdData.fallAlarmStanding) { - tv.setText("WARNING"); + tv.setText(R.string.Warning); tv.setBackgroundColor(warnColour); tv.setTextColor(warnTextColour); } if (mConnection.mSdServer.mSdData.alarmState == 6) { - tv.setText("MUTE"); + tv.setText(R.string.Mute); tv.setBackgroundColor(warnColour); tv.setTextColor(warnTextColour); } if (mConnection.mSdServer.mSdData.alarmStanding) { - tv.setText("**ALARM**"); + tv.setText(R.string.Alarm); tv.setBackgroundColor(alarmColour); tv.setTextColor(alarmTextColour); } if (mConnection.mSdServer.mSdData.fallAlarmStanding) { - tv.setText("**FALL**"); + tv.setText(R.string.Fall); tv.setBackgroundColor(alarmColour); tv.setTextColor(alarmTextColour); } @@ -432,7 +432,7 @@ public class MainActivity extends AppCompatActivity { // Pebble Connected Phrase - use for HR if active instead. tv = (TextView) findViewById(R.id.pebbleTv); if (mConnection.mSdServer.mSdData.mHRAlarmActive) { - tv.setText("HR = " + mConnection.mSdServer.mSdData.mHR); + tv.setText(getString(R.string.HR_Equals) + mConnection.mSdServer.mSdData.mHR); if (mConnection.mSdServer.mSdData.mHRAlarmStanding) { tv.setBackgroundColor(alarmColour); tv.setTextColor(alarmTextColour); @@ -445,28 +445,28 @@ public class MainActivity extends AppCompatActivity { } } else { if (mConnection.mSdServer.mSdData.watchConnected) { - tv.setText("HR Alarm OFF"); + tv.setText(R.string.HRAlarmOff); tv.setBackgroundColor(okColour); tv.setTextColor(okTextColour); } else { - tv.setText("Watch NOT Connected"); + tv.setText(getString(R.string.WatchNotConnected)); tv.setBackgroundColor(warnColour); tv.setTextColor(warnTextColour); } } tv = (TextView) findViewById(R.id.appTv); if (mConnection.mSdServer.mSdData.watchAppRunning) { - tv.setText("Watch App OK"); + tv.setText(R.string.WatchAppOK); tv.setBackgroundColor(okColour); tv.setTextColor(okTextColour); } else { - tv.setText("Watch App NOT Running"); + tv.setText(R.string.WatchAppNotRunning); tv.setBackgroundColor(warnColour); tv.setTextColor(warnTextColour); } tv = (TextView) findViewById(R.id.battTv); - tv.setText("Watch Battery = " + String.valueOf(mConnection.mSdServer.mSdData.batteryPc) + "%"); + tv.setText(getString(R.string.WatchBatteryEquals) + String.valueOf(mConnection.mSdServer.mSdData.batteryPc) + "%"); if (mConnection.mSdServer.mSdData.batteryPc <= 10) { tv.setBackgroundColor(alarmColour); tv.setTextColor(alarmTextColour); @@ -503,10 +503,10 @@ public class MainActivity extends AppCompatActivity { } else specRatio = 0; - ((TextView) findViewById(R.id.powerTv)).setText("Power = " + mConnection.mSdServer.mSdData.roiPower + - " (threshold = " + mConnection.mSdServer.mSdData.alarmThresh + ")"); - ((TextView) findViewById(R.id.spectrumTv)).setText("Spectrum Ratio = " + specRatio + - " (threshold = " + mConnection.mSdServer.mSdData.alarmRatioThresh + ")"); + ((TextView) findViewById(R.id.powerTv)).setText(getString(R.string.PowerEquals) + mConnection.mSdServer.mSdData.roiPower + + getString(R.string.ThresholdEquals) + mConnection.mSdServer.mSdData.alarmThresh + ")"); + ((TextView) findViewById(R.id.spectrumTv)).setText(getString(R.string.SpectrumRatioEquals) + specRatio + + getString(R.string.ThresholdEquals) + mConnection.mSdServer.mSdData.alarmRatioThresh + ")"); ProgressBar pb; Drawable pbDrawable; @@ -541,12 +541,12 @@ public class MainActivity extends AppCompatActivity { (mConnection.mSdServer.mSdData.alarmState == 7)) { tv = (TextView) findViewById(R.id.alarmTv); if (mConnection.mSdServer.mSdData.alarmState == 4) { - tv.setText("FAULT"); + tv.setText(R.string.Fault); tv.setBackgroundColor(warnColour); tv.setTextColor(warnTextColour); } if (mConnection.mSdServer.mSdData.alarmState == 7) { - tv.setText("NET FAULT"); + tv.setText(R.string.NetFault); tv.setBackgroundColor(warnColour); tv.setTextColor(warnTextColour); } @@ -561,24 +561,24 @@ public class MainActivity extends AppCompatActivity { tv.setTextColor(warnTextColour); tv = (TextView) findViewById(R.id.pebbleTv); - tv.setText("HR = ---"); + tv.setText(getString(R.string.HR_Equals)+"---"); tv.setBackgroundColor(warnColour); tv.setTextColor(warnTextColour); tv = (TextView) findViewById(R.id.appTv); - tv.setText("Watch App -----"); + tv.setText(R.string.WatchApp+" ----"); tv.setBackgroundColor(warnColour); tv.setTextColor(warnTextColour); tv = (TextView) findViewById(R.id.battTv); - tv.setText("Watch Battery = ---%"); + tv.setText(getString(R.string.WatchBatteryEquals)+" ---%"); tv.setBackgroundColor(warnColour); tv.setTextColor(warnTextColour); } } else { // Not bound to server tv = (TextView) findViewById(R.id.alarmTv); - tv.setText("------"); + tv.setText(R.string.Dashes); tv.setBackgroundColor(warnColour); tv.setTextColor(warnTextColour); tv = (TextView) findViewById(R.id.pebTimeTv); @@ -592,17 +592,17 @@ public class MainActivity extends AppCompatActivity { tv.setTextColor(warnTextColour); tv = (TextView) findViewById(R.id.pebbleTv); - tv.setText("HR = ---"); + tv.setText(getString(R.string.HR_Equals)+"---"); tv.setBackgroundColor(warnColour); tv.setTextColor(warnTextColour); tv = (TextView) findViewById(R.id.appTv); - tv.setText("Watch App -----"); + tv.setText(getString(R.string.WatchApp)+" -----"); tv.setBackgroundColor(warnColour); tv.setTextColor(warnTextColour); tv = (TextView) findViewById(R.id.battTv); - tv.setText("Watch Battery = ---%"); + tv.setText(getString(R.string.WatchBatteryEquals)+" ---%"); tv.setBackgroundColor(warnColour); tv.setTextColor(warnTextColour); } @@ -617,13 +617,13 @@ public class MainActivity extends AppCompatActivity { if (mConnection.mBound) { if ((mConnection.mSdServer.mSmsTimer != null) && (mConnection.mSdServer.mSmsTimer.mTimeLeft > 0)) { - acceptAlarmButton.setText("SMS Will Be Sent in " + + acceptAlarmButton.setText(getString(R.string.SMSWillBeSentIn) + mConnection.mSdServer.mSmsTimer.mTimeLeft / 1000 + - " s - CANCEL?"); + " s - "+getString(R.string.Cancel)); acceptAlarmButton.setBackgroundColor(alarmColour); acceptAlarmButton.setEnabled(true); } else { - acceptAlarmButton.setText("Accept Alarm"); + acceptAlarmButton.setText(R.string.AcceptAlarm); acceptAlarmButton.setBackgroundColor(Color.DKGRAY); if (mConnection.mBound) if ((mConnection.mSdServer.isLatchAlarms()) @@ -634,7 +634,7 @@ public class MainActivity extends AppCompatActivity { } } } else { - acceptAlarmButton.setText("Accept Alarm"); + acceptAlarmButton.setText(getString(R.string.AcceptAlarm)); acceptAlarmButton.setBackgroundColor(Color.DKGRAY); acceptAlarmButton.setEnabled(false); } @@ -644,17 +644,16 @@ public class MainActivity extends AppCompatActivity { (Button) findViewById(R.id.cancelAudibleButton); if (mConnection.mBound) if (mConnection.mSdServer.isAudibleCancelled()) { - cancelAudibleButton.setText("Audible Alarms Cancelled " - + "for " + cancelAudibleButton.setText(getString(R.string.AudibleAlarmsCancelledFor) + mConnection.mSdServer. cancelAudibleTimeRemaining() + " sec." - + " Press to re-enable"); + + getString(R.string.PressToReEnable)); } else { if (mConnection.mSdServer.mAudibleAlarm) { - cancelAudibleButton.setText("Cancel Audible Alarms (temporarily)"); + cancelAudibleButton.setText(R.string.CancelAudibleAlarms); } else { - cancelAudibleButton.setText("Audible Alarms OFF"); + cancelAudibleButton.setText(R.string.AudibleAlarmsOff); } } diff --git a/app/src/main/java/uk/org/openseizuredetector/StartupActivity.java b/app/src/main/java/uk/org/openseizuredetector/StartupActivity.java index 3862231..decc4ce 100644 --- a/app/src/main/java/uk/org/openseizuredetector/StartupActivity.java +++ b/app/src/main/java/uk/org/openseizuredetector/StartupActivity.java @@ -170,7 +170,7 @@ public class StartupActivity extends Activity { ; String dataSourceName = SP.getString("DataSource", "Pebble"); tv = (TextView) findViewById(R.id.dataSourceTextView); - tv.setText("DataSource = " + dataSourceName); + tv.setText(String.format("%s = %s", getString(R.string.DataSource), dataSourceName)); if (mUtil.isServerRunning()) { @@ -236,21 +236,21 @@ public class StartupActivity extends Activity { pb = (ProgressBar) findViewById(R.id.progressBar1); if (mUtil.arePermissionsOK()) { if (smsAlarmsActive && !mUtil.areSMSPermissionsOK()) { - tv.setText("Problem with SMS Permissions"); + tv.setText(getString(R.string.SmsPermissionWarning)); tv.setBackgroundColor(okColour); tv.setTextColor(okTextColour); pb.setIndeterminateDrawable(getResources().getDrawable(R.drawable.start_server)); pb.setProgressDrawable(getResources().getDrawable(R.drawable.start_server)); mUtil.requestSMSPermissions(StartupActivity.this); } else { - tv.setText("App Permissions OK"); + tv.setText(getString(R.string.AppPermissionsOk)); tv.setBackgroundColor(okColour); tv.setTextColor(okTextColour); pb.setIndeterminateDrawable(getResources().getDrawable(R.drawable.start_server)); pb.setProgressDrawable(getResources().getDrawable(R.drawable.start_server)); } } else { - tv.setText("Problem with App Permissions"); + tv.setText(getString(R.string.AppPermissionsWarning)); tv.setBackgroundColor(alarmColour); tv.setTextColor(alarmTextColour); pb.setIndeterminate(true); @@ -262,13 +262,13 @@ public class StartupActivity extends Activity { tv = (TextView) findViewById(R.id.textItem2); pb = (ProgressBar) findViewById(R.id.progressBar2); if (mConnection.mBound) { - tv.setText("Bound to Service OK"); + tv.setText(getString(R.string.BoundToServiceOk)); tv.setBackgroundColor(okColour); tv.setTextColor(okTextColour); pb.setIndeterminateDrawable(getResources().getDrawable(R.drawable.start_server)); pb.setProgressDrawable(getResources().getDrawable(R.drawable.start_server)); } else { - tv.setText("Binding to Background Service..."); + tv.setText(getString(R.string.BindingToService)); tv.setBackgroundColor(alarmColour); tv.setTextColor(alarmTextColour); pb.setIndeterminate(true); @@ -279,13 +279,13 @@ public class StartupActivity extends Activity { tv = (TextView) findViewById(R.id.textItem3); pb = (ProgressBar) findViewById(R.id.progressBar3); if (mConnection.watchConnected()) { - tv.setText("Watch Connected OK"); + tv.setText(getString(R.string.WatchConnectedOk)); tv.setBackgroundColor(okColour); tv.setTextColor(okTextColour); pb.setIndeterminateDrawable(getResources().getDrawable(R.drawable.start_server)); pb.setProgressDrawable(getResources().getDrawable(R.drawable.start_server)); } else { - tv.setText("Watch Not Connected"); + tv.setText(getString(R.string.WatchNotConnected)); tv.setBackgroundColor(alarmColour); tv.setTextColor(alarmTextColour); pb.setIndeterminate(true); @@ -298,13 +298,13 @@ public class StartupActivity extends Activity { tv = (TextView) findViewById(R.id.textItem5); pb = (ProgressBar) findViewById(R.id.progressBar5); if (mConnection.hasSdData()) { - tv.setText("Seizure Detector Data Received OK"); + tv.setText(getString(R.string.SeizureDetectorDataReceived)); tv.setBackgroundColor(okColour); tv.setTextColor(okTextColour); pb.setIndeterminateDrawable(getResources().getDrawable(R.drawable.start_server)); pb.setProgressDrawable(getResources().getDrawable(R.drawable.start_server)); } else { - tv.setText("Waiting for Seizure Detector Data..."); + tv.setText(getString(R.string.WaitingForSeizureDetectorData)); tv.setBackgroundColor(alarmColour); tv.setTextColor(alarmTextColour); pb.setIndeterminate(true); @@ -316,13 +316,13 @@ public class StartupActivity extends Activity { tv = (TextView) findViewById(R.id.textItem6); pb = (ProgressBar) findViewById(R.id.progressBar6); if (mConnection.hasSdSettings()) { - tv.setText("Seizure Detector Settings Received OK"); + tv.setText(getString(R.string.SeizureDetectorSettingsReceived)); tv.setBackgroundColor(okColour); tv.setTextColor(okTextColour); pb.setIndeterminateDrawable(getResources().getDrawable(R.drawable.start_server)); pb.setProgressDrawable(getResources().getDrawable(R.drawable.start_server)); } else { - tv.setText("Waiting for Seizure Detector Settings..."); + tv.setText(getString(R.string.WaitingForSeizureDetectorSettings)); tv.setBackgroundColor(alarmColour); tv.setTextColor(alarmTextColour); pb.setIndeterminate(true); @@ -402,24 +402,15 @@ public class StartupActivity extends Activity { AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder( this); final SpannableString s = new SpannableString( - "OpenSeizureDetector does not collect any personal data. " - + "This does mean that it is not possible for me to contact users if I find an " - + "issue with the app that you should be aware of. \nPlease subscribe to updates at " - + "http://openseizuredetector.org.uk, or the app Facebook page at https://www.facebook.com/openseizuredetector. " - + "so I can get in touch if necessary.\nThank you! Graham \ngraham@openseizuredetector.org.uk " - + "\n\nChanges in this version:" - + "\n V3.1.13 - Fixed ERR-400 display on garmin watch and associated problem with network datasource fault alerting." - + "\n V3.1.11 - Fixed issue that Nework data source did not display heart rate data" - + "\n V3.1.10 - Provided a user option to treat a null heart rate as a fault or an alarm condition" - + "\n V3.1.9 - Fixed issue with Garmin Seizure Detector not producing warnings. Added fault pips for missing heart rate data if heart rate alarm active" + getString(R.string.FirstRunDlgMsg) ); // This makes the links display as links, but they do not respond to clicks for some reason... Linkify.addLinks(s, Linkify.ALL); alertDialogBuilder - .setTitle("Welcome to OpenSeizureDetector") + .setTitle(getString(R.string.FirstRunDlgTitle)) .setMessage(s) .setCancelable(false) - .setPositiveButton("OK", new DialogInterface.OnClickListener() { + .setPositiveButton(getString(R.string.okBtnTxt), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); mDialogDisplayed = false; @@ -435,25 +426,15 @@ public class StartupActivity extends Activity { AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder( this); final SpannableString s = new SpannableString( - "OpenSeizureDetector does not collect any personal data. " - + "This does mean that it is not possible for me to contact users if I find an " - + "issue with the app that you should be aware of. \nPlease subscribe to updates at " - + "http://openseizuredetector.org.uk, or the app Facebook page at https://www.facebook.com/openseizuredetector. " - + "so I can get in touch if necessary.\nThank you! Graham \ngraham@openseizuredetector.org.uk " - + "\n\nChanges in this version:" - + "\n V3.1.13 - Fixed ERR-400 display on garmin watch and associated problem with network datasource fault alerting." - + "\n V3.1.11 - Fixed issue that Nework data source did not display heart rate data" - + "\n V3.1.10 - Provided a user option to treat a null heart rate as a fault or an alarm condition" - + "\n V3.1.9 - Fixed issue with Garmin Seizure Detector not producing warnings. Added fault pips for missing heart rate data if heart rate alarm active" - + "\n " + getString(R.string.UpgradeMsg) ); // This makes the links display as links, but they do not respond to clicks for some reason... Linkify.addLinks(s, Linkify.ALL); alertDialogBuilder - .setTitle("Thank you for Updating OpenSeizureDetector") + .setTitle(getString(R.string.UpdateDialogTitleTxt)) .setMessage(s) .setCancelable(false) - .setPositiveButton("OK", new DialogInterface.OnClickListener() { + .setPositiveButton(getString(R.string.okBtnTxt), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); mDialogDisplayed = false; diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5809b38..e414004 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4,4 +4,71 @@ Sorry, OpenSeizureDetector Has Crashed. Please Email this log file to us so we can work out what happened and fix it.\nThanks, Graham. Dear OpenSeizureDetector,\n\nApplication is just crashed, please check following error log for more details.\n\n\n OpenSeizureDetector (Using UCE Handler\nCopyright © 2018 Rohit Sahebrao Surwase.) + + OpenSeizureDetector does not collect any personal data. + This does mean that it is not possible for me to contact users if I find an + issue with the app that you should be aware of. \nPlease subscribe to updates at + http://openseizuredetector.org.uk, or the app Facebook page at https://www.facebook.com/openseizuredetector. + so I can get in touch if necessary.\nThank you! Graham \ngraham@openseizuredetector.org.uk + \n\nChanges in this version: + \n V3.1.13 - Fixed ERR-400 display on garmin watch and associated problem with network datasource fault alerting. + \n V3.1.11 - Fixed issue that Nework data source did not display heart rate data + \n V3.1.10 - Provided a user option to treat a null heart rate as a fault or an alarm condition + \n V3.1.9 - Fixed issue with Garmin Seizure Detector not producing warnings. Added fault pips for missing heart rate data if heart rate alarm active + \n + + OK + Thank you for Updating OpenSeizureDetector + Welcome to OpenSeizureDetector + + OpenSeizureDetector does not collect any personal data. + This does mean that it is not possible for me to contact users if I find an + issue with the app that you should be aware of. \nPlease subscribe to updates at + http://openseizuredetector.org.uk, or the app Facebook page at https://www.facebook.com/openseizuredetector. + so I can get in touch if necessary.\nThank you! Graham \ngraham@openseizuredetector.org.uk + \n\nChanges in this version: + \n V3.1.13 - Fixed ERR-400 display on garmin watch and associated problem with network datasource fault alerting. + \n V3.1.11 - Fixed issue that Nework data source did not display heart rate data + \n V3.1.10 - Provided a user option to treat a null heart rate as a fault or an alarm condition + \n V3.1.9 - Fixed issue with Garmin Seizure Detector not producing warnings. Added fault pips for missing heart rate data if heart rate alarm active + + Problem with SMS Permissions + App Permissions OK + Problem with App Permissions + Bound to Service OK + Binding to Background Service... + Watch Connected OK + Watch Not Connected + Seizure Detector Data Received OK + Waiting for Seizure Detector Data... + Seizure Detector Settings Received OK + Waiting for Seizure Detector Settings... + DataSource + OpenSeizureDetector Android App Version + Server Running OK\n + Access Server at + Server Stopped + WARNING + MUTE + **ALARM** + **FALL** + \"HR = \" + HR Alarm OFF + Watch App OK + Watch App NOT Running + Watch Battery = + \"Power = \" + Spectrum Ratio = + (threshold = + NET FAULT + Watch App ----- + ------ + SMS Will Be Sent in + CANCEL? + Accept Alarm + Audible Alarms Cancelled for + Press to re-enable + Cancel Audible Alarms (temporarily) + Audible Alarms OFF + FAULT diff --git a/build.gradle b/build.gradle index 11ffe44..c09d3bd 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.5.1' + classpath 'com.android.tools.build:gradle:3.6.0' } } allprojects { @@ -27,3 +27,9 @@ allprojects { dependencies { } +if (hasProperty('buildScan')) { + buildScan { + termsOfServiceUrl = 'https://gradle.com/terms-of-service' + termsOfServiceAgree = 'yes' + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..3544b85 --- /dev/null +++ b/gradle.properties @@ -0,0 +1 @@ +android.useAndroidX = true \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index d63a266..d686325 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Oct 23 19:45:23 BST 2019 +#Mon Feb 24 20:46:57 GMT 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip