Snooze implemented. Fixed #5

This commit is contained in:
Christopher Beckmann 2017-11-02 19:45:22 +01:00
commit 4d72fdd076
3 changed files with 21 additions and 75 deletions

View file

@ -1,5 +1,6 @@
package org.secuso.privacyfriendlybreakreminder.service;
import android.app.NotificationManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@ -59,5 +60,10 @@ public class PreferenceChangeReceiver extends BroadcastReceiver {
// }
}
NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
if(manager != null) {
manager.cancel(TimerService.NOTIFICATION_ID);
}
}
}

View file

@ -12,23 +12,16 @@ import android.content.SharedPreferences;
import android.os.Binder;
import android.os.CountDownTimer;
import android.os.IBinder;
import android.os.IInterface;
import android.os.Parcel;
import android.os.RemoteException;
import android.preference.PreferenceManager;
import android.provider.Settings;
import android.support.annotation.Nullable;
import android.support.v4.app.NotificationCompat;
import android.support.v4.content.ContextCompat;
import android.util.Log;
import org.secuso.privacyfriendlybreakreminder.R;
import org.secuso.privacyfriendlybreakreminder.activities.ExerciseActivity;
import org.secuso.privacyfriendlybreakreminder.activities.TimerActivity;
import java.io.FileDescriptor;
import java.util.Locale;
import java.util.Timer;
import static android.app.PendingIntent.FLAG_CANCEL_CURRENT;
import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;
@ -60,7 +53,7 @@ public class TimerService extends Service {
public static final String NOTIFICATION_DELETED_ACTION = "org.secuso.privacyfriendlybreakreminder.NotificationDeleted";
private static final int UPDATE_INTERVAL = 100;
private static final int NOTIFICATION_ID = 31337;
public static final int NOTIFICATION_ID = 31337;
private TimerServiceBinder mBinder = new TimerServiceBinder();
private CountDownTimer mTimer;
@ -104,7 +97,11 @@ public class TimerService extends Service {
// send a notification with sound and vibration
stopForeground(false);
Intent snoozeIntent = new Intent(this, TimerService.class);
snoozeIntent.setAction(ACTION_SNOOZE_TIMER);
PendingIntent startExercises = PendingIntent.getActivity(this, 0, new Intent(this, ExerciseActivity.class), FLAG_CANCEL_CURRENT);
PendingIntent snoozeExercise = PendingIntent.getService(this, 0, snoozeIntent, FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setContentTitle(getString(R.string.app_name))
@ -120,16 +117,16 @@ 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), 0));
.setDeleteIntent(PendingIntent.getBroadcast(getApplicationContext(), 0, new Intent(NOTIFICATION_DELETED_ACTION), FLAG_UPDATE_CURRENT));
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
if(pref.getBoolean(PREF_EXERCISE_CONTINUOUS, false)) {
Intent prefIntent = new Intent(ACTION_PREF_CHANGE);
prefIntent.putExtra(EXTRA_DISABLE_CONTINUOUS, false);
builder.addAction(0, getString(R.string.dismiss_and_dont_repeat), PendingIntent.getBroadcast(getApplicationContext(), 0, prefIntent, 0));
builder.addAction(0, getString(R.string.dismiss_and_dont_repeat), PendingIntent.getBroadcast(getApplicationContext(), 0, prefIntent, FLAG_UPDATE_CURRENT));
}
builder.addAction(R.drawable.ic_replay_black_48dp, getString(R.string.snooze), snoozeExercise);
builder.addAction(R.drawable.ic_play_arrow_black, getString(R.string.start), startExercises);
notificationManager.notify(NOTIFICATION_ID, builder.build());
@ -303,6 +300,8 @@ public class TimerService extends Service {
String time = String.format(Locale.US, "%02d:%02d:%02d", hours, minutes, seconds);
PendingIntent startExercises = PendingIntent.getActivity(this, 0, new Intent(this, ExerciseActivity.class), FLAG_CANCEL_CURRENT);
builder.setContentText(time);
builder.setColor(ContextCompat.getColor(this, R.color.colorAccent));
builder.setPriority(NotificationCompat.PRIORITY_DEFAULT);
@ -315,6 +314,8 @@ public class TimerService extends Service {
intent.addFlags(FLAG_ACTIVITY_CLEAR_TOP);
builder.setContentIntent(PendingIntent.getActivity(this, 0, intent, FLAG_UPDATE_CURRENT));
builder.addAction(R.drawable.ic_play_arrow_black, getString(R.string.start_break), startExercises);
Intent stopIntent = new Intent(this, TimerService.class);
stopIntent.setAction(ACTION_STOP_TIMER);
builder.addAction(R.drawable.ic_replay_black_48dp, getString(R.string.stop), PendingIntent.getService(this, 0, stopIntent, FLAG_UPDATE_CURRENT));

View file

@ -166,69 +166,6 @@
<string name="help_permission_answer">The app only requests permission to control the vibration of the device to make the break alarm more distinct.</string>
<string name="pref_header_schedule">Schedule Times</string>
<string name="pref_header_exercises">Exercise Settings</string>
<string name="title_activity_settings2">Settings</string>
<!-- Strings related to Settings -->
<!-- Example General settings -->
<string name="pref_header_general">General</string>
<string name="pref_title_social_recommendations">Enable social recommendations</string>
<string name="pref_description_social_recommendations">Recommendations for people to contact
based on your message history
</string>
<string name="pref_title_display_name">Display name</string>
<string name="pref_default_display_name">John Smith</string>
<string name="pref_title_add_friends_to_messages">Add friends to messages</string>
<string-array name="pref_example_list_titles">
<item>Always</item>
<item>When possible</item>
<item>Never</item>
</string-array>
<string-array name="pref_example_list_values">
<item>1</item>
<item>0</item>
<item>-1</item>
</string-array>
<!-- Example settings for Data & Sync -->
<string name="pref_header_data_sync">Data &amp; sync</string>
<string name="pref_title_sync_frequency">Sync frequency</string>
<string-array name="pref_sync_frequency_titles">
<item>15 minutes</item>
<item>30 minutes</item>
<item>1 hour</item>
<item>3 hours</item>
<item>6 hours</item>
<item>Never</item>
</string-array>
<string-array name="pref_sync_frequency_values">
<item>15</item>
<item>30</item>
<item>60</item>
<item>180</item>
<item>360</item>
<item>-1</item>
</string-array>
<string-array name="list_preference_entries">
<item>Entry 1</item>
<item>Entry 2</item>
<item>Entry 3</item>
</string-array>
<string-array name="list_preference_entry_values">
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
<string-array name="multi_select_list_preference_default_value" />
<string name="pref_title_system_sync_settings">System sync settings</string>
<string name="pref_title_new_message_notifications">New message notifications</string>
<string name="pref_exercise_continuous">Continuous exercises</string>
@ -241,7 +178,9 @@
<string name="resume">Resume</string>
<string name="stop">Stop</string>
<string name="start">Start</string>
<string name="dismiss_and_dont_repeat">Dismiss and don\'t start again</string>
<string name="dismiss_and_dont_repeat">Dismiss &amp; don\'t restart</string>
<string name="snooze">Snooze</string>
<string name="start_break">Start Break</string>
</resources>