forked from upstream-mirrors/OpenTracks
Refactor: move methods to NotificationManager.
This commit is contained in:
@@ -16,7 +16,6 @@
|
|||||||
|
|
||||||
package de.dennisguse.opentracks.services;
|
package de.dennisguse.opentracks.services;
|
||||||
|
|
||||||
import android.app.PendingIntent;
|
|
||||||
import android.app.Service;
|
import android.app.Service;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
@@ -29,7 +28,6 @@ import android.util.Pair;
|
|||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.core.app.TaskStackBuilder;
|
|
||||||
import androidx.lifecycle.LiveData;
|
import androidx.lifecycle.LiveData;
|
||||||
import androidx.lifecycle.MutableLiveData;
|
import androidx.lifecycle.MutableLiveData;
|
||||||
|
|
||||||
@@ -38,8 +36,6 @@ import java.time.ZoneOffset;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import de.dennisguse.opentracks.R;
|
import de.dennisguse.opentracks.R;
|
||||||
import de.dennisguse.opentracks.TrackListActivity;
|
|
||||||
import de.dennisguse.opentracks.TrackRecordingActivity;
|
|
||||||
import de.dennisguse.opentracks.data.CustomContentProvider;
|
import de.dennisguse.opentracks.data.CustomContentProvider;
|
||||||
import de.dennisguse.opentracks.data.models.Distance;
|
import de.dennisguse.opentracks.data.models.Distance;
|
||||||
import de.dennisguse.opentracks.data.models.Marker;
|
import de.dennisguse.opentracks.data.models.Marker;
|
||||||
@@ -55,7 +51,6 @@ import de.dennisguse.opentracks.settings.PreferencesUtils;
|
|||||||
import de.dennisguse.opentracks.settings.SettingsActivity;
|
import de.dennisguse.opentracks.settings.SettingsActivity;
|
||||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||||
import de.dennisguse.opentracks.util.ExportUtils;
|
import de.dennisguse.opentracks.util.ExportUtils;
|
||||||
import de.dennisguse.opentracks.util.IntentUtils;
|
|
||||||
import de.dennisguse.opentracks.util.SystemUtils;
|
import de.dennisguse.opentracks.util.SystemUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -387,36 +382,10 @@ public class TrackRecordingService extends Service implements TrackPointCreator.
|
|||||||
|
|
||||||
private void showNotification(boolean isGpsStarted) {
|
private void showNotification(boolean isGpsStarted) {
|
||||||
if (isRecording()) {
|
if (isRecording()) {
|
||||||
Intent intent = IntentUtils.newIntent(this, TrackRecordingActivity.class);
|
startForeground(TrackRecordingServiceNotificationManager.NOTIFICATION_ID, notificationManager.setRecording(this));
|
||||||
|
|
||||||
int pendingIntentFlags = PendingIntent.FLAG_UPDATE_CURRENT;
|
|
||||||
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
|
|
||||||
pendingIntentFlags |= PendingIntent.FLAG_IMMUTABLE;
|
|
||||||
}
|
|
||||||
|
|
||||||
PendingIntent pendingIntent = TaskStackBuilder.create(this)
|
|
||||||
.addNextIntentWithParentStack(intent)
|
|
||||||
.getPendingIntent(0, pendingIntentFlags);
|
|
||||||
|
|
||||||
notificationManager.updatePendingIntent(pendingIntent);
|
|
||||||
notificationManager.updateContent(getString(R.string.gps_starting));
|
|
||||||
startForeground(TrackRecordingServiceNotificationManager.NOTIFICATION_ID, notificationManager.getNotification());
|
|
||||||
}
|
}
|
||||||
if (!isRecording() && isGpsStarted) {
|
if (!isRecording() && isGpsStarted) {
|
||||||
Intent intent = IntentUtils.newIntent(this, TrackListActivity.class);
|
startForeground(TrackRecordingServiceNotificationManager.NOTIFICATION_ID, notificationManager.setGPSonlyStarted(this));
|
||||||
|
|
||||||
int pendingIntentFlags = 0;
|
|
||||||
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
|
|
||||||
pendingIntentFlags = PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT;
|
|
||||||
}
|
|
||||||
PendingIntent pendingIntent = TaskStackBuilder.create(this)
|
|
||||||
.addParentStack(TrackListActivity.class)
|
|
||||||
.addNextIntent(intent)
|
|
||||||
.getPendingIntent(0, pendingIntentFlags);
|
|
||||||
|
|
||||||
notificationManager.updatePendingIntent(pendingIntent);
|
|
||||||
notificationManager.updateContent(getString(R.string.gps_starting));
|
|
||||||
startForeground(TrackRecordingServiceNotificationManager.NOTIFICATION_ID, notificationManager.getNotification());
|
|
||||||
}
|
}
|
||||||
if (!isRecording() && !isGpsStarted) {
|
if (!isRecording() && !isGpsStarted) {
|
||||||
stopForeground(true);
|
stopForeground(true);
|
||||||
|
|||||||
+45
-5
@@ -5,15 +5,20 @@ import android.app.NotificationChannel;
|
|||||||
import android.app.NotificationManager;
|
import android.app.NotificationManager;
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.core.app.NotificationCompat;
|
import androidx.core.app.NotificationCompat;
|
||||||
|
import androidx.core.app.TaskStackBuilder;
|
||||||
|
|
||||||
import de.dennisguse.opentracks.R;
|
import de.dennisguse.opentracks.R;
|
||||||
|
import de.dennisguse.opentracks.TrackListActivity;
|
||||||
|
import de.dennisguse.opentracks.TrackRecordingActivity;
|
||||||
import de.dennisguse.opentracks.data.models.Distance;
|
import de.dennisguse.opentracks.data.models.Distance;
|
||||||
import de.dennisguse.opentracks.data.models.TrackPoint;
|
import de.dennisguse.opentracks.data.models.TrackPoint;
|
||||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||||
|
import de.dennisguse.opentracks.util.IntentUtils;
|
||||||
import de.dennisguse.opentracks.util.StringUtils;
|
import de.dennisguse.opentracks.util.StringUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -84,19 +89,50 @@ class TrackRecordingServiceNotificationManager {
|
|||||||
notificationBuilder.setOnlyAlertOnce(true);
|
notificationBuilder.setOnlyAlertOnce(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void updatePendingIntent(PendingIntent pendingIntent) {
|
Notification setRecording(Context context) {
|
||||||
|
Intent intent = IntentUtils.newIntent(context, TrackRecordingActivity.class);
|
||||||
|
|
||||||
|
int pendingIntentFlags = PendingIntent.FLAG_UPDATE_CURRENT;
|
||||||
|
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
|
||||||
|
pendingIntentFlags |= PendingIntent.FLAG_IMMUTABLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
PendingIntent pendingIntent = TaskStackBuilder.create(context)
|
||||||
|
.addNextIntentWithParentStack(intent)
|
||||||
|
.getPendingIntent(0, pendingIntentFlags);
|
||||||
|
|
||||||
|
updateContent(context.getString(R.string.gps_starting));
|
||||||
|
|
||||||
notificationBuilder.setContentIntent(pendingIntent);
|
notificationBuilder.setContentIntent(pendingIntent);
|
||||||
updateNotification();
|
updateNotification();
|
||||||
|
|
||||||
|
return getNotification();
|
||||||
|
}
|
||||||
|
|
||||||
|
Notification setGPSonlyStarted(Context context) {
|
||||||
|
Intent intent = IntentUtils.newIntent(context, TrackListActivity.class);
|
||||||
|
|
||||||
|
int pendingIntentFlags = 0;
|
||||||
|
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
|
||||||
|
pendingIntentFlags = PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT;
|
||||||
|
}
|
||||||
|
PendingIntent pendingIntent = TaskStackBuilder.create(context)
|
||||||
|
.addParentStack(TrackListActivity.class)
|
||||||
|
.addNextIntent(intent)
|
||||||
|
.getPendingIntent(0, pendingIntentFlags);
|
||||||
|
|
||||||
|
updateContent(context.getString(R.string.gps_starting));
|
||||||
|
|
||||||
|
notificationBuilder.setContentIntent(pendingIntent);
|
||||||
|
updateNotification();
|
||||||
|
|
||||||
|
return getNotification();
|
||||||
}
|
}
|
||||||
|
|
||||||
void cancelNotification() {
|
void cancelNotification() {
|
||||||
notificationManager.cancel(NOTIFICATION_ID);
|
notificationManager.cancel(NOTIFICATION_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
Notification getNotification() {
|
|
||||||
return notificationBuilder.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
void setMetricUnits(boolean metricUnits) {
|
void setMetricUnits(boolean metricUnits) {
|
||||||
this.metricUnits = metricUnits;
|
this.metricUnits = metricUnits;
|
||||||
}
|
}
|
||||||
@@ -104,4 +140,8 @@ class TrackRecordingServiceNotificationManager {
|
|||||||
private void updateNotification() {
|
private void updateNotification() {
|
||||||
notificationManager.notify(NOTIFICATION_ID, getNotification());
|
notificationManager.notify(NOTIFICATION_ID, getNotification());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Notification getNotification() {
|
||||||
|
return notificationBuilder.build();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user