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); } }); }