forked from upstream-mirrors/OpenTracks
Bugfix: AnnouncementPeriodicTask does not need to register as TrackRecordingService.Listener.
This commit is contained in:
@@ -192,6 +192,10 @@ public class TrackRecordingService extends Service implements HandlerServer.Hand
|
|||||||
return serviceStatus.getRecordingTrackPaused();
|
return serviceStatus.getRecordingTrackPaused();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Track.Id getRecordingTrackId() {
|
||||||
|
return serviceStatus.getRecordingTrackId();
|
||||||
|
}
|
||||||
|
|
||||||
public TrackStatistics getTrackStatistics() {
|
public TrackStatistics getTrackStatistics() {
|
||||||
if (trackStatisticsUpdater == null) {
|
if (trackStatisticsUpdater == null) {
|
||||||
return null;
|
return null;
|
||||||
@@ -569,6 +573,12 @@ public class TrackRecordingService extends Service implements HandlerServer.Hand
|
|||||||
serviceStatus.addListener(listener);
|
serviceStatus.addListener(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO Check that this is used everywhere, where addListener is called!
|
||||||
|
//Otherwise, we keep objects in referenced and waste memory until this service instance is terminated.
|
||||||
|
public void removeListener(@NonNull TrackRecordingServiceStatus.Listener listener) {
|
||||||
|
serviceStatus.removeListener(listener);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inserts a trackPoint if this trackPoint is different than lastValidTrackPoint.
|
* Inserts a trackPoint if this trackPoint is different than lastValidTrackPoint.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ public class TrackRecordingServiceStatus {
|
|||||||
|
|
||||||
private final List<Listener> listeners = new ArrayList<>();
|
private final List<Listener> listeners = new ArrayList<>();
|
||||||
|
|
||||||
public void addListener(@NonNull Listener listener) {
|
void addListener(@NonNull Listener listener) {
|
||||||
if (this.listeners.contains(listener)) {
|
if (this.listeners.contains(listener)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -28,6 +28,10 @@ public class TrackRecordingServiceStatus {
|
|||||||
listener.onTrackRecordingPaused(recordingTrackPaused);
|
listener.onTrackRecordingPaused(recordingTrackPaused);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void removeListener(@NonNull Listener listener) {
|
||||||
|
this.listeners.remove(listener);
|
||||||
|
}
|
||||||
|
|
||||||
public boolean getRecordingTrackPaused() {
|
public boolean getRecordingTrackPaused() {
|
||||||
return this.recordingTrackPaused;
|
return this.recordingTrackPaused;
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-14
@@ -24,6 +24,7 @@ import android.speech.tts.UtteranceProgressListener;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import de.dennisguse.opentracks.content.data.Distance;
|
import de.dennisguse.opentracks.content.data.Distance;
|
||||||
@@ -32,7 +33,6 @@ import de.dennisguse.opentracks.content.data.TrackPoint;
|
|||||||
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.TrackRecordingService;
|
||||||
import de.dennisguse.opentracks.services.TrackRecordingServiceStatus;
|
|
||||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||||
import de.dennisguse.opentracks.util.AnnouncementUtils;
|
import de.dennisguse.opentracks.util.AnnouncementUtils;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.util.PreferencesUtils;
|
||||||
@@ -58,8 +58,6 @@ public class AnnouncementPeriodicTask implements PeriodicTask {
|
|||||||
|
|
||||||
private final ContentProviderUtils contentProviderUtils;
|
private final ContentProviderUtils contentProviderUtils;
|
||||||
|
|
||||||
private Track.Id recordingTrackId;
|
|
||||||
|
|
||||||
private final AudioManager.OnAudioFocusChangeListener audioFocusChangeListener = new AudioManager.OnAudioFocusChangeListener() {
|
private final AudioManager.OnAudioFocusChangeListener audioFocusChangeListener = new AudioManager.OnAudioFocusChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onAudioFocusChange(int focusChange) {
|
public void onAudioFocusChange(int focusChange) {
|
||||||
@@ -142,13 +140,8 @@ public class AnnouncementPeriodicTask implements PeriodicTask {
|
|||||||
Log.e(TAG, "TrackRecordingService is null.");
|
Log.e(TAG, "TrackRecordingService is null.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
trackRecordingService.addListener(new TrackRecordingServiceStatus.Listener() {
|
|
||||||
@Override
|
announce(trackRecordingService.getRecordingTrackId(), trackRecordingService.getTrackStatistics());
|
||||||
public void onTrackRecordingId(Track.Id trackId) {
|
|
||||||
recordingTrackId = trackId;
|
|
||||||
announce(trackRecordingService.getTrackStatistics());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -156,7 +149,7 @@ public class AnnouncementPeriodicTask implements PeriodicTask {
|
|||||||
*
|
*
|
||||||
* @param trackStatistics the track statistics
|
* @param trackStatistics the track statistics
|
||||||
*/
|
*/
|
||||||
private void announce(TrackStatistics trackStatistics) {
|
private void announce(Track.Id trackId, TrackStatistics trackStatistics) {
|
||||||
if (trackStatistics == null) {
|
if (trackStatistics == null) {
|
||||||
Log.e(TAG, "TrackStatistics is null.");
|
Log.e(TAG, "TrackStatistics is null.");
|
||||||
return;
|
return;
|
||||||
@@ -175,14 +168,15 @@ public class AnnouncementPeriodicTask implements PeriodicTask {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (audioManager.getMode() == AudioManager.MODE_IN_CALL || audioManager.getMode() == AudioManager.MODE_IN_COMMUNICATION) {
|
if (Arrays.asList(AudioManager.MODE_IN_CALL, AudioManager.MODE_IN_COMMUNICATION)
|
||||||
|
.contains(audioManager.getMode())) {
|
||||||
Log.i(TAG, "Speech is not allowed at this time.");
|
Log.i(TAG, "Speech is not allowed at this time.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Track track = contentProviderUtils.getTrack(recordingTrackId);
|
Track track = contentProviderUtils.getTrack(trackId);
|
||||||
if (track == null) {
|
if (track == null) {
|
||||||
Log.i(TAG, "It doesn't exists a track with trackid = " + recordingTrackId);
|
Log.i(TAG, "It doesn't exists a track with trackid = " + track);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String category = track.getCategory();
|
String category = track.getCategory();
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ public class TrackStatisticsUpdater {
|
|||||||
*/
|
*/
|
||||||
public void addTrackPoint(TrackPoint trackPoint, Distance minGPSDistance) {
|
public void addTrackPoint(TrackPoint trackPoint, Distance minGPSDistance) {
|
||||||
internalAddTrackPoint(trackPoint, minGPSDistance);
|
internalAddTrackPoint(trackPoint, minGPSDistance);
|
||||||
Log.d(TAG, this.toString());
|
Log.v(TAG, this.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void internalAddTrackPoint(TrackPoint trackPoint, Distance minGPSDistance) {
|
private void internalAddTrackPoint(TrackPoint trackPoint, Distance minGPSDistance) {
|
||||||
|
|||||||
Reference in New Issue
Block a user