diff --git a/CHANGELOG.md b/CHANGELOG.md index ced7b24..7706268 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ OpenSeizureDetector Android App - Change Log ============================================ + 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. 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 7ba1db3..792a69f 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 0d9b176..7e7ee7c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="38" + android:versionName="2.5.4"> diff --git a/app/src/main/java/uk/org/openseizuredetector/SdServer.java b/app/src/main/java/uk/org/openseizuredetector/SdServer.java index b3f5933..cc56ca8 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"; @@ -516,7 +519,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) { @@ -538,7 +541,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 { @@ -561,7 +577,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 { @@ -578,7 +607,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 { @@ -837,6 +879,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 6199435..1d0ec1e 100644 --- a/app/src/main/java/uk/org/openseizuredetector/StartupActivity.java +++ b/app/src/main/java/uk/org/openseizuredetector/StartupActivity.java @@ -461,8 +461,8 @@ 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- Upgraded Pebble watch app to V2.6, which improves alarm detection annunciation." - + "\n- Use the 'Install Watch App' menu option to upgrade the application on the watch." + + "\n- Added option to use MP3 alarm notification sounds rather than the default." + + "\n- as some users had reported the default sound not working." ); // This makes the links display as links, but they do not respond to clicks for some reason... Linkify.addLinks(s, Linkify.ALL); @@ -492,10 +492,8 @@ 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 option to use MP3 alarm notification sounds rather than the default." + + "\n- as some users had reported the default sound not working." ); // 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/build.gradle b/build.gradle index efd8713..3a4494c 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.3.3' + classpath 'com.android.tools.build:gradle:3.0.1' } } allprojects { diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3759826..76226d3 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun May 07 14:37:42 BST 2017 +#Sun Dec 03 09:39:36 GMT 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip