From a23e67b7608ca55bf246c25b78d4681379c7a319 Mon Sep 17 00:00:00 2001 From: Graham Jones Date: Wed, 1 Mar 2023 21:12:20 +0000 Subject: [PATCH] Added settings for new Heart Rate Alarms --- app/src/main/AndroidManifest.xml | 2 +- .../uk/org/openseizuredetector/SdAlgHr.java | 83 +++++++++++++++++++ app/src/main/res/values/strings.xml | 13 +++ .../main/res/xml/seizure_detector_prefs.xml | 37 +++++++++ 4 files changed, 134 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/uk/org/openseizuredetector/SdAlgHr.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2c0bf3b..9b84410 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,7 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" package="uk.org.openseizuredetector" android:versionCode="115" - android:versionName="4.1.3m"> + android:versionName="4.1.3n"> diff --git a/app/src/main/java/uk/org/openseizuredetector/SdAlgHr.java b/app/src/main/java/uk/org/openseizuredetector/SdAlgHr.java new file mode 100644 index 0000000..78083dd --- /dev/null +++ b/app/src/main/java/uk/org/openseizuredetector/SdAlgHr.java @@ -0,0 +1,83 @@ +package uk.org.openseizuredetector; + +import android.content.Context; +import android.content.SharedPreferences; +import android.os.Handler; +import android.preference.PreferenceManager; +import android.util.Log; + +public class SdAlgHr { + private final static String TAG = "SdAlgHr"; + private Context mContext; + private OsdUtil mUtil; + private boolean mSimpleHrAlarmActive; + private double mSimpleHrAlarmThreshMin; + private double mSimpleHrAlarmThreshMax; + + private boolean mAdaptiveHrAlarmActive; + private double mAdaptiveHrAlarmWindowSecs; + private int mAdaptiveHrAlarmWindowDp; + private double mAdaptiveHrAlarmThresh; + private boolean mAverageHrAlarmActive; + private double mAverageHrAlarmWindowSecs; + private int mAverageHrAlarmWindowDp; + private double mAverageHrAlarmThreshMin; + private double mAverageHrAlarmThreshMax; + + + public SdAlgHr(Context context) { + Log.d(TAG, "SdAlgHr Constructor"); + mContext = context; + mUtil = new OsdUtil(mContext, new Handler()); + } + + public void close() { + Log.d(TAG, "close()"); + } + + public float getAlarmState(SdData sdData) { + return (0); + } + + private double readDoublePref(SharedPreferences SP, String prefName, String defVal) { + String prefValStr; + double retVal = -1; + try { + prefValStr = SP.getString(prefName, defVal); + retVal = Double.parseDouble(prefValStr); + } catch (Exception ex) { + Log.v(TAG, "readDoublePref() - Problem with preference!"); + mUtil.writeToSysLogFile(TAG+".readDoublePref() - Problem with preference!"); + mUtil.showToast(TAG+":"+mContext.getString(R.string.problem_parsing_preferences)); + } + return retVal; + } + + private void updatePrefs() { + /** + * updatePrefs() - update basic settings from the SharedPreferences + * - defined in res/xml/prefs.xml + */ + Log.i(TAG, "updatePrefs()"); + mUtil.writeToSysLogFile(TAG+".updatePrefs()"); + + SharedPreferences SP = PreferenceManager + .getDefaultSharedPreferences(mContext); + mSimpleHrAlarmActive = SP.getBoolean("HRAlarmActive", false); + mSimpleHrAlarmThreshMin = readDoublePref(SP, "HRThreshMin", "20"); + mSimpleHrAlarmThreshMax = readDoublePref(SP, "HRThreshMax", "150"); + + + mAdaptiveHrAlarmActive = SP.getBoolean("HRAdaptiveAlarmActive", false); + mAdaptiveHrAlarmWindowSecs = readDoublePref(SP, "HRAdaptiveAlarmWindowSecs", "30"); + mAdaptiveHrAlarmWindowDp = (int)Math.round(mAdaptiveHrAlarmWindowSecs/5.0); + mAdaptiveHrAlarmThresh = readDoublePref(SP, "HRAdaptiveAlarmThresh", "20"); + + mAverageHrAlarmActive = SP.getBoolean("HRAverageAlarmActive", false); + mAverageHrAlarmWindowSecs = readDoublePref(SP, "HRAverageAlarmWindowSecs", "120"); + mAverageHrAlarmWindowDp = (int)Math.round(mAverageHrAlarmWindowSecs/5.0); + mAverageHrAlarmThreshMin = readDoublePref(SP, "HRAverageAlarmThreshMin", "40"); + mAverageHrAlarmThreshMax = readDoublePref(SP, "HRAverageAlarmThreshMax", "120"); + + } +} diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7a249db..eb2f096 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -488,4 +488,17 @@ NO Privacy Policy Data Sharing + Enable Adaptive Threshold Heart Rate Alarm + Moving Average Time Window (seconds) + Window must be a multiple of 5 seconds + Adaptive Threshold Offset (bpm) + The alarm threshold offset from the average measured Heart Rate (bpm) + Enable Alarm based on rolling average heart rate + + Lower Heart Rate Threshold for Average Heart Rate Alarm + Lower Threshold for Average Heart Rate Alarm + Upper Heart Rate Threshold for Average Heart Rate Alarm + Upper Threshold for Average Heart Rate Alarm + Window size (in seconds) for Average Heart Rate Calculation + Window size (in seconds) for Average Heart Rate Calculation - must be a factor of 5 seconds. diff --git a/app/src/main/res/xml/seizure_detector_prefs.xml b/app/src/main/res/xml/seizure_detector_prefs.xml index bd8d12c..fc64e98 100644 --- a/app/src/main/res/xml/seizure_detector_prefs.xml +++ b/app/src/main/res/xml/seizure_detector_prefs.xml @@ -90,6 +90,43 @@ android:key="HRThreshMax" android:summary="@string/HRThreshMaxSummary" android:title="@string/HRThreshMaxTitle" /> + + + + + + + + +