enabled swipe action on notification
This commit is contained in:
parent
87636e9a64
commit
c5a85abb3b
4 changed files with 47 additions and 18 deletions
|
@ -38,6 +38,7 @@ import android.view.View;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import org.y20k.trackbook.helpers.NotificationHelper;
|
||||||
import org.y20k.trackbook.helpers.TrackbookKeys;
|
import org.y20k.trackbook.helpers.TrackbookKeys;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -148,6 +149,10 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys {
|
||||||
mMainActivityFragment.setTrackingState(mTrackerServiceRunning);
|
mMainActivityFragment.setTrackingState(mTrackerServiceRunning);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (intent.hasExtra(EXTRA_CLEAR_MAP)) {
|
||||||
|
clearMap();
|
||||||
|
}
|
||||||
|
|
||||||
// if not in onboarding mode: set state of FloatingActionButton
|
// if not in onboarding mode: set state of FloatingActionButton
|
||||||
if (mFloatingActionButton != null) {
|
if (mFloatingActionButton != null) {
|
||||||
setFloatingActionButtonState();
|
setFloatingActionButtonState();
|
||||||
|
@ -218,6 +223,18 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys {
|
||||||
handleFloatingActionButtonClick(view);
|
handleFloatingActionButtonClick(view);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
mFloatingActionButton.setOnLongClickListener(new View.OnLongClickListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onLongClick(View view) {
|
||||||
|
if (mTrackerServiceRunning) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
clearMap();
|
||||||
|
NotificationHelper.stop();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// point to the on main onboarding layout
|
// 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 */
|
/* Check which permissions have been granted */
|
||||||
private List<String> checkPermissions() {
|
private List<String> checkPermissions() {
|
||||||
List<String> permissions = new ArrayList<>();
|
List<String> permissions = new ArrayList<>();
|
||||||
|
|
|
@ -94,27 +94,30 @@ public class NotificationHelper implements TrackbookKeys {
|
||||||
String contentText = mService.getString(R.string.notification_content_distance) + ": " + track.getTrackDistance() + " | " +
|
String contentText = mService.getString(R.string.notification_content_distance) + ": " + track.getTrackDistance() + " | " +
|
||||||
mService.getString(R.string.notification_content_duration) + " : " + track.getTrackDuration();
|
mService.getString(R.string.notification_content_duration) + " : " + track.getTrackDuration();
|
||||||
|
|
||||||
// explicit intent for notification tap
|
// CASE: NOTIFICATION TAP
|
||||||
Intent tapActionIntent = new Intent(mService, MainActivity.class);
|
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_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);
|
Intent stopActionIntent = new Intent(mService, TrackerService.class);
|
||||||
stopActionIntent.setAction(ACTION_STOP);
|
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
|
// pending intent wrapper for notification stop action
|
||||||
PendingIntent stopActionPendingIntent = PendingIntent.getService(mService, 0, stopActionIntent, 0);
|
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
|
// third line of text - only appears in expanded view
|
||||||
// builder.setSubText();
|
// builder.setSubText();
|
||||||
} else {
|
} else {
|
||||||
|
builder.setDeleteIntent(swipeActionPendingIntent);
|
||||||
builder.setContentTitle(mService.getString(R.string.notification_title_trackbook_not_running));
|
builder.setContentTitle(mService.getString(R.string.notification_title_trackbook_not_running));
|
||||||
builder.setContentText(contentText);
|
builder.setContentText(contentText);
|
||||||
// third line of text - only appears in expanded view
|
builder.setSubText(mService.getString(R.string.notification_swipe_to_clear_map));
|
||||||
// builder.setSubText();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return builder;
|
return builder;
|
||||||
|
|
|
@ -32,6 +32,7 @@ public interface TrackbookKeys {
|
||||||
public static final String EXTRA_TRACK = "TRACK";
|
public static final String EXTRA_TRACK = "TRACK";
|
||||||
public static final String EXTRA_LAST_LOCATION = "LAST_LOCATION";
|
public static final String EXTRA_LAST_LOCATION = "LAST_LOCATION";
|
||||||
public static final String EXTRA_TRACKING_STATE = "TRACKING_STATE";
|
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_TITLE = "EXTRA_INFOSHEET_TITLE";
|
||||||
public static final String EXTRA_INFOSHEET_CONTENT = "INFOSHEET_CONTENT";
|
public static final String EXTRA_INFOSHEET_CONTENT = "INFOSHEET_CONTENT";
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
<string name="notification_title_trackbook_running">Trackbook running</string>
|
<string name="notification_title_trackbook_running">Trackbook running</string>
|
||||||
<string name="notification_title_trackbook_not_running">Trackbook not running</string>
|
<string name="notification_title_trackbook_not_running">Trackbook not running</string>
|
||||||
<string name="notification_stop">Stop</string>
|
<string name="notification_stop">Stop</string>
|
||||||
|
<string name="notification_swipe_to_clear_map">… swipe to clear map.</string>
|
||||||
<string name="notification_content_duration">Duration</string>
|
<string name="notification_content_duration">Duration</string>
|
||||||
<string name="notification_content_distance">Distance</string>
|
<string name="notification_content_distance">Distance</string>
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue