Added settings to configure the flap detector algorithm
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:versionCode="145"
|
android:versionCode="146"
|
||||||
android:versionName="4.2.11x1">
|
android:versionName="4.2.11x2">
|
||||||
<!-- android:allowBackup="false" -->
|
<!-- android:allowBackup="false" -->
|
||||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
||||||
|
|
||||||
|
|||||||
@@ -89,6 +89,12 @@ public abstract class SdDataSource {
|
|||||||
private short mAlarmTime;
|
private short mAlarmTime;
|
||||||
private short mAlarmThresh;
|
private short mAlarmThresh;
|
||||||
private short mAlarmRatioThresh;
|
private short mAlarmRatioThresh;
|
||||||
|
|
||||||
|
private short mFlapThresh;
|
||||||
|
private short mFlapRatioThresh;
|
||||||
|
private double mFlapFreqMin;
|
||||||
|
private double mFlapFreqMax;
|
||||||
|
|
||||||
private boolean mFallActive;
|
private boolean mFallActive;
|
||||||
private short mFallThreshMin;
|
private short mFallThreshMin;
|
||||||
private short mFallThreshMax;
|
private short mFallThreshMax;
|
||||||
@@ -620,10 +626,6 @@ public abstract class SdDataSource {
|
|||||||
*/
|
*/
|
||||||
protected boolean flapCheck() {
|
protected boolean flapCheck() {
|
||||||
boolean retVal;
|
boolean retVal;
|
||||||
double flapFreqMin = 2.0;
|
|
||||||
double flapFreqMax = 4.0;
|
|
||||||
double flapRatioThresh = 50.0;
|
|
||||||
double flapThresh = 5000.0;
|
|
||||||
int nMin = 0;
|
int nMin = 0;
|
||||||
int nMax = 0;
|
int nMax = 0;
|
||||||
int nFreqCutoff = 0;
|
int nFreqCutoff = 0;
|
||||||
@@ -637,12 +639,12 @@ public abstract class SdDataSource {
|
|||||||
Log.v(TAG, "flapCheck(): mSampleFreq=" + mSampleFreq + " mNSamp=" + mSdData.mNsamp + ": freqRes=" + freqRes);
|
Log.v(TAG, "flapCheck(): mSampleFreq=" + mSampleFreq + " mNSamp=" + mSdData.mNsamp + ": freqRes=" + freqRes);
|
||||||
Log.v(TAG, "flapCheck(): rawData=" + Arrays.toString(mSdData.rawData));
|
Log.v(TAG, "flapCheck(): rawData=" + Arrays.toString(mSdData.rawData));
|
||||||
// Set the frequency bounds for the analysis in fft output bin numbers.
|
// Set the frequency bounds for the analysis in fft output bin numbers.
|
||||||
nMin = freq2FftBin(flapFreqMin, mSampleFreq, mSdData.mNsamp);
|
nMin = freq2FftBin(mFlapFreqMin, mSampleFreq, mSdData.mNsamp);
|
||||||
nMax = freq2FftBin(flapFreqMax, mSampleFreq, mSdData.mNsamp);
|
nMax = freq2FftBin(mFlapFreqMax, mSampleFreq, mSdData.mNsamp);
|
||||||
// Calculate the bin number of the cutoff frequency
|
// Calculate the bin number of the cutoff frequency
|
||||||
nFreqCutoff = freq2FftBin(mFreqCutoff, mSampleFreq, mSdData.mNsamp);
|
nFreqCutoff = freq2FftBin(mFreqCutoff, mSampleFreq, mSdData.mNsamp);
|
||||||
Log.v(TAG, "flapCheck(): flapFreqMin=" + flapFreqMin + ", nMin=" + nMin
|
Log.v(TAG, "flapCheck(): flapFreqMin=" + mFlapFreqMin + ", nMin=" + nMin
|
||||||
+ ", flapFreqMax=" + flapFreqMax + ", nMax=" + nMax);
|
+ ", flapFreqMax=" + mFlapFreqMax + ", nMax=" + nMax);
|
||||||
Log.v(TAG, "mFreqCutoff = " + mFreqCutoff + ", nFreqCutoff=" + nFreqCutoff);
|
Log.v(TAG, "mFreqCutoff = " + mFreqCutoff + ", nFreqCutoff=" + nFreqCutoff);
|
||||||
|
|
||||||
DoubleFFT_1D fftDo = new DoubleFFT_1D(mSdData.mNsamp);
|
DoubleFFT_1D fftDo = new DoubleFFT_1D(mSdData.mNsamp);
|
||||||
@@ -683,8 +685,8 @@ public abstract class SdDataSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
retVal = false;
|
retVal = false;
|
||||||
if (roiPower > flapThresh) {
|
if (roiPower > mFlapThresh) {
|
||||||
if (roiRatio > flapRatioThresh) {
|
if (roiRatio > mFlapRatioThresh) {
|
||||||
Log.i(TAG,"flapCheck() - *** flap detected ***");
|
Log.i(TAG,"flapCheck() - *** flap detected ***");
|
||||||
retVal = true;
|
retVal = true;
|
||||||
}
|
}
|
||||||
@@ -1255,6 +1257,26 @@ public abstract class SdDataSource {
|
|||||||
Log.v(TAG, "updatePrefs() FlapAlarmActive = " + mSdData.mFlapAlarmActive);
|
Log.v(TAG, "updatePrefs() FlapAlarmActive = " + mSdData.mFlapAlarmActive);
|
||||||
mUtil.writeToSysLogFile("updatePrefs() FlaplarmActive = " + mSdData.mFlapAlarmActive);
|
mUtil.writeToSysLogFile("updatePrefs() FlaplarmActive = " + mSdData.mFlapAlarmActive);
|
||||||
|
|
||||||
|
prefStr = SP.getString("FlapAlarmThresh", "SET_FROM_XML");
|
||||||
|
mFlapThresh = (short) Integer.parseInt(prefStr);
|
||||||
|
Log.v(TAG, "updatePrefs() FlapAlarmThresh = " + mFlapThresh);
|
||||||
|
mUtil.writeToSysLogFile("updatePrefs() FlapThresh = " + mFlapThresh);
|
||||||
|
|
||||||
|
prefStr = SP.getString("FlapAlarmRatioThresh", "SET_FROM_XML");
|
||||||
|
mFlapRatioThresh = (short) Integer.parseInt(prefStr);
|
||||||
|
Log.v(TAG, "updatePrefs() FlapAlarmRatioThresh = " + mFlapRatioThresh);
|
||||||
|
mUtil.writeToSysLogFile("updatePrefs() FlapAlarmRatioThresh = " + mFlapRatioThresh);
|
||||||
|
|
||||||
|
prefStr = SP.getString("FlapAlarmFreqMin", "SET_FROM_XML");
|
||||||
|
mFlapFreqMin = (double) Double.parseDouble(prefStr);
|
||||||
|
Log.v(TAG, "updatePrefs() FlapAlarmFreqMin = " + mFlapFreqMin);
|
||||||
|
mUtil.writeToSysLogFile("updatePrefs() FlapAlarmFreqMin = " + mFlapFreqMin);
|
||||||
|
|
||||||
|
prefStr = SP.getString("FlapAlarmFreqMax", "SET_FROM_XML");
|
||||||
|
mFlapFreqMax = (double) Double.parseDouble(prefStr);
|
||||||
|
Log.v(TAG, "updatePrefs() FlapAlarmFreqMax = " + mFlapFreqMax);
|
||||||
|
mUtil.writeToSysLogFile("updatePrefs() FlapAlarmFreqMax = " + mFlapFreqMax);
|
||||||
|
|
||||||
mSdData.mCnnAlarmActive = SP.getBoolean("CnnAlarmActive", false);
|
mSdData.mCnnAlarmActive = SP.getBoolean("CnnAlarmActive", false);
|
||||||
Log.v(TAG, "updatePrefs() CnnAlarmActive = " + mSdData.mCnnAlarmActive);
|
Log.v(TAG, "updatePrefs() CnnAlarmActive = " + mSdData.mCnnAlarmActive);
|
||||||
mUtil.writeToSysLogFile("updatePrefs() CnnAlarmActive = " + mSdData.mCnnAlarmActive);
|
mUtil.writeToSysLogFile("updatePrefs() CnnAlarmActive = " + mSdData.mCnnAlarmActive);
|
||||||
|
|||||||
@@ -42,6 +42,7 @@
|
|||||||
android:summary=""
|
android:summary=""
|
||||||
android:title="@string/fall_detect_active_title" />
|
android:title="@string/fall_detect_active_title" />
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
|
||||||
<PreferenceCategory android:title="@string/SeizureDetectorSettingsTitle">
|
<PreferenceCategory android:title="@string/SeizureDetectorSettingsTitle">
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
android:defaultValue="true"
|
android:defaultValue="true"
|
||||||
@@ -88,6 +89,37 @@
|
|||||||
android:title="@string/sample_period_title" />
|
android:title="@string/sample_period_title" />
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
|
||||||
|
<PreferenceCategory android:title="Flap Alarm Settings">
|
||||||
|
<CheckBoxPreference
|
||||||
|
android:defaultValue="true"
|
||||||
|
android:key="FlapAlarmActive"
|
||||||
|
android:summary="Enable the experimental alarm to detect arm 'flapping' motion"
|
||||||
|
android:title="Enable Flap Alarm" />
|
||||||
|
<EditTextPreference
|
||||||
|
android:defaultValue="5000"
|
||||||
|
android:key="FlapAlarmThresh"
|
||||||
|
android:summary="Flap Alarm Threshold"
|
||||||
|
android:title="Flap Alarm Threshold" />
|
||||||
|
<EditTextPreference
|
||||||
|
android:defaultValue="90"
|
||||||
|
android:key="FlapAlarmRatioThresh"
|
||||||
|
android:summary="Flap Alarm Ratio Threshold"
|
||||||
|
android:title="Flap Alarm Ratio Threshold" />
|
||||||
|
|
||||||
|
<EditTextPreference
|
||||||
|
android:defaultValue="2"
|
||||||
|
android:key="FlapAlarmFreqMin"
|
||||||
|
android:summary="@string/AlarmFreqMinSummary"
|
||||||
|
android:title="@string/AlarmFreqMinTitle" />
|
||||||
|
<EditTextPreference
|
||||||
|
android:defaultValue="4"
|
||||||
|
android:key="FlapAlarmFreqMax"
|
||||||
|
android:summary="@string/AlarmFreqMaxSummary"
|
||||||
|
android:title="@string/AlarmFreqMaxTitle" />
|
||||||
|
</PreferenceCategory>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<PreferenceCategory android:title="@string/ml_sd_settings_title">
|
<PreferenceCategory android:title="@string/ml_sd_settings_title">
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
android:defaultValue="false"
|
android:defaultValue="false"
|
||||||
|
|||||||
BIN
releases/app-release-4.2.11x2.apk
Normal file
BIN
releases/app-release-4.2.11x2.apk
Normal file
Binary file not shown.
Reference in New Issue
Block a user