diff --git a/CHANGELOG.md b/CHANGELOG.md index 44979ff..4df3012 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,9 @@ Added Support for Wifi data source (initially to be used for ESP8266_SD) and Android Wear datasource - V2.5.3 - 10sep2017 - Added Pebble App V2.6 which provides better alarm reliability + V2.5.4 - 03dec2017 - Added option to use either tone generator or MP3 alarm sound, as a user reported problem with tone generator on high end samsung phone. + + V2.5.3 - 10sep2017 - Added Pebble App V2.6 which provides better alarm reliability - no changes to Android App other than first run dialog. V2.5.2 - 09 May 2017 diff --git a/README.md b/README.md index 75c4b9f..102b946 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,8 @@ Logo based on ["Star of life2" by Verdy p - Own work. Licensed under Public Doma Other icons crated using http://romannurik.github.io/AndroidAssetStudio. +Audio Alarm sounds from freesound https://freesound.org/people/coltonmanz/sounds/381382/, https://freesound.org/people/NoiseCollector/sounds/4270/, https://freesound.org/people/pistak23/sounds/271632/ -Graham Jones, 01 March 2015. (grahamjones139+sd@gmail.com) + +Graham Jones, 03 December 2017. (grahamjones139+sd@gmail.com) diff --git a/app/build.gradle b/app/build.gradle index 898a1b4..a871cfd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,6 @@ apply plugin: 'com.android.application' android { compileSdkVersion 24 - buildToolsVersion '25.0.0' useLibrary 'org.apache.http.legacy' defaultConfig { diff --git a/app/app-release-2.0.1.apk b/app/release/app-release-2.0.1.apk similarity index 100% rename from app/app-release-2.0.1.apk rename to app/release/app-release-2.0.1.apk diff --git a/app/app-release-2.0.2.apk b/app/release/app-release-2.0.2.apk similarity index 100% rename from app/app-release-2.0.2.apk rename to app/release/app-release-2.0.2.apk diff --git a/app/app-release-2.0.3.apk b/app/release/app-release-2.0.3.apk similarity index 100% rename from app/app-release-2.0.3.apk rename to app/release/app-release-2.0.3.apk diff --git a/app/app-release-2.0.4.apk b/app/release/app-release-2.0.4.apk similarity index 100% rename from app/app-release-2.0.4.apk rename to app/release/app-release-2.0.4.apk diff --git a/app/app-release-2.0.6.apk b/app/release/app-release-2.0.6.apk similarity index 100% rename from app/app-release-2.0.6.apk rename to app/release/app-release-2.0.6.apk diff --git a/app/app-release-2.0.7.apk b/app/release/app-release-2.0.7.apk similarity index 100% rename from app/app-release-2.0.7.apk rename to app/release/app-release-2.0.7.apk diff --git a/app/app-release-2.0.8.apk b/app/release/app-release-2.0.8.apk similarity index 100% rename from app/app-release-2.0.8.apk rename to app/release/app-release-2.0.8.apk diff --git a/app/app-release-2.0.apk b/app/release/app-release-2.0.apk similarity index 100% rename from app/app-release-2.0.apk rename to app/release/app-release-2.0.apk diff --git a/app/app-release-2.0b.apk b/app/release/app-release-2.0b.apk similarity index 100% rename from app/app-release-2.0b.apk rename to app/release/app-release-2.0b.apk diff --git a/app/app-release-2.0c.apk b/app/release/app-release-2.0c.apk similarity index 100% rename from app/app-release-2.0c.apk rename to app/release/app-release-2.0c.apk diff --git a/app/app-release-2.0d.apk b/app/release/app-release-2.0d.apk similarity index 100% rename from app/app-release-2.0d.apk rename to app/release/app-release-2.0d.apk diff --git a/app/app-release-2.3.0.apk b/app/release/app-release-2.3.0.apk similarity index 100% rename from app/app-release-2.3.0.apk rename to app/release/app-release-2.3.0.apk diff --git a/app/app-release-2.3.1.apk b/app/release/app-release-2.3.1.apk similarity index 100% rename from app/app-release-2.3.1.apk rename to app/release/app-release-2.3.1.apk diff --git a/app/app-release-2.3.2.apk b/app/release/app-release-2.3.2.apk similarity index 100% rename from app/app-release-2.3.2.apk rename to app/release/app-release-2.3.2.apk diff --git a/app/app-release-2.5.1.apk b/app/release/app-release-2.5.1.apk similarity index 100% rename from app/app-release-2.5.1.apk rename to app/release/app-release-2.5.1.apk diff --git a/app/app-release-2.5.2.apk b/app/release/app-release-2.5.2.apk similarity index 100% rename from app/app-release-2.5.2.apk rename to app/release/app-release-2.5.2.apk diff --git a/app/release/app-release-2.5.3.apk b/app/release/app-release-2.5.3.apk new file mode 100644 index 0000000..b6a606c Binary files /dev/null and b/app/release/app-release-2.5.3.apk differ diff --git a/app/release/app-release-2.5.4.apk b/app/release/app-release-2.5.4.apk new file mode 100644 index 0000000..db89ad3 Binary files /dev/null and b/app/release/app-release-2.5.4.apk differ diff --git a/app/release/app-release.apk b/app/release/app-release.apk new file mode 100644 index 0000000..db89ad3 Binary files /dev/null and b/app/release/app-release.apk differ diff --git a/app/release/output.json b/app/release/output.json new file mode 100644 index 0000000..875bdfd --- /dev/null +++ b/app/release/output.json @@ -0,0 +1 @@ +[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":38},"path":"app-release.apk","properties":{"packageId":"uk.org.openseizuredetector","split":"","minSdkVersion":"14"}}] \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 99fdf93..9c188c1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,9 +1,8 @@ - android:versionName="2.5.3"> diff --git a/app/src/main/java/uk/org/openseizuredetector/SdServer.java b/app/src/main/java/uk/org/openseizuredetector/SdServer.java index dd73adf..02ad445 100644 --- a/app/src/main/java/uk/org/openseizuredetector/SdServer.java +++ b/app/src/main/java/uk/org/openseizuredetector/SdServer.java @@ -45,7 +45,9 @@ import android.content.SharedPreferences; import android.graphics.drawable.Drawable; import android.location.Location; import android.media.AudioManager; +import android.media.RingtoneManager; import android.media.ToneGenerator; +import android.net.Uri; import android.os.CountDownTimer; import android.os.Environment; import android.os.Handler; @@ -56,7 +58,7 @@ import android.os.Looper; import android.os.PowerManager; import android.os.PowerManager.WakeLock; import android.preference.PreferenceManager; -import android.support.v7.app.NotificationCompat; +import android.support.v4.app.NotificationCompat; import android.telephony.SmsManager; import android.location.Location; import android.util.Log; @@ -106,9 +108,10 @@ public class SdServer extends Service implements SdDataReceiver, SdLocationRecei private int mLatchAlarmPeriod = 0; private LatchAlarmTimer mLatchAlarmTimer = null; private boolean mCancelAudible = false; - public boolean mAudibleAlarm = false; + public boolean mAudibleAlarm = false; // set to public because it is accessed by MainActivity private boolean mAudibleWarning = false; private boolean mAudibleFaultWarning = false; + private boolean mMp3Alarm = false; private boolean mSMSAlarm = false; private String[] mSMSNumbers; private String mSMSMsgStr = "default SMS Message"; @@ -526,7 +529,7 @@ public class SdServer extends Service implements SdDataReceiver, SdLocationRecei /* from http://stackoverflow.com/questions/12154940/how-to-make-a-beep-in-android */ /** - * beep for duration milliseconds, but only if mAudibleAlarm is set. + * beep for duration milliseconds, using tone generator */ private void beep(int duration) { if (mToneGenerator != null) { @@ -548,7 +551,20 @@ public class SdServer extends Service implements SdDataReceiver, SdLocationRecei Log.v(TAG, "faultWarningBeep() - CancelAudible Active - silent beep..."); } else { if (mAudibleFaultWarning) { - beep(10); + if (mMp3Alarm) { + Log.v(TAG,"making MP3 alarm beep"); + // From https://stackoverflow.com/questions/4441334/how-to-play-an-android-notification-sound + // This plays an audio file as a notification, using the notification sound channel. + NotificationManager notificationManager = + (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); + Uri soundUri = Uri.parse("android.resource://"+getPackageName()+"/raw/fault"); + NotificationCompat.Builder mBuilder = + new NotificationCompat.Builder(getApplicationContext()) + .setSound(soundUri); //This sets the sound to play + notificationManager.notify(0, mBuilder.build()); + } else { + beep(10); + } Log.v(TAG, "faultWarningBeep()"); mUtil.writeToSysLogFile("SdServer.faultWarningBeep() - beeping"); } else { @@ -571,7 +587,20 @@ public class SdServer extends Service implements SdDataReceiver, SdLocationRecei Log.v(TAG, "alarmBeep() - CancelAudible Active - silent beep..."); } else { if (mAudibleAlarm) { - beep(3000); + if (mMp3Alarm) { + Log.v(TAG,"making MP3 alarm beep"); + // From https://stackoverflow.com/questions/4441334/how-to-play-an-android-notification-sound + // This plays an audio file as a notification, using the notification sound channel. + NotificationManager notificationManager = + (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); + Uri soundUri = Uri.parse("android.resource://"+getPackageName()+"/raw/alarm"); + NotificationCompat.Builder mBuilder = + new NotificationCompat.Builder(getApplicationContext()) + .setSound(soundUri); //This sets the sound to play + notificationManager.notify(0, mBuilder.build()); + } else { + beep(3000); + } Log.v(TAG, "alarmBeep()"); mUtil.writeToSysLogFile("SdServer.alarmBeep() - beeping"); } else { @@ -588,7 +617,20 @@ public class SdServer extends Service implements SdDataReceiver, SdLocationRecei Log.v(TAG, "warningBeep() - CancelAudible Active - silent beep..."); } else { if (mAudibleWarning) { - beep(100); + if (mMp3Alarm) { + Log.v(TAG,"making MP3 alarm beep"); + // From https://stackoverflow.com/questions/4441334/how-to-play-an-android-notification-sound + // This plays an audio file as a notification, using the notification sound channel. + NotificationManager notificationManager = + (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); + Uri soundUri = Uri.parse("android.resource://"+getPackageName()+"/raw/warning"); + NotificationCompat.Builder mBuilder = + new NotificationCompat.Builder(getApplicationContext()) + .setSound(soundUri); //This sets the sound to play + notificationManager.notify(0, mBuilder.build()); + } else { + beep(100); + } Log.v(TAG, "warningBeep()"); mUtil.writeToSysLogFile("SdServer.warningBeep() - beeping"); } else { @@ -847,6 +889,9 @@ public class SdServer extends Service implements SdDataReceiver, SdLocationRecei Log.v(TAG, "updatePrefs() - mAuidbleAlarm = " + mAudibleAlarm); mAudibleWarning = SP.getBoolean("AudibleWarning", true); Log.v(TAG, "updatePrefs() - mAuidbleWarning = " + mAudibleWarning); + mMp3Alarm = SP.getBoolean("UseMp3Alarm", false); + Log.v(TAG, "updatePrefs() - mMp3Alarm = " + mMp3Alarm); + mSMSAlarm = SP.getBoolean("SMSAlarm", false); Log.v(TAG, "updatePrefs() - mSMSAlarm = " + mSMSAlarm); String SMSNumberStr = SP.getString("SMSNumbers", ""); diff --git a/app/src/main/java/uk/org/openseizuredetector/StartupActivity.java b/app/src/main/java/uk/org/openseizuredetector/StartupActivity.java index d145018..928cfa3 100644 --- a/app/src/main/java/uk/org/openseizuredetector/StartupActivity.java +++ b/app/src/main/java/uk/org/openseizuredetector/StartupActivity.java @@ -495,10 +495,7 @@ public class StartupActivity extends Activity { + "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 " + "\n\nChanges in this version:" - + "\n- Update to Detection Algorithm: You will need to increase the AlarmRatioThresh setting from the previous " - + "default of around 30 to a value of 50-60 to avoid excessive false alarms" - + "\n- Added GPS Location to SMS Alarms" - + "\n- Added auto-start on boot capability" + + "\n- Added support for 'Wifi Datasources' - initially for the experimental ESP8266 based seizure detector." ); // This makes the links display as links, but they do not respond to clicks for some reason... Linkify.addLinks(s, Linkify.ALL); diff --git a/app/src/main/res/raw/alarm.wav b/app/src/main/res/raw/alarm.wav new file mode 100644 index 0000000..de8bab5 Binary files /dev/null and b/app/src/main/res/raw/alarm.wav differ diff --git a/app/src/main/res/raw/fault.mp3 b/app/src/main/res/raw/fault.mp3 new file mode 100644 index 0000000..86d7dea Binary files /dev/null and b/app/src/main/res/raw/fault.mp3 differ diff --git a/app/src/main/res/raw/warning.wav b/app/src/main/res/raw/warning.wav new file mode 100644 index 0000000..2779a1d Binary files /dev/null and b/app/src/main/res/raw/warning.wav differ diff --git a/app/src/main/res/xml/alarm_prefs.xml b/app/src/main/res/xml/alarm_prefs.xml index 86ba7dc..348934c 100644 --- a/app/src/main/res/xml/alarm_prefs.xml +++ b/app/src/main/res/xml/alarm_prefs.xml @@ -36,6 +36,11 @@ android:summary="Duration that fault alarms are muted before initiating." android:numeric="integer" android:defaultValue="30" /> + diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 80bf00c..76226d3 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,4 +1,4 @@ -#Sun Nov 26 23:10:59 GMT 2017 +#Sun Dec 03 09:39:36 GMT 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME