From 49219de46ae24db40963615b9fa3d4531dd6e214 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Sun, 2 May 2021 08:13:05 +0200 Subject: [PATCH] GPSStatus: update initial and final status. --- .../services/TrackRecordingService.java | 20 +++++++++++-------- .../services/handlers/GpsStatus.java | 8 +++++++- .../services/handlers/HandlerServer.java | 4 ---- .../services/handlers/LocationHandler.java | 1 + 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java index 94cb8ddfd..bc823184d 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java @@ -577,7 +577,10 @@ public class TrackRecordingService extends Service implements HandlerServer.Hand public void newGpsStatus(GpsStatusValue gpsStatusValue) { notificationManager.updateContent(getString(gpsStatusValue.message)); - gpsStatusObservable.postValue(gpsStatusValue); + //TODO This check should not be necessary, but prevents a crash; somehow the shutdown is not working correctly as we should not receive a notification then. + if (gpsStatusObservable != null) { + gpsStatusObservable.postValue(gpsStatusValue); + } } /** @@ -767,13 +770,14 @@ public class TrackRecordingService extends Service implements HandlerServer.Hand return isRecording() && !isPaused(); } - public RecordingStatus pause() { - return new RecordingStatus(getTrackId(), true); - } - - public RecordingStatus record(@NonNull Track.Id track) { - return new RecordingStatus(trackId, false); - } +// TODO Use +// public RecordingStatus pause() { +// return new RecordingStatus(getTrackId(), true); +// } +// +// public RecordingStatus record(@NonNull Track.Id trackId) { +// return new RecordingStatus(trackId, false); +// } public RecordingStatus stop() { return STATUS_DEFAULT; diff --git a/src/main/java/de/dennisguse/opentracks/services/handlers/GpsStatus.java b/src/main/java/de/dennisguse/opentracks/services/handlers/GpsStatus.java index ae59eb1c7..0172ebc06 100644 --- a/src/main/java/de/dennisguse/opentracks/services/handlers/GpsStatus.java +++ b/src/main/java/de/dennisguse/opentracks/services/handlers/GpsStatus.java @@ -14,7 +14,7 @@ import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.util.PreferencesUtils; /** - * This class handle GPS status according to received locations and some thresholds. + * This class handle GPS status according to received locations` and some thresholds. */ //TODO should handle sharedpreference changes class GpsStatus { @@ -56,6 +56,7 @@ class GpsStatus { public void stop() { stopped = true; + sendStatus(gpsStatus, GpsStatusValue.GPS_NONE); } } @@ -75,10 +76,15 @@ class GpsStatus { gpsStatusHandler = new Handler(); } + public void start() { + client.onGpsStatusChanged(GpsStatusValue.GPS_NONE, GpsStatusValue.GPS_ENABLED); + } + /** * The client that uses GpsStatus has to call this method to stop the Runnable if needed. */ public void stop() { + client.onGpsStatusChanged(gpsStatus, GpsStatusValue.GPS_NONE); client = null; if (gpsStatusRunner != null) { gpsStatusRunner.stop(); diff --git a/src/main/java/de/dennisguse/opentracks/services/handlers/HandlerServer.java b/src/main/java/de/dennisguse/opentracks/services/handlers/HandlerServer.java index 709180cfb..89f1b8d34 100644 --- a/src/main/java/de/dennisguse/opentracks/services/handlers/HandlerServer.java +++ b/src/main/java/de/dennisguse/opentracks/services/handlers/HandlerServer.java @@ -63,10 +63,6 @@ public class HandlerServer { service.newGpsStatus(gpsStatusValue); } - public GpsStatusValue getGpsStatus() { - return locationHandler.getGpsStatus(); - } - public interface HandlerServerInterface { void newTrackPoint(TrackPoint trackPoint, int gpsAccuracy); void newGpsStatus(GpsStatusValue gpsStatusValue); diff --git a/src/main/java/de/dennisguse/opentracks/services/handlers/LocationHandler.java b/src/main/java/de/dennisguse/opentracks/services/handlers/LocationHandler.java index d4227e313..889661c53 100644 --- a/src/main/java/de/dennisguse/opentracks/services/handlers/LocationHandler.java +++ b/src/main/java/de/dennisguse/opentracks/services/handlers/LocationHandler.java @@ -38,6 +38,7 @@ class LocationHandler implements HandlerServer.Handler, LocationListener, GpsSta gpsStatus = new GpsStatus(context, this); locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); registerLocationListener(); + gpsStatus.start(); } @Override