forked from upstream-mirrors/OpenTracks
Track recording service handles the status of recording: track's id, pause and GPS status.
Created an interface for all components that want to know about recording status through the service. All interface's methods are optional so every component can implement what they need. Fixes #388.
This commit is contained in:
+10
-1
@@ -31,6 +31,7 @@ import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||
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.TrackRecordingServiceStatus;
|
||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||
import de.dennisguse.opentracks.util.AnnouncementUtils;
|
||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
||||
@@ -57,6 +58,8 @@ public class AnnouncementPeriodicTask implements PeriodicTask {
|
||||
|
||||
private final ContentProviderUtils contentProviderUtils;
|
||||
|
||||
private Track.Id recordingTrackId;
|
||||
|
||||
private final AudioManager.OnAudioFocusChangeListener audioFocusChangeListener = new AudioManager.OnAudioFocusChangeListener() {
|
||||
@Override
|
||||
public void onAudioFocusChange(int focusChange) {
|
||||
@@ -139,6 +142,12 @@ public class AnnouncementPeriodicTask implements PeriodicTask {
|
||||
Log.e(TAG, "TrackRecordingService is null.");
|
||||
return;
|
||||
}
|
||||
trackRecordingService.addListener(new TrackRecordingServiceStatus.Listener() {
|
||||
@Override
|
||||
public void onTrackRecordingId(Track.Id trackId) {
|
||||
recordingTrackId = trackId;
|
||||
}
|
||||
});
|
||||
announce(trackRecordingService.getTrackStatistics());
|
||||
}
|
||||
|
||||
@@ -171,7 +180,7 @@ public class AnnouncementPeriodicTask implements PeriodicTask {
|
||||
return;
|
||||
}
|
||||
|
||||
Track track = contentProviderUtils.getTrack(PreferencesUtils.getRecordingTrackId(sharedPreferences, context));
|
||||
Track track = contentProviderUtils.getTrack(recordingTrackId);
|
||||
String category = track != null ? track.getCategory() : "";
|
||||
|
||||
//TODO Querying all TrackPoints all the time is inefficient; use TrackDataHub or something else.
|
||||
|
||||
Reference in New Issue
Block a user