Notification opens recording UI.

Features was removed as it broke occasionally and re-implemented after refactoring.

Fixes #1156.
This commit is contained in:
Dennis Guse
2025-10-22 23:25:55 +02:00
parent 4257f21cae
commit d968e5d0c1
2 changed files with 20 additions and 2 deletions
@@ -195,6 +195,8 @@ public class TrackRecordingService extends Service implements TrackPointCreator.
startSensors(); startSensors();
voiceAnnouncementManager.start(trackRecordingManager.getTrackStatistics()); voiceAnnouncementManager.start(trackRecordingManager.getTrackStatistics());
notificationManager.onRecordingStarted(this, recordingStatus.trackId());
} }
public void tryStartSensors() { public void tryStartSensors() {
@@ -265,6 +267,7 @@ public class TrackRecordingService extends Service implements TrackPointCreator.
} }
boolean stored = trackRecordingManager.onNewTrackPoint(trackPoint); boolean stored = trackRecordingManager.onNewTrackPoint(trackPoint);
//TODO Should be done during updateRecordingDataWhileRecording()
notificationManager.updateTrackPoint(this, trackRecordingManager.getTrackStatistics(), trackPoint, thresholdHorizontalAccuracy); notificationManager.updateTrackPoint(this, trackRecordingManager.getTrackStatistics(), trackPoint, thresholdHorizontalAccuracy);
return stored; return stored;
} }
@@ -9,15 +9,18 @@ import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.os.Build; import android.os.Build;
import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import androidx.core.app.NotificationCompat; import androidx.core.app.NotificationCompat;
import androidx.core.app.TaskStackBuilder; import androidx.core.app.TaskStackBuilder;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.TrackListActivity; 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.DistanceFormatter; import de.dennisguse.opentracks.data.models.DistanceFormatter;
import de.dennisguse.opentracks.data.models.SpeedFormatter; import de.dennisguse.opentracks.data.models.SpeedFormatter;
import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.data.models.TrackPoint; import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.settings.PreferencesUtils;
import de.dennisguse.opentracks.settings.UnitSystem; import de.dennisguse.opentracks.settings.UnitSystem;
@@ -69,11 +72,10 @@ class TrackRecordingServiceNotificationManager implements SharedPreferences.OnSh
Notification onSensorsStarted(Context context) { Notification onSensorsStarted(Context context) {
Intent intent = IntentUtils.newIntent(context, TrackListActivity.class); Intent intent = IntentUtils.newIntent(context, TrackListActivity.class);
int pendingIntentFlags = PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT;
PendingIntent pendingIntent = TaskStackBuilder.create(context) PendingIntent pendingIntent = TaskStackBuilder.create(context)
.addParentStack(TrackListActivity.class) .addParentStack(TrackListActivity.class)
.addNextIntent(intent) .addNextIntent(intent)
.getPendingIntent(0, pendingIntentFlags); .getPendingIntent(0, PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT);
updateGPSStatus(context.getString(R.string.gps_starting)); updateGPSStatus(context.getString(R.string.gps_starting));
@@ -88,6 +90,19 @@ class TrackRecordingServiceNotificationManager implements SharedPreferences.OnSh
updateNotification(); updateNotification();
} }
public void onRecordingStarted(Context context, @NonNull Track.Id trackId) {
Intent intent = IntentUtils.newIntent(context, TrackRecordingActivity.class)
.putExtra(TrackRecordingActivity.EXTRA_TRACK_ID, trackId);
PendingIntent pendingIntent = TaskStackBuilder.create(context)
.addParentStack(TrackListActivity.class)
.addNextIntent(intent)
.getPendingIntent(0, PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT);
notificationBuilder.setContentIntent(pendingIntent);
updateNotification();
}
void updateTrackPoint(Context context, TrackStatistics trackStatistics, TrackPoint trackPoint, Distance thresholdHorizontalAccuracy) { void updateTrackPoint(Context context, TrackStatistics trackStatistics, TrackPoint trackPoint, Distance thresholdHorizontalAccuracy) {
String formattedAccuracy = context.getString(R.string.value_none); String formattedAccuracy = context.getString(R.string.value_none);