diff --git a/src/main/java/de/dennisguse/opentracks/AbstractListActivity.java b/src/main/java/de/dennisguse/opentracks/AbstractListActivity.java index 65716774b..1d7dc9162 100644 --- a/src/main/java/de/dennisguse/opentracks/AbstractListActivity.java +++ b/src/main/java/de/dennisguse/opentracks/AbstractListActivity.java @@ -29,7 +29,7 @@ import de.dennisguse.opentracks.util.IntentUtils; /** * An abstract class for the following common tasks across - * {@link TrackListActivity}, {@link TrackRecordedActivity}, and {@link TrackRecordedActivity}: + * {@link TrackListActivity} and {@link TrackRecordedActivity}: *
* - share track
* - delete tracks
diff --git a/src/main/java/de/dennisguse/opentracks/TrackRecordedActivity.java b/src/main/java/de/dennisguse/opentracks/TrackRecordedActivity.java
index d77cebf7e..72e8d884b 100644
--- a/src/main/java/de/dennisguse/opentracks/TrackRecordedActivity.java
+++ b/src/main/java/de/dennisguse/opentracks/TrackRecordedActivity.java
@@ -53,6 +53,7 @@ import de.dennisguse.opentracks.util.IntentUtils;
* @author Leif Hendrik Wilden
* @author Rodrigo Damazio
*/
+//TODO Should not use TrackRecordingServiceConnection; only used to determine if there is NO current recording, to enable resume functionality.
public class TrackRecordedActivity extends AbstractListActivity implements ConfirmDeleteDialogFragment.ConfirmDeleteCaller, TrackActivityDataHubInterface, TrackRecordingServiceStatus.Listener {
private static final String TAG = TrackRecordedActivity.class.getSimpleName();
@@ -299,7 +300,7 @@ public class TrackRecordedActivity extends AbstractListActivity implements Confi
}
}
- public void startPostponedEnterTransitionWith(View viewIcon, View viewName) {
+ public void startPostponedEnterTransitionWith(View viewIcon) {
ViewCompat.setTransitionName(viewIcon, TrackRecordedActivity.VIEW_TRACK_ICON);
startPostponedEnterTransition();
}
diff --git a/src/main/java/de/dennisguse/opentracks/TrackRecordingActivity.java b/src/main/java/de/dennisguse/opentracks/TrackRecordingActivity.java
index 516f04bb4..bcdc010ec 100644
--- a/src/main/java/de/dennisguse/opentracks/TrackRecordingActivity.java
+++ b/src/main/java/de/dennisguse/opentracks/TrackRecordingActivity.java
@@ -87,6 +87,8 @@ public class TrackRecordingActivity extends AbstractActivity implements ChooseAc
// A recording track is on.
trackDataHub.loadTrack(trackId);
+ trackDataHub.setRecordingTrackId(trackId);
+
trackController.update(true, false);
trackController.onResume(true, recordingTrackPaused);
}
@@ -404,17 +406,20 @@ public class TrackRecordingActivity extends AbstractActivity implements ChooseAc
public void onTrackRecordingPaused(boolean isPaused) {
if (recordingTrackPaused != isPaused) {
trackController.update(true, isPaused);
+ trackDataHub.setRecordingTrackPaused(isPaused);
}
recordingTrackPaused = isPaused;
setLockscreenPolicy();
setScreenOnPolicy();
}
+ //TODO Why should this be interesting? This activity is only used for currently recording tracks.
@Override
public void onTrackRecordingId(Track.Id newTrackId) {
if (newTrackId != null && !newTrackId.equals(trackId)) {
trackId = newTrackId;
trackController.update(true, recordingTrackPaused);
+ trackDataHub.setRecordingTrackId(newTrackId);
}
}
}
diff --git a/src/main/java/de/dennisguse/opentracks/content/TrackDataHub.java b/src/main/java/de/dennisguse/opentracks/content/TrackDataHub.java
index b34254266..eeccbcc8a 100644
--- a/src/main/java/de/dennisguse/opentracks/content/TrackDataHub.java
+++ b/src/main/java/de/dennisguse/opentracks/content/TrackDataHub.java
@@ -38,9 +38,6 @@ import de.dennisguse.opentracks.content.data.TrackPointsColumns;
import de.dennisguse.opentracks.content.data.TracksColumns;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
import de.dennisguse.opentracks.content.provider.TrackPointIterator;
-import de.dennisguse.opentracks.services.TrackRecordingService;
-import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
-import de.dennisguse.opentracks.services.TrackRecordingServiceStatus;
/**
* Track data hub.
@@ -50,7 +47,8 @@ import de.dennisguse.opentracks.services.TrackRecordingServiceStatus;
*
* @author Rodrigo Damazio
*/
-public class TrackDataHub implements TrackRecordingServiceStatus.Listener {
+//TODO register contentobserver only for exact URL (incl. trackId) to not filter here.
+public class TrackDataHub {
/**
* Target number of track points displayed by the diagrams (recommended).
@@ -75,11 +73,12 @@ public class TrackDataHub implements TrackRecordingServiceStatus.Listener {
private HandlerThread handlerThread;
private Handler handler;
- private TrackRecordingServiceConnection trackRecordingServiceConnection;
-
- // Preference values
private Track.Id selectedTrackId;
+ @Deprecated
+ //TODO Is there a better way to handle this? e.g., passing information rather from Activity than from Activity to TrackDataHub
private Track.Id recordingTrackId;
+ @Deprecated
+ //TODO Is there a better way to handle this? e.g., passing information rather from Activity than from Activity to TrackDataHub
private boolean recordingTrackPaused;
// Track points sampling state
@@ -92,13 +91,6 @@ public class TrackDataHub implements TrackRecordingServiceStatus.Listener {
private ContentObserver markersTableObserver;
private ContentObserver trackPointsTableObserver;
- private final Runnable bindCallback = () -> {
- TrackRecordingService service = trackRecordingServiceConnection.getServiceIfBound();
- if (service != null) {
- service.addListener(TrackDataHub.this);
- }
- };
-
public TrackDataHub(Context context) {
this(context, new TrackDataManager(), new ContentProviderUtils(context), TARGET_DISPLAYED_TRACKPOINTS);
}
@@ -148,9 +140,6 @@ public class TrackDataHub implements TrackRecordingServiceStatus.Listener {
};
contentResolver.registerContentObserver(TrackPointsColumns.CONTENT_URI_BY_ID, false, trackPointsTableObserver);
- trackRecordingServiceConnection = new TrackRecordingServiceConnection(bindCallback);
- trackRecordingServiceConnection.bind(context);
-
handler.post(() -> {
if (started) {
loadDataForAll();
@@ -177,8 +166,6 @@ public class TrackDataHub implements TrackRecordingServiceStatus.Listener {
handlerThread = null;
}
handler = null;
-
- trackRecordingServiceConnection.unbind(context);
}
public void loadTrack(final @NonNull Track.Id trackId) {
@@ -425,13 +412,11 @@ public class TrackDataHub implements TrackRecordingServiceStatus.Listener {
lastSeenTrackPointId = null;
}
- @Override
- public void onTrackRecordingPaused(boolean isPaused) {
- recordingTrackPaused = isPaused;
+ public void setRecordingTrackId(Track.Id recordingTrackId) {
+ this.recordingTrackId = recordingTrackId;
}
- @Override
- public void onTrackRecordingId(Track.Id trackId) {
- recordingTrackId = trackId;
+ public void setRecordingTrackPaused(boolean recordingTrackPaused) {
+ this.recordingTrackPaused = recordingTrackPaused;
}
}
\ No newline at end of file
diff --git a/src/main/java/de/dennisguse/opentracks/fragments/ChartFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/ChartFragment.java
index dcacaaf7e..0fe73e1b5 100644
--- a/src/main/java/de/dennisguse/opentracks/fragments/ChartFragment.java
+++ b/src/main/java/de/dennisguse/opentracks/fragments/ChartFragment.java
@@ -306,6 +306,8 @@ public class ChartFragment extends Fragment implements TrackDataListener {
* Returns true if the selected track is recording.
* Needs to be synchronized because trackDataHub can be accessed by multiple threads.
*/
+ @Deprecated
+ //TODO Should not be dynamic but instead set while instantiating, i.e., newFragment().
private synchronized boolean isSelectedTrackRecording() {
return trackDataHub != null && trackDataHub.isSelectedTrackRecording();
}
diff --git a/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordedFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordedFragment.java
index af375ac33..7c8ce0e0d 100644
--- a/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordedFragment.java
+++ b/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordedFragment.java
@@ -175,7 +175,7 @@ public class StatisticsRecordedFragment extends Fragment {
updateUI();
updateSensorUI();
- ((TrackRecordedActivity) getActivity()).startPostponedEnterTransitionWith(viewBinding.statsActivityTypeIcon, viewBinding.statsNameValue);
+ ((TrackRecordedActivity) getActivity()).startPostponedEnterTransitionWith(viewBinding.statsActivityTypeIcon);
}
});
}