diff --git a/app/release/app-release-4.1.0c.apk b/app/release/app-release-4.1.0e.apk similarity index 80% rename from app/release/app-release-4.1.0c.apk rename to app/release/app-release-4.1.0e.apk index 2917c96..5fd5c88 100644 Binary files a/app/release/app-release-4.1.0c.apk and b/app/release/app-release-4.1.0e.apk differ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b57c0e6..dae4947 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,8 +2,8 @@ + android:versionCode="108" + android:versionName="4.1.0e"> diff --git a/app/src/main/assets/best_model_v0.05.tflite b/app/src/main/assets/best_model_v0.05.tflite deleted file mode 100644 index d33b907..0000000 Binary files a/app/src/main/assets/best_model_v0.05.tflite and /dev/null differ diff --git a/app/src/main/assets/best_model_v0.06.tflite b/app/src/main/assets/best_model_v0.06.tflite new file mode 100644 index 0000000..08345a6 Binary files /dev/null and b/app/src/main/assets/best_model_v0.06.tflite differ diff --git a/app/src/main/java/uk/org/openseizuredetector/MainActivity.java b/app/src/main/java/uk/org/openseizuredetector/MainActivity.java index 2a6b7ac..b539e68 100644 --- a/app/src/main/java/uk/org/openseizuredetector/MainActivity.java +++ b/app/src/main/java/uk/org/openseizuredetector/MainActivity.java @@ -30,6 +30,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Color; +import android.graphics.Paint; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; @@ -44,6 +45,7 @@ import android.view.View; import android.view.ViewConfiguration; import android.view.WindowManager; import android.widget.Button; +import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.TextView; @@ -112,6 +114,7 @@ public class MainActivity extends AppCompatActivity { // Initialise the User Interface setContentView(R.layout.main); + //getWindow().getDecorView().setBackgroundColor(okColour); /* Force display of overflow menu - from stackoverflow * "how to force use of..." @@ -425,6 +428,8 @@ public class MainActivity extends AppCompatActivity { tv = (TextView) findViewById(R.id.versionTv); String versionName = mUtil.getAppVersionName(); tv.setText(getString(R.string.AppTitleText) + " " + versionName); + tv.setBackgroundColor(okColour); + tv.setTextColor(okTextColour); if (mUtil.isServerRunning()) { mUtil.writeToSysLogFile("MainActivity.onStart - Binding to Server"); @@ -503,10 +508,15 @@ public class MainActivity extends AppCompatActivity { TextView tv; if (mUtil.isServerRunning()) { + LinearLayout ll = (LinearLayout) findViewById(R.id.statusLayout); + ll.setBackgroundColor(okColour); + ll = (LinearLayout) findViewById(R.id.watchStatusLl); + ll.setBackgroundColor(okColour); + tv = (TextView) findViewById(R.id.serverStatusTv); - if (mConnection.mBound) + if (mConnection.mBound) { if (mConnection.mSdServer.mSdDataSourceName.equals("Phone")) { - tv.setText(getString(R.string.ServerRunningOK) + getString(R.string.DataSource) + " = " + "Phone"+"\n"+"(Demo Mode)"); + tv.setText(getString(R.string.ServerRunningOK) + getString(R.string.DataSource) + " = " + "Phone" + "\n" + "(Demo Mode)"); tv.setBackgroundColor(warnColour); tv.setTextColor(warnTextColour); } else { @@ -514,6 +524,63 @@ public class MainActivity extends AppCompatActivity { tv.setBackgroundColor(okColour); tv.setTextColor(okTextColour); } + tv = (TextView) findViewById(R.id.osdAlgTv); + tv.setText("OSD "); + if (mConnection.mSdServer.mSdData.mOsdAlarmActive) { + tv.setBackgroundColor(okColour); + tv.setTextColor(okTextColour); + tv.setPaintFlags(tv.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG); + } else { + tv.setBackgroundColor(warnColour); + tv.setTextColor(warnTextColour); + tv.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); + } + tv = (TextView) findViewById(R.id.cnnAlgTv); + tv.setText("CNN "); + if (mConnection.mSdServer.mSdData.mCnnAlarmActive) { + tv.setBackgroundColor(okColour); + tv.setTextColor(okTextColour); + tv.setPaintFlags(tv.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG); + } else { + tv.setBackgroundColor(okColour); + tv.setTextColor(okTextColour); + tv.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); + } + tv = (TextView) findViewById(R.id.hrAlgTv); + tv.setText("HR "); + if (mConnection.mSdServer.mSdData.mHRAlarmActive) { + tv.setBackgroundColor(okColour); + tv.setTextColor(okTextColour); + tv.setPaintFlags(tv.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG); + } else { + tv.setBackgroundColor(okColour); + tv.setTextColor(okTextColour); + tv.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); + } + tv = (TextView) findViewById(R.id.o2AlgTv); + tv.setText("O2 "); + if (mConnection.mSdServer.mSdData.mO2SatAlarmActive) { + tv.setBackgroundColor(okColour); + tv.setTextColor(okTextColour); + tv.setPaintFlags(tv.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG); + } else { + tv.setBackgroundColor(okColour); + tv.setTextColor(okTextColour); + tv.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); + } + tv = (TextView) findViewById(R.id.fallAlgTv); + tv.setText("Fall"); + if (mConnection.mSdServer.mSdData.mFallActive) { + tv.setBackgroundColor(okColour); + tv.setTextColor(okTextColour); + tv.setPaintFlags(tv.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG); + } else { + tv.setBackgroundColor(okColour); + tv.setTextColor(okTextColour); + tv.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); + } + + } tv = (TextView) findViewById(R.id.serverIpTv); tv.setText(getString(R.string.AccessServerAt) + " http://" + mUtil.getLocalIpAddress() @@ -572,7 +639,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) { + //if (mConnection.mSdServer.mSdData.mHRAlarmActive) { if (mConnection.mSdServer.mSdData.mO2Sat>0) { tv.setText(getString(R.string.HR_Equals) + mConnection.mSdServer.mSdData.mHR + " bpm\n" + "O2 Sat = " + mConnection.mSdServer.mSdData.mO2Sat + "%"); @@ -590,7 +657,7 @@ public class MainActivity extends AppCompatActivity { tv.setBackgroundColor(okColour); tv.setTextColor(okTextColour); } - } else { + /*} else { if (mConnection.mSdServer.mSdData.watchConnected) { tv.setText(R.string.HRAlarmOff); tv.setBackgroundColor(okColour); @@ -602,6 +669,8 @@ public class MainActivity extends AppCompatActivity { tv.setTextColor(warnTextColour); } } + */ + tv = (TextView) findViewById(R.id.appTv); if (mConnection.mSdServer.mSdData.watchAppRunning) { tv.setText(R.string.WatchAppOK); diff --git a/app/src/main/java/uk/org/openseizuredetector/SdAlgNn.java b/app/src/main/java/uk/org/openseizuredetector/SdAlgNn.java index 33ec934..fecaacc 100644 --- a/app/src/main/java/uk/org/openseizuredetector/SdAlgNn.java +++ b/app/src/main/java/uk/org/openseizuredetector/SdAlgNn.java @@ -25,7 +25,7 @@ import java.util.Map; public class SdAlgNn { private final static String TAG = "SdAlgNn"; - private final static String MODEL_PATH = "best_model_v0.05.tflite"; + private final static String MODEL_PATH = "best_model_v0.06.tflite"; private String mUrlBase = "https://osdApi.ddns.net"; private InterpreterApi interpreter; private Context mContext; diff --git a/app/src/main/res/layout/main.xml b/app/src/main/res/layout/main.xml index 433738a..7789db5 100644 --- a/app/src/main/res/layout/main.xml +++ b/app/src/main/res/layout/main.xml @@ -6,23 +6,85 @@ - +--> + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/menu/main_activity_actions.xml b/app/src/main/res/menu/main_activity_actions.xml index 1f4027b..07598f7 100644 --- a/app/src/main/res/menu/main_activity_actions.xml +++ b/app/src/main/res/menu/main_activity_actions.xml @@ -28,14 +28,14 @@ android:icon="@drawable/ic_action_settings" app:showAsAction="never|withText" android:title="@string/data_log_manager" /> - + OpenSeizureDetector "\n - \nV4.0.7 - imporovements to Data Sharing data log manager screen. - \nV4.0.6 - First public relase with Data Sharing feature enabled. + \nV4.1.0 - Added Machine Learning (Artificial Intelligence) Detection Algorithm Option + \nV4.0.7 - Improvements to Data Sharing data log manager screen. - Introduced the <b>Data Sharing</b> feature to allow users to share their seizure and false alarm data with researchers to help improve the system.<br/> - Fixed <b>SMS Location Alerts</b> on Android V10+ (new permissions screens)<br/> @@ -106,7 +106,7 @@ Maximum Frequency of ROI (Hz) (Default = 8 Hz) AlarmFreqMin (Hz) Minimum Frequency of ROI (Hz) (Default = 3 Hz) - Heart Rate Alarm Enabled + Enable Heart Rate Alarm Treat a Null heart rate as an alarm condition @@ -122,7 +122,7 @@ Test Alarm Beep Test Warning Beep Test SMS Alarm Notification - Data Log Manager + Data Sharing View Log Entries Export Data Settings @@ -262,7 +262,7 @@ Higher Frequency is more Accurate, but uses more battery power. Select Sample Frequency Fall Detector Settings - Activate Fall Detection Function + Enable Fall Detection Function Fall Detection Lower Threshold (milli-g) Fall Detection Upper Threshold (milli-g) Fall Detection Window (milli-seconds) @@ -312,7 +312,7 @@ Log in to OpenSeizureDetector Data Sharing Log Out Logged in to\nData Sharing - Logged Data Manager + Data Sharing Manager Shared Data Number of Events Stored on Phone: "Number of Datapoints Stored on Phone: " @@ -438,8 +438,9 @@ Not Logged in to Data Sharing You must be logged in to the Data Sharing system to be able to report seizures. Include Warnings - Enable the original deterministic OpenSeizureDetector Algorithm to generate alarms. + Enable the original deterministic OpenSeizureDetector Algorithm to generate alarms. ***Disabling this algorithm is NOT recommended except for testing purposes*** Enable Original OSD Algorithm Enable AI (Neural Network) Algorithm Enable the Artificial Intelligence (Neural Network) algorithm to generate alarms. + Seizure Detection Algorithms Selection diff --git a/app/src/main/res/xml/seizure_detector_prefs.xml b/app/src/main/res/xml/seizure_detector_prefs.xml index d7d1f84..bd8d12c 100644 --- a/app/src/main/res/xml/seizure_detector_prefs.xml +++ b/app/src/main/res/xml/seizure_detector_prefs.xml @@ -2,7 +2,7 @@ - + + + + + +