Added settings for new Heart Rate Alarms

This commit is contained in:
Graham Jones
2023-03-01 21:12:20 +00:00
parent 0127a67fb0
commit a23e67b760
4 changed files with 134 additions and 1 deletions

View File

@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
package="uk.org.openseizuredetector" package="uk.org.openseizuredetector"
android:versionCode="115" android:versionCode="115"
android:versionName="4.1.3m"> android:versionName="4.1.3n">
<!-- android:allowBackup="false" --> <!-- android:allowBackup="false" -->
<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

View File

@@ -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");
}
}

View File

@@ -488,4 +488,17 @@
<string name="no_button_title">NO</string> <string name="no_button_title">NO</string>
<string name="privacy_policy_button_title">Privacy Policy</string> <string name="privacy_policy_button_title">Privacy Policy</string>
<string name="data_sharing_button_title">Data Sharing</string> <string name="data_sharing_button_title">Data Sharing</string>
<string name="HRAdaptiveAlarmEnabledTitle">Enable Adaptive Threshold Heart Rate Alarm</string>
<string name="HRAdaptiveAlarmWindowTitle">Moving Average Time Window (seconds)</string>
<string name="HRAdaptiveAlarmWindowSummary">Window must be a multiple of 5 seconds</string>
<string name="HRAdaptiveThreshTitle">Adaptive Threshold Offset (bpm)</string>
<string name="HRAdaptiveThreshSummary">The alarm threshold offset from the average measured Heart Rate (bpm)</string>
<string name="HRAverageAlarmEnabledTitle">Enable Alarm based on rolling average heart rate</string>
<string name="HRAverageAlarmEnabledSummary" />
<string name="HRAverageThreshMinSummary">Lower Heart Rate Threshold for Average Heart Rate Alarm</string>
<string name="HRAverageThreshMinTitle">Lower Threshold for Average Heart Rate Alarm</string>
<string name="HRAverageThreshMaxSummary">Upper Heart Rate Threshold for Average Heart Rate Alarm</string>
<string name="HRAverageThreshMaxTitle">Upper Threshold for Average Heart Rate Alarm</string>
<string name="HRAverageAlarmWindowTitle">Window size (in seconds) for Average Heart Rate Calculation</string>
<string name="HRAverageAlarmWindowSummary">Window size (in seconds) for Average Heart Rate Calculation - must be a factor of 5 seconds.</string>
</resources> </resources>

View File

@@ -90,6 +90,43 @@
android:key="HRThreshMax" android:key="HRThreshMax"
android:summary="@string/HRThreshMaxSummary" android:summary="@string/HRThreshMaxSummary"
android:title="@string/HRThreshMaxTitle" /> android:title="@string/HRThreshMaxTitle" />
<CheckBoxPreference
android:defaultValue="false"
android:key="HRAdaptiveAlarmActive"
android:summary="@string/HRAlarmEnabledSummary"
android:title="@string/HRAdaptiveAlarmEnabledTitle" />
<EditTextPreference
android:defaultValue="30"
android:key="HRAdaptiveAlarmWindowSecs"
android:summary="@string/HRAdaptiveAlarmWindowSummary"
android:title="@string/HRAdaptiveAlarmWindowTitle" />
<EditTextPreference
android:defaultValue="20"
android:key="HRAdaptiveAlarmThresh"
android:summary="@string/HRAdaptiveThreshSummary"
android:title="@string/HRAdaptiveThreshTitle" />
<CheckBoxPreference
android:defaultValue="false"
android:key="HRAverageAlarmActive"
android:summary="@string/HRAverageAlarmEnabledSummary"
android:title="@string/HRAverageAlarmEnabledTitle" />
<EditTextPreference
android:defaultValue="40"
android:key="HRAverageAlarmThreshMin"
android:summary="@string/HRAverageThreshMinSummary"
android:title="@string/HRAverageThreshMinTitle" />
<EditTextPreference
android:defaultValue="120"
android:key="HRAverageAlarmThreshMax"
android:summary="@string/HRAverageThreshMaxSummary"
android:title="@string/HRAverageThreshMaxTitle" />
<EditTextPreference
android:defaultValue="120"
android:key="HRAverageAlarmWindowSecs"
android:summary="@string/HRAverageAlarmWindowSummary"
android:title="@string/HRAverageAlarmWindowTitle" />
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory android:title="@string/O2SatSettingsTitle"> <PreferenceCategory android:title="@string/O2SatSettingsTitle">