forked from upstream-mirrors/OpenTracks
TrackDataHub does not need to register for status changes of TrackRecordingService.
This is handled by TrackRecordingActivity alone. Part of #719.
This commit is contained in:
@@ -29,7 +29,7 @@ import de.dennisguse.opentracks.util.IntentUtils;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* An abstract class for the following common tasks across
|
* An abstract class for the following common tasks across
|
||||||
* {@link TrackListActivity}, {@link TrackRecordedActivity}, and {@link TrackRecordedActivity}:
|
* {@link TrackListActivity} and {@link TrackRecordedActivity}:
|
||||||
* <p>
|
* <p>
|
||||||
* - share track <br>
|
* - share track <br>
|
||||||
* - delete tracks <br>
|
* - delete tracks <br>
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ import de.dennisguse.opentracks.util.IntentUtils;
|
|||||||
* @author Leif Hendrik Wilden
|
* @author Leif Hendrik Wilden
|
||||||
* @author Rodrigo Damazio
|
* @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 {
|
public class TrackRecordedActivity extends AbstractListActivity implements ConfirmDeleteDialogFragment.ConfirmDeleteCaller, TrackActivityDataHubInterface, TrackRecordingServiceStatus.Listener {
|
||||||
|
|
||||||
private static final String TAG = TrackRecordedActivity.class.getSimpleName();
|
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);
|
ViewCompat.setTransitionName(viewIcon, TrackRecordedActivity.VIEW_TRACK_ICON);
|
||||||
startPostponedEnterTransition();
|
startPostponedEnterTransition();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -87,6 +87,8 @@ public class TrackRecordingActivity extends AbstractActivity implements ChooseAc
|
|||||||
|
|
||||||
// A recording track is on.
|
// A recording track is on.
|
||||||
trackDataHub.loadTrack(trackId);
|
trackDataHub.loadTrack(trackId);
|
||||||
|
trackDataHub.setRecordingTrackId(trackId);
|
||||||
|
|
||||||
trackController.update(true, false);
|
trackController.update(true, false);
|
||||||
trackController.onResume(true, recordingTrackPaused);
|
trackController.onResume(true, recordingTrackPaused);
|
||||||
}
|
}
|
||||||
@@ -404,17 +406,20 @@ public class TrackRecordingActivity extends AbstractActivity implements ChooseAc
|
|||||||
public void onTrackRecordingPaused(boolean isPaused) {
|
public void onTrackRecordingPaused(boolean isPaused) {
|
||||||
if (recordingTrackPaused != isPaused) {
|
if (recordingTrackPaused != isPaused) {
|
||||||
trackController.update(true, isPaused);
|
trackController.update(true, isPaused);
|
||||||
|
trackDataHub.setRecordingTrackPaused(isPaused);
|
||||||
}
|
}
|
||||||
recordingTrackPaused = isPaused;
|
recordingTrackPaused = isPaused;
|
||||||
setLockscreenPolicy();
|
setLockscreenPolicy();
|
||||||
setScreenOnPolicy();
|
setScreenOnPolicy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO Why should this be interesting? This activity is only used for currently recording tracks.
|
||||||
@Override
|
@Override
|
||||||
public void onTrackRecordingId(Track.Id newTrackId) {
|
public void onTrackRecordingId(Track.Id newTrackId) {
|
||||||
if (newTrackId != null && !newTrackId.equals(trackId)) {
|
if (newTrackId != null && !newTrackId.equals(trackId)) {
|
||||||
trackId = newTrackId;
|
trackId = newTrackId;
|
||||||
trackController.update(true, recordingTrackPaused);
|
trackController.update(true, recordingTrackPaused);
|
||||||
|
trackDataHub.setRecordingTrackId(newTrackId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,9 +38,6 @@ import de.dennisguse.opentracks.content.data.TrackPointsColumns;
|
|||||||
import de.dennisguse.opentracks.content.data.TracksColumns;
|
import de.dennisguse.opentracks.content.data.TracksColumns;
|
||||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||||
import de.dennisguse.opentracks.content.provider.TrackPointIterator;
|
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.
|
* Track data hub.
|
||||||
@@ -50,7 +47,8 @@ import de.dennisguse.opentracks.services.TrackRecordingServiceStatus;
|
|||||||
*
|
*
|
||||||
* @author Rodrigo Damazio
|
* @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).
|
* Target number of track points displayed by the diagrams (recommended).
|
||||||
@@ -75,11 +73,12 @@ public class TrackDataHub implements TrackRecordingServiceStatus.Listener {
|
|||||||
private HandlerThread handlerThread;
|
private HandlerThread handlerThread;
|
||||||
private Handler handler;
|
private Handler handler;
|
||||||
|
|
||||||
private TrackRecordingServiceConnection trackRecordingServiceConnection;
|
|
||||||
|
|
||||||
// Preference values
|
|
||||||
private Track.Id selectedTrackId;
|
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;
|
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;
|
private boolean recordingTrackPaused;
|
||||||
|
|
||||||
// Track points sampling state
|
// Track points sampling state
|
||||||
@@ -92,13 +91,6 @@ public class TrackDataHub implements TrackRecordingServiceStatus.Listener {
|
|||||||
private ContentObserver markersTableObserver;
|
private ContentObserver markersTableObserver;
|
||||||
private ContentObserver trackPointsTableObserver;
|
private ContentObserver trackPointsTableObserver;
|
||||||
|
|
||||||
private final Runnable bindCallback = () -> {
|
|
||||||
TrackRecordingService service = trackRecordingServiceConnection.getServiceIfBound();
|
|
||||||
if (service != null) {
|
|
||||||
service.addListener(TrackDataHub.this);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public TrackDataHub(Context context) {
|
public TrackDataHub(Context context) {
|
||||||
this(context, new TrackDataManager(), new ContentProviderUtils(context), TARGET_DISPLAYED_TRACKPOINTS);
|
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);
|
contentResolver.registerContentObserver(TrackPointsColumns.CONTENT_URI_BY_ID, false, trackPointsTableObserver);
|
||||||
|
|
||||||
trackRecordingServiceConnection = new TrackRecordingServiceConnection(bindCallback);
|
|
||||||
trackRecordingServiceConnection.bind(context);
|
|
||||||
|
|
||||||
handler.post(() -> {
|
handler.post(() -> {
|
||||||
if (started) {
|
if (started) {
|
||||||
loadDataForAll();
|
loadDataForAll();
|
||||||
@@ -177,8 +166,6 @@ public class TrackDataHub implements TrackRecordingServiceStatus.Listener {
|
|||||||
handlerThread = null;
|
handlerThread = null;
|
||||||
}
|
}
|
||||||
handler = null;
|
handler = null;
|
||||||
|
|
||||||
trackRecordingServiceConnection.unbind(context);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void loadTrack(final @NonNull Track.Id trackId) {
|
public void loadTrack(final @NonNull Track.Id trackId) {
|
||||||
@@ -425,13 +412,11 @@ public class TrackDataHub implements TrackRecordingServiceStatus.Listener {
|
|||||||
lastSeenTrackPointId = null;
|
lastSeenTrackPointId = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void setRecordingTrackId(Track.Id recordingTrackId) {
|
||||||
public void onTrackRecordingPaused(boolean isPaused) {
|
this.recordingTrackId = recordingTrackId;
|
||||||
recordingTrackPaused = isPaused;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void setRecordingTrackPaused(boolean recordingTrackPaused) {
|
||||||
public void onTrackRecordingId(Track.Id trackId) {
|
this.recordingTrackPaused = recordingTrackPaused;
|
||||||
recordingTrackId = trackId;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -306,6 +306,8 @@ public class ChartFragment extends Fragment implements TrackDataListener {
|
|||||||
* Returns true if the selected track is recording.
|
* Returns true if the selected track is recording.
|
||||||
* Needs to be synchronized because trackDataHub can be accessed by multiple threads.
|
* 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() {
|
private synchronized boolean isSelectedTrackRecording() {
|
||||||
return trackDataHub != null && trackDataHub.isSelectedTrackRecording();
|
return trackDataHub != null && trackDataHub.isSelectedTrackRecording();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -175,7 +175,7 @@ public class StatisticsRecordedFragment extends Fragment {
|
|||||||
updateUI();
|
updateUI();
|
||||||
updateSensorUI();
|
updateSensorUI();
|
||||||
|
|
||||||
((TrackRecordedActivity) getActivity()).startPostponedEnterTransitionWith(viewBinding.statsActivityTypeIcon, viewBinding.statsNameValue);
|
((TrackRecordedActivity) getActivity()).startPostponedEnterTransitionWith(viewBinding.statsActivityTypeIcon);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user