Timezone support: store timezone offset per Track.

When a recording is started the offset of the phone is used.
Timezone is exported to KML and GPX.

Fixes #301.
This commit is contained in:
Dennis Guse
2021-12-07 22:39:40 +01:00
parent 7193171a09
commit 6d04659370
16 changed files with 175 additions and 55 deletions
@@ -9,6 +9,8 @@ import android.util.Pair;
import androidx.annotation.NonNull;
import java.time.ZoneOffset;
import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.data.Distance;
import de.dennisguse.opentracks.content.data.Marker;
@@ -47,9 +49,9 @@ class TrackRecordingManager {
contentProviderUtils = new ContentProviderUtils(context);
}
Track.Id start(TrackPoint segmentStartTrackPoint) {
Track.Id start(TrackPoint segmentStartTrackPoint, ZoneOffset zoneOffset) {
// Create new track
Track track = new Track();
Track track = new Track(zoneOffset);
trackId = contentProviderUtils.insertTrack(track);
track.setId(trackId);
@@ -34,6 +34,7 @@ import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import java.time.Duration;
import java.time.ZoneOffset;
import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.TrackListActivity;
@@ -222,7 +223,9 @@ public class TrackRecordingService extends Service implements TrackPointCreator.
}
// Set recording status
Track.Id trackId = trackRecordingManager.start(trackPointCreator.createSegmentStartManual());
TrackPoint segmentStartManual = trackPointCreator.createSegmentStartManual();
ZoneOffset zoneOffset = ZoneOffset.systemDefault().getRules().getOffset(segmentStartManual.getTime());
Track.Id trackId = trackRecordingManager.start(segmentStartManual, zoneOffset);
updateRecordingStatus(RecordingStatus.record(trackId));
startRecording();