From c5a85abb3b87624b3f08132a6ecfa1cb25ac3124 Mon Sep 17 00:00:00 2001 From: y20k Date: Wed, 7 Sep 2016 15:48:12 +0200 Subject: [PATCH] enabled swipe action on notification --- .../java/org/y20k/trackbook/MainActivity.java | 24 ++++++++++++ .../trackbook/helpers/NotificationHelper.java | 39 ++++++++++--------- .../y20k/trackbook/helpers/TrackbookKeys.java | 1 + app/src/main/res/values/strings.xml | 1 + 4 files changed, 47 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/org/y20k/trackbook/MainActivity.java b/app/src/main/java/org/y20k/trackbook/MainActivity.java index 7ef20d9..79d5de2 100644 --- a/app/src/main/java/org/y20k/trackbook/MainActivity.java +++ b/app/src/main/java/org/y20k/trackbook/MainActivity.java @@ -38,6 +38,7 @@ import android.view.View; import android.widget.Button; import android.widget.Toast; +import org.y20k.trackbook.helpers.NotificationHelper; import org.y20k.trackbook.helpers.TrackbookKeys; import java.util.ArrayList; @@ -148,6 +149,10 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys { mMainActivityFragment.setTrackingState(mTrackerServiceRunning); } + if (intent.hasExtra(EXTRA_CLEAR_MAP)) { + clearMap(); + } + // if not in onboarding mode: set state of FloatingActionButton if (mFloatingActionButton != null) { setFloatingActionButtonState(); @@ -218,6 +223,18 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys { handleFloatingActionButtonClick(view); } }); + mFloatingActionButton.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View view) { + if (mTrackerServiceRunning) { + return false; + } else { + clearMap(); + NotificationHelper.stop(); + return true; + } + } + }); } else { // point to the on main onboarding layout @@ -289,6 +306,13 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys { } + + /* Removes track crumbs from map */ + private void clearMap() { + Toast.makeText(this, "Clearing map", Toast.LENGTH_LONG).show(); // TODO remove + } + + /* Check which permissions have been granted */ private List checkPermissions() { List permissions = new ArrayList<>(); diff --git a/app/src/main/java/org/y20k/trackbook/helpers/NotificationHelper.java b/app/src/main/java/org/y20k/trackbook/helpers/NotificationHelper.java index 671911d..01c9a42 100644 --- a/app/src/main/java/org/y20k/trackbook/helpers/NotificationHelper.java +++ b/app/src/main/java/org/y20k/trackbook/helpers/NotificationHelper.java @@ -94,27 +94,30 @@ public class NotificationHelper implements TrackbookKeys { String contentText = mService.getString(R.string.notification_content_distance) + ": " + track.getTrackDistance() + " | " + mService.getString(R.string.notification_content_duration) + " : " + track.getTrackDuration(); - // explicit intent for notification tap + // CASE: NOTIFICATION TAP Intent tapActionIntent = new Intent(mService, MainActivity.class); - tapActionIntent.setAction(Intent.ACTION_MAIN); - tapActionIntent.addCategory(Intent.CATEGORY_LAUNCHER); tapActionIntent.putExtra(EXTRA_TRACK, track); - tapActionIntent.putExtra(EXTRA_TRACKING_STATE, true); + tapActionIntent.putExtra(EXTRA_TRACKING_STATE, tracking); + // artificial back stack for started Activity (https://developer.android.com/training/notify-user/navigation.html#DirectEntry) + TaskStackBuilder tapActionIntentBuilder = TaskStackBuilder.create(mService); + tapActionIntentBuilder.addParentStack(MainActivity.class); + tapActionIntentBuilder.addNextIntent(tapActionIntent); + // pending intent wrapper for notification tap + PendingIntent tapActionPendingIntent = tapActionIntentBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); - // explicit intent for stopping playback + // CASE: NOTIFICATION SWIPE + Intent swipeActionIntent = new Intent(mService, MainActivity.class); + swipeActionIntent.putExtra(EXTRA_CLEAR_MAP, tracking); + // artificial back stack for started Activity (https://developer.android.com/training/notify-user/navigation.html#DirectEntry) + TaskStackBuilder swipeActionIntentBuilder = TaskStackBuilder.create(mService); + swipeActionIntentBuilder.addParentStack(MainActivity.class); + swipeActionIntentBuilder.addNextIntent(swipeActionIntent); + // pending intent wrapper for notification tap + PendingIntent swipeActionPendingIntent = swipeActionIntentBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); + + // CASE: NOTIFICATION BUTTON STOP Intent stopActionIntent = new Intent(mService, TrackerService.class); stopActionIntent.setAction(ACTION_STOP); - - // artificial back stack for started Activity. - // -> navigating backward from the Activity leads to Home screen. - TaskStackBuilder stackBuilder = TaskStackBuilder.create(mService); -// // backstack: adds back stack for Intent (but not the Intent itself) -// stackBuilder.addParentStack(MainActivity.class); - // backstack: add explicit intent for notification tap - stackBuilder.addNextIntent(tapActionIntent); - - // pending intent wrapper for notification tap - PendingIntent tapActionPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); // pending intent wrapper for notification stop action PendingIntent stopActionPendingIntent = PendingIntent.getService(mService, 0, stopActionIntent, 0); @@ -133,10 +136,10 @@ public class NotificationHelper implements TrackbookKeys { // third line of text - only appears in expanded view // builder.setSubText(); } else { + builder.setDeleteIntent(swipeActionPendingIntent); builder.setContentTitle(mService.getString(R.string.notification_title_trackbook_not_running)); builder.setContentText(contentText); - // third line of text - only appears in expanded view - // builder.setSubText(); + builder.setSubText(mService.getString(R.string.notification_swipe_to_clear_map)); } return builder; diff --git a/app/src/main/java/org/y20k/trackbook/helpers/TrackbookKeys.java b/app/src/main/java/org/y20k/trackbook/helpers/TrackbookKeys.java index 4c4bbff..54f92e6 100644 --- a/app/src/main/java/org/y20k/trackbook/helpers/TrackbookKeys.java +++ b/app/src/main/java/org/y20k/trackbook/helpers/TrackbookKeys.java @@ -32,6 +32,7 @@ public interface TrackbookKeys { public static final String EXTRA_TRACK = "TRACK"; public static final String EXTRA_LAST_LOCATION = "LAST_LOCATION"; public static final String EXTRA_TRACKING_STATE = "TRACKING_STATE"; + public static final String EXTRA_CLEAR_MAP = "CLEAR_MAP"; public static final String EXTRA_INFOSHEET_TITLE = "EXTRA_INFOSHEET_TITLE"; public static final String EXTRA_INFOSHEET_CONTENT = "INFOSHEET_CONTENT"; diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 29d75e0..52ee2a2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -14,6 +14,7 @@ Trackbook running Trackbook not running Stop + … swipe to clear map. Duration Distance