V3.1.0 - Added simple fall detection algorithm to Garmin/Pebble data source
This commit is contained in:
@@ -1,6 +1,13 @@
|
|||||||
OpenSeizureDetector Android App - Change Log
|
OpenSeizureDetector Android App - Change Log
|
||||||
============================================
|
============================================
|
||||||
|
|
||||||
|
V3.1.0 - 07apr2019
|
||||||
|
- Added fall detection algorithm to Garmin/Fitbit data source.
|
||||||
|
|
||||||
|
V3.0.4 - Fixed issues with install watch app, and stopping server resulting in crashes
|
||||||
|
|
||||||
|
V3.0.3- Fixed problem with crash on phone boot if Auto Start on Boot option selected
|
||||||
|
|
||||||
V3.0.2 - 27feb2019
|
V3.0.2 - 27feb2019
|
||||||
- Corrected issue with app not re-starting properly when run-time permissions changed
|
- Corrected issue with app not re-starting properly when run-time permissions changed
|
||||||
(e.g. send_sms permission)
|
(e.g. send_sms permission)
|
||||||
|
|||||||
BIN
app/release/app-release-3.1.0.apk
Normal file
BIN
app/release/app-release-3.1.0.apk
Normal file
Binary file not shown.
@@ -1 +1 @@
|
|||||||
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":53,"versionName":"3.0.4","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
|
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":54,"versionName":"3.1.0","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
|
||||||
@@ -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"
|
||||||
package="uk.org.openseizuredetector"
|
package="uk.org.openseizuredetector"
|
||||||
android:versionCode="53"
|
android:versionCode="54"
|
||||||
android:versionName="3.0.4"
|
android:versionName="3.1.0"
|
||||||
>
|
>
|
||||||
<!--android:allowBackup="false"-->
|
<!--android:allowBackup="false"-->
|
||||||
|
|
||||||
|
|||||||
@@ -482,6 +482,8 @@ public class SdDataSourceGarmin extends SdDataSource {
|
|||||||
simpleSpec[ifreq] = simpleSpec[ifreq] / (binMax-binMin);
|
simpleSpec[ifreq] = simpleSpec[ifreq] / (binMax-binMin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
checkFall();
|
||||||
|
|
||||||
// Populate the mSdData structure to communicate with the main SdServer service.
|
// Populate the mSdData structure to communicate with the main SdServer service.
|
||||||
mDataStatusTime.setToNow();
|
mDataStatusTime.setToNow();
|
||||||
mSdData.specPower = (long)specPower / ACCEL_SCALE_FACTOR;
|
mSdData.specPower = (long)specPower / ACCEL_SCALE_FACTOR;
|
||||||
@@ -507,6 +509,44 @@ public class SdDataSourceGarmin extends SdDataSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************
|
||||||
|
* Simple threshold analysis to chech for fall.
|
||||||
|
* Called from clock_tick_handler()
|
||||||
|
*/
|
||||||
|
public void checkFall() {
|
||||||
|
int i,j;
|
||||||
|
double minAcc, maxAcc;
|
||||||
|
|
||||||
|
long fallWindowSamp = (mFallWindow*mSdData.mSampleFreq)/1000; // Convert ms to samples.
|
||||||
|
Log.v(TAG, "check_fall() - fallWindowSamp=" +fallWindowSamp);
|
||||||
|
// Move window through sample buffer, checking for fall.
|
||||||
|
mSdData.fallAlarmStanding = false;
|
||||||
|
if (mFallActive) {
|
||||||
|
for (i = 0; i < mSdData.mNsamp - fallWindowSamp; i++) { // i = window start point
|
||||||
|
// Find max and min acceleration within window.
|
||||||
|
minAcc = mSdData.rawData[i];
|
||||||
|
maxAcc = mSdData.rawData[i];
|
||||||
|
for (j = 0; j < fallWindowSamp; j++) { // j = position within window
|
||||||
|
if (mSdData.rawData[i + j] < minAcc) minAcc = mSdData.rawData[i + j];
|
||||||
|
if (mSdData.rawData[i + j] > maxAcc) maxAcc = mSdData.rawData[i + j];
|
||||||
|
}
|
||||||
|
if ((minAcc < mFallThreshMin) && (maxAcc > mFallThreshMax)) {
|
||||||
|
Log.d(TAG, "check_fall() - minAcc=" + minAcc + ", maxAcc=" + maxAcc);
|
||||||
|
Log.d(TAG, "check_fall() - ****FALL DETECTED****");
|
||||||
|
mSdData.fallAlarmStanding = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Log.v(TAG,"check_fall - mFallActive is false - doing nothing");
|
||||||
|
}
|
||||||
|
//if (debug) APP_LOG(APP_LOG_LEVEL_DEBUG,"check_fall() - minAcc=%d, maxAcc=%d",
|
||||||
|
// minAcc,maxAcc);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks the status of the connection to the watch,
|
* Checks the status of the connection to the watch,
|
||||||
* and sets class variables for use by other functions.
|
* and sets class variables for use by other functions.
|
||||||
|
|||||||
@@ -501,12 +501,7 @@ public class StartupActivity extends Activity {
|
|||||||
+ "http://openseizuredetector.org.uk, or the app Facebook page at https://www.facebook.com/openseizuredetector. "
|
+ "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 "
|
+ "so I can get in touch if necessary.\nThank you! Graham \ngraham@openseizuredetector.org.uk "
|
||||||
+ "\n\nChanges in this version:"
|
+ "\n\nChanges in this version:"
|
||||||
+ "\n- V3.0.4 - Fixed issues with install watch app, and stopping server resulting in crashes"
|
+ "\n- V3.1.0 - Added fall detection algorithm into Garmin/Fitbit Data Source "
|
||||||
+ "\n- V3.0.3 - Fixed problem with crash on phone boot if Auto Start on Boot option selected"
|
|
||||||
+ "\n- Upgraded to be compatible with Android Version 9"
|
|
||||||
+ "\n- Added support a Garmin based seizure detector with Heart Rate alarm "
|
|
||||||
+ "\n Fixed problem with app not restarting properly when settings were changed"
|
|
||||||
+ "\n- Explicitly asks for SMS permission, and displays warning in notification if SMS alarms are active"
|
|
||||||
+ "\n ."
|
+ "\n ."
|
||||||
);
|
);
|
||||||
// This makes the links display as links, but they do not respond to clicks for some reason...
|
// This makes the links display as links, but they do not respond to clicks for some reason...
|
||||||
@@ -537,13 +532,7 @@ public class StartupActivity extends Activity {
|
|||||||
+ "http://openseizuredetector.org.uk, or the app Facebook page at https://www.facebook.com/openseizuredetector. "
|
+ "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 "
|
+ "so I can get in touch if necessary.\nThank you! Graham \ngraham@openseizuredetector.org.uk "
|
||||||
+ "\n\nChanges in this version:"
|
+ "\n\nChanges in this version:"
|
||||||
+ "\n- V3.0.4 - Fixed issues with install watch app, and stopping server resulting in crashes"
|
+ "\n- V3.1.0 - Added fall detection algorithm into Garmin/Fitbit Data Source "
|
||||||
+ "\n- V3.0.3 - Fixed problem with crash on phone boot if Auto Start on Boot option selected"
|
|
||||||
+ "\n- Upgraded to be compatible with Android Version 9"
|
|
||||||
+ "\n- Added support for a Garmin based seizure detector with Heart Rate alarm "
|
|
||||||
+ "\n- Fixed problem with app not restarting properly when settings were changed"
|
|
||||||
+ "\n- Explicitly asks for SMS permission, and displays warning in notification if SMS alarms are active"
|
|
||||||
+ "\n "
|
|
||||||
+ "\n "
|
+ "\n "
|
||||||
+ "\n "
|
+ "\n "
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -48,29 +48,6 @@
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
<PreferenceCategory android:title="Fall Detector Settings">
|
|
||||||
<CheckBoxPreference
|
|
||||||
android:defaultValue="false"
|
|
||||||
android:key="FallActive"
|
|
||||||
android:summary=""
|
|
||||||
android:title="Activate Fall Detection Function" />
|
|
||||||
<EditTextPreference
|
|
||||||
android:defaultValue="200"
|
|
||||||
android:key="FallThreshMin"
|
|
||||||
android:summary=""
|
|
||||||
android:title="Fall Detection Lower Threshold (milli-g)" />
|
|
||||||
<EditTextPreference
|
|
||||||
android:defaultValue="1200"
|
|
||||||
android:key="FallThreshMax"
|
|
||||||
android:summary=""
|
|
||||||
android:title="Fall Detection Upper Threshold (milli-g)" />
|
|
||||||
<EditTextPreference
|
|
||||||
android:defaultValue="1500"
|
|
||||||
android:key="FallWindow"
|
|
||||||
android:summary=""
|
|
||||||
android:title="Fall Detection Window (milli-seconds)" />
|
|
||||||
</PreferenceCategory>
|
|
||||||
|
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
android:title="Watch Communications Settings">
|
android:title="Watch Communications Settings">
|
||||||
<ListPreference
|
<ListPreference
|
||||||
|
|||||||
@@ -60,6 +60,29 @@
|
|||||||
android:title="Heart Rate Max Threshold (bpm)" />
|
android:title="Heart Rate Max Threshold (bpm)" />
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
|
||||||
|
<PreferenceCategory android:title="Fall Detector Settings">
|
||||||
|
<CheckBoxPreference
|
||||||
|
android:defaultValue="false"
|
||||||
|
android:key="FallActive"
|
||||||
|
android:summary=""
|
||||||
|
android:title="Activate Fall Detection Function" />
|
||||||
|
<EditTextPreference
|
||||||
|
android:defaultValue="200"
|
||||||
|
android:key="FallThreshMin"
|
||||||
|
android:summary=""
|
||||||
|
android:title="Fall Detection Lower Threshold (milli-g)" />
|
||||||
|
<EditTextPreference
|
||||||
|
android:defaultValue="1200"
|
||||||
|
android:key="FallThreshMax"
|
||||||
|
android:summary=""
|
||||||
|
android:title="Fall Detection Upper Threshold (milli-g)" />
|
||||||
|
<EditTextPreference
|
||||||
|
android:defaultValue="1500"
|
||||||
|
android:key="FallWindow"
|
||||||
|
android:summary=""
|
||||||
|
android:title="Fall Detection Window (milli-seconds)" />
|
||||||
|
</PreferenceCategory>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
|
|||||||
Reference in New Issue
Block a user