diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c0b6d54..7f788ff 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -111,20 +111,6 @@
android:enabled="true"
android:exported="false" />
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/ExerciseActivity.java b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/ExerciseActivity.java
index 6e06b22..7ea2ef7 100644
--- a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/ExerciseActivity.java
+++ b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/ExerciseActivity.java
@@ -35,10 +35,12 @@ import org.secuso.privacyfriendlybreakreminder.database.data.Exercise;
import org.secuso.privacyfriendlybreakreminder.database.data.ExerciseSet;
import org.secuso.privacyfriendlybreakreminder.dialog.ExerciseDialog;
import org.secuso.privacyfriendlybreakreminder.exercises.ExerciseLocale;
+import org.secuso.privacyfriendlybreakreminder.service.TimerService;
import java.util.Locale;
import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP;
+import static org.secuso.privacyfriendlybreakreminder.service.TimerService.ACTION_STOP_TIMER;
/**
* This activity handles showing the exercises and the exercise timer.
@@ -102,6 +104,10 @@ public class ExerciseActivity extends AppCompatActivity implements android.suppo
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_exercise);
+ Intent stopTimer = new Intent(this, TimerService.class);
+ stopTimer.setAction(ACTION_STOP_TIMER);
+ startService(stopTimer);
+
pref = PreferenceManager.getDefaultSharedPreferences(this);
exerciseSetId = pref.getLong(PrefManager.DEFAULT_EXERCISE_SET, 0L);
pauseDuration = pref.getLong(PrefManager.PAUSE_TIME, 5 * 60 * 1000);
diff --git a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/service/NotificationDeletedReceiver.java b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/service/NotificationDeletedReceiver.java
deleted file mode 100644
index 9bc7629..0000000
--- a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/service/NotificationDeletedReceiver.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.secuso.privacyfriendlybreakreminder.service;
-
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.ServiceConnection;
-import android.content.SharedPreferences;
-import android.os.IBinder;
-import android.preference.PreferenceManager;
-import android.util.Log;
-
-import org.secuso.privacyfriendlybreakreminder.activities.TimerActivity;
-
-import static org.secuso.privacyfriendlybreakreminder.activities.tutorial.PrefManager.PREF_EXERCISE_CONTINUOUS;
-
-/**
- * @author Christopher Beckmann
- * @version 2.0
- * @since 26.10.2017
- * created 26.10.2017
- */
-public class NotificationDeletedReceiver extends BroadcastReceiver {
-
- private static final String TAG = NotificationDeletedReceiver.class.getSimpleName();
-
- @Override
- public void onReceive(Context context, Intent intent) {
-
- SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
-
- if(pref.getBoolean(PREF_EXERCISE_CONTINUOUS, false)) {
- Intent serviceIntent = new Intent(context, TimerService.class);
- serviceIntent.setAction(TimerService.ACTION_START_TIMER);
- context.startService(serviceIntent);
- }
- }
-}
diff --git a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/service/PreferenceChangeReceiver.java b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/service/PreferenceChangeReceiver.java
deleted file mode 100644
index 9438d56..0000000
--- a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/service/PreferenceChangeReceiver.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.secuso.privacyfriendlybreakreminder.service;
-
-import android.app.NotificationManager;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.os.Bundle;
-import android.preference.PreferenceManager;
-import android.util.Log;
-
-import java.util.Map;
-import java.util.Set;
-
-import static org.secuso.privacyfriendlybreakreminder.activities.tutorial.PrefManager.PREF_EXERCISE_CONTINUOUS;
-
-/**
- * @author Christopher Beckmann
- * @version 1.0
- * @since 02.11.2017
- * created 02.11.2017
- */
-
-public class PreferenceChangeReceiver extends BroadcastReceiver {
-
- private static final String TAG = PreferenceManager.class.getSimpleName();
-
- public static final String ACTION_PREF_CHANGE = "org.secuso.privacyfriendlybreakreminder.ACTION_PREF_CHANGE";
- public static final String EXTRA_DISABLE_CONTINUOUS = "EXTRA_DISABLE_CONTINUOUS";
-
- @Override
- public void onReceive(Context context, Intent intent) {
-
- if(intent == null) return;
-
- Bundle bundle = intent.getExtras();
-
- if(bundle == null) return;
-
- SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
-// Map prefMap = pref.getAll();
-
- for(String key : intent.getExtras().keySet()) {
-
- if(EXTRA_DISABLE_CONTINUOUS.equals(key)) {
- pref.edit().putBoolean(PREF_EXERCISE_CONTINUOUS, false).apply();
- }
-
-// if(prefMap.containsKey(key)) {
-//
-// Object bundleValue = bundle.get(key);
-//
-// if(prefMap.get(key).getClass().isInstance(bundleValue)) {
-// if(bundleValue instanceof String) {
-// pref.edit().putString(key, (String)bundleValue).apply();
-// } else if(bundleValue instanceof Boolean) {
-// pref.edit().putBoolean(key, (Boolean)bundleValue).apply();
-// }
-// }
-// }
- }
-
- NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
- if(manager != null) {
- manager.cancel(TimerService.NOTIFICATION_ID);
- }
-
- }
-}
diff --git a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/service/TimerService.java b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/service/TimerService.java
index 3a04267..f70ab08 100644
--- a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/service/TimerService.java
+++ b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/service/TimerService.java
@@ -10,6 +10,7 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.os.Binder;
+import android.os.Bundle;
import android.os.CountDownTimer;
import android.os.IBinder;
import android.preference.PreferenceManager;
@@ -28,8 +29,6 @@ import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;
import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP;
import static org.secuso.privacyfriendlybreakreminder.activities.tutorial.PrefManager.PREF_EXERCISE_CONTINUOUS;
import static org.secuso.privacyfriendlybreakreminder.activities.tutorial.PrefManager.WORK_TIME;
-import static org.secuso.privacyfriendlybreakreminder.service.PreferenceChangeReceiver.ACTION_PREF_CHANGE;
-import static org.secuso.privacyfriendlybreakreminder.service.PreferenceChangeReceiver.EXTRA_DISABLE_CONTINUOUS;
/**
* The main timer service. It handles the work timer and sends updates to the notification and the {@link TimerActivity}.
@@ -41,7 +40,6 @@ import static org.secuso.privacyfriendlybreakreminder.service.PreferenceChangeRe
public class TimerService extends Service {
public static final String TAG = TimerService.class.getSimpleName();
- public static final String NOTIFICATION_BROADCAST = TAG + ".NOTIFICATION_BROADCAST";
public static final String TIMER_BROADCAST = TAG + ".TIMER_BROADCAST";
public static final String ACTION_START_TIMER = TAG + "ACTION_START_TIMER";
@@ -50,7 +48,9 @@ public class TimerService extends Service {
public static final String ACTION_STOP_TIMER = TAG + "ACTION_STOP_TIMER";
public static final String ACTION_SNOOZE_TIMER = TAG + "ACTION_SNOOZE_TIMER";
- public static final String NOTIFICATION_DELETED_ACTION = "org.secuso.privacyfriendlybreakreminder.NotificationDeleted";
+ public static final String ACTION_PREF_CHANGE = "org.secuso.privacyfriendlybreakreminder.ACTION_PREF_CHANGE";
+ public static final String EXTRA_DISABLE_CONTINUOUS = "EXTRA_DISABLE_CONTINUOUS";
+ public static final String ACTION_NOTIFICATION_DELETED = "org.secuso.privacyfriendlybreakreminder.NotificationDeleted";
private static final int UPDATE_INTERVAL = 100;
public static final int NOTIFICATION_ID = 31337;
@@ -91,6 +91,57 @@ public class TimerService extends Service {
}
}
};
+ private BroadcastReceiver notificationDeletedReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
+
+ if(pref.getBoolean(PREF_EXERCISE_CONTINUOUS, false)) {
+ Intent serviceIntent = new Intent(context, TimerService.class);
+ serviceIntent.setAction(TimerService.ACTION_START_TIMER);
+ context.startService(serviceIntent);
+ }
+ }
+ };
+ private BroadcastReceiver notificationPreferenceChangedReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+
+ if(intent == null) return;
+
+ Bundle bundle = intent.getExtras();
+
+ if(bundle == null) return;
+
+ SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
+// Map prefMap = pref.getAll();
+
+ for(String key : intent.getExtras().keySet()) {
+
+ if(EXTRA_DISABLE_CONTINUOUS.equals(key)) {
+ pref.edit().putBoolean(PREF_EXERCISE_CONTINUOUS, false).apply();
+ }
+
+// if(prefMap.containsKey(key)) {
+//
+// Object bundleValue = bundle.get(key);
+//
+// if(prefMap.get(key).getClass().isInstance(bundleValue)) {
+// if(bundleValue instanceof String) {
+// pref.edit().putString(key, (String)bundleValue).apply();
+// } else if(bundleValue instanceof Boolean) {
+// pref.edit().putBoolean(key, (Boolean)bundleValue).apply();
+// }
+// }
+// }
+ }
+
+ NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
+ if(manager != null) {
+ manager.cancel(TimerService.NOTIFICATION_ID);
+ }
+ }
+ };
private void onTimerDone() {
@@ -117,7 +168,7 @@ public class TimerService extends Service {
.setVibrate(new long[] { 0, 1000, 1000, 1000, 1000, 1000, 1000 })
.setSound(Settings.System.DEFAULT_NOTIFICATION_URI)
.setOnlyAlertOnce(false)
- .setDeleteIntent(PendingIntent.getBroadcast(getApplicationContext(), 0, new Intent(NOTIFICATION_DELETED_ACTION), FLAG_UPDATE_CURRENT));
+ .setDeleteIntent(PendingIntent.getBroadcast(getApplicationContext(), 0, new Intent(ACTION_NOTIFICATION_DELETED), FLAG_UPDATE_CURRENT));
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
if(pref.getBoolean(PREF_EXERCISE_CONTINUOUS, false)) {
@@ -137,6 +188,8 @@ public class TimerService extends Service {
super.onCreate();
registerReceiver(timerReceiver, new IntentFilter(TIMER_BROADCAST));
+ registerReceiver(notificationDeletedReceiver, new IntentFilter(ACTION_NOTIFICATION_DELETED));
+ registerReceiver(notificationPreferenceChangedReceiver, new IntentFilter(ACTION_PREF_CHANGE));
}
@Override
@@ -144,6 +197,8 @@ public class TimerService extends Service {
super.onDestroy();
unregisterReceiver(timerReceiver);
+ unregisterReceiver(notificationDeletedReceiver);
+ unregisterReceiver(notificationPreferenceChangedReceiver);
}
public synchronized void startTimer(long duration) {