do not add the distances between "recording paused" and "recording resumed"
This commit is contained in:
parent
37a813717e
commit
d68a767e3e
5 changed files with 27 additions and 14 deletions
|
@ -11,8 +11,8 @@ android {
|
||||||
applicationId 'org.y20k.trackbook'
|
applicationId 'org.y20k.trackbook'
|
||||||
minSdkVersion 25
|
minSdkVersion 25
|
||||||
targetSdkVersion 27
|
targetSdkVersion 27
|
||||||
versionCode 38
|
versionCode 39
|
||||||
versionName '2.0.1'
|
versionName '2.0.2'
|
||||||
resConfigs "en", "da", "de", "fr", "id", "it", "ja", "nb-rNO", "nl", "sv", "zh-rCN"
|
resConfigs "en", "da", "de", "fr", "id", "it", "ja", "nb-rNO", "nl", "sv", "zh-rCN"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -63,6 +63,7 @@ class TrackerService(): Service(), CoroutineScope, SensorEventListener {
|
||||||
var locationAccuracyThreshold: Int = Keys.DEFAULT_THRESHOLD_LOCATION_ACCURACY
|
var locationAccuracyThreshold: Int = Keys.DEFAULT_THRESHOLD_LOCATION_ACCURACY
|
||||||
var currentBestLocation: Location = LocationHelper.getDefaultLocation()
|
var currentBestLocation: Location = LocationHelper.getDefaultLocation()
|
||||||
var stepCountOffset: Float = 0f
|
var stepCountOffset: Float = 0f
|
||||||
|
var resumed: Boolean = false
|
||||||
var track: Track = Track()
|
var track: Track = Track()
|
||||||
var gpsLocationListenerRegistered: Boolean = false
|
var gpsLocationListenerRegistered: Boolean = false
|
||||||
var networkLocationListenerRegistered: Boolean = false
|
var networkLocationListenerRegistered: Boolean = false
|
||||||
|
@ -213,6 +214,8 @@ class TrackerService(): Service(), CoroutineScope, SensorEventListener {
|
||||||
val lastWayPointIndex = track.wayPoints.size - 1
|
val lastWayPointIndex = track.wayPoints.size - 1
|
||||||
track.wayPoints.get(lastWayPointIndex).isStopOver = true
|
track.wayPoints.get(lastWayPointIndex).isStopOver = true
|
||||||
}
|
}
|
||||||
|
// set resumed flag
|
||||||
|
resumed = true
|
||||||
// calculate length of recording break
|
// calculate length of recording break
|
||||||
track.recordingPaused = TrackHelper.calculateRecordingPaused(track.recordingStop)
|
track.recordingPaused = TrackHelper.calculateRecordingPaused(track.recordingStop)
|
||||||
LogHelper.e(TAG, "We took a break for ${DateTimeHelper.convertToReadableTime(this, track.recordingPaused)}") // todo remove
|
LogHelper.e(TAG, "We took a break for ${DateTimeHelper.convertToReadableTime(this, track.recordingPaused)}") // todo remove
|
||||||
|
@ -457,7 +460,14 @@ class TrackerService(): Service(), CoroutineScope, SensorEventListener {
|
||||||
private val periodicTrackUpdate: Runnable = object : Runnable {
|
private val periodicTrackUpdate: Runnable = object : Runnable {
|
||||||
override fun run() {
|
override fun run() {
|
||||||
// add waypoint to track - step count is continuously updated in onSensorChanged
|
// add waypoint to track - step count is continuously updated in onSensorChanged
|
||||||
track = TrackHelper.addWayPointToTrack(track, currentBestLocation, locationAccuracyThreshold)
|
val result: Pair<Track, Boolean> = TrackHelper.addWayPointToTrack(track, currentBestLocation, locationAccuracyThreshold, resumed)
|
||||||
|
// get track from result
|
||||||
|
track = result.first
|
||||||
|
// check if waypoint was successfully added (= result.second)
|
||||||
|
if (resumed && result.second) {
|
||||||
|
// reset resumed flag, if necessary
|
||||||
|
resumed = false
|
||||||
|
}
|
||||||
// update notification
|
// update notification
|
||||||
displayNotification()
|
displayNotification()
|
||||||
// save temp track using GlobalScope.launch = fire & forget (no return value from save)
|
// save temp track using GlobalScope.launch = fire & forget (no return value from save)
|
||||||
|
|
|
@ -40,7 +40,6 @@ class NotificationHelper(private val trackerService: TrackerService) {
|
||||||
private val TAG: String = LogHelper.makeLogTag(NotificationHelper::class.java)
|
private val TAG: String = LogHelper.makeLogTag(NotificationHelper::class.java)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Main class variables */
|
/* Main class variables */
|
||||||
private val notificationManager: NotificationManager = trackerService.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
private val notificationManager: NotificationManager = trackerService.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ object TrackHelper {
|
||||||
|
|
||||||
|
|
||||||
/* Adds given locatiom as waypoint to track */
|
/* Adds given locatiom as waypoint to track */
|
||||||
fun addWayPointToTrack(track: Track, location: Location, locationAccuracyThreshold: Int): Track {
|
fun addWayPointToTrack(track: Track, location: Location, locationAccuracyThreshold: Int, resumed: Boolean): Pair<Track, Boolean> {
|
||||||
|
|
||||||
// get previous location
|
// get previous location
|
||||||
val previousLocation: Location?
|
val previousLocation: Location?
|
||||||
|
@ -69,8 +69,10 @@ object TrackHelper {
|
||||||
&& LocationHelper.isDifferentEnough(previousLocation, location))
|
&& LocationHelper.isDifferentEnough(previousLocation, location))
|
||||||
|
|
||||||
if (shouldBeAdded) {
|
if (shouldBeAdded) {
|
||||||
// update distance
|
// update distance (do not update if resumed -> we do not want to add values calculated during a recording pause)
|
||||||
track.length = track.length + LocationHelper.calculateDistance(previousLocation, location)
|
if (!resumed) {
|
||||||
|
track.length = track.length + LocationHelper.calculateDistance(previousLocation, location)
|
||||||
|
}
|
||||||
|
|
||||||
if (location.altitude != 0.0) {
|
if (location.altitude != 0.0) {
|
||||||
// update altitude values
|
// update altitude values
|
||||||
|
@ -78,16 +80,18 @@ object TrackHelper {
|
||||||
track.maxAltitude = location.altitude
|
track.maxAltitude = location.altitude
|
||||||
track.minAltitude = location.altitude
|
track.minAltitude = location.altitude
|
||||||
} else {
|
} else {
|
||||||
// calculate elevation values
|
// calculate elevation values (upwards / downwards movements)
|
||||||
val elevationDifferences: Pair<Double, Double> = LocationHelper.calculateElevationDifferences(previousLocation, location, track)
|
val elevationDifferences: Pair<Double, Double> = LocationHelper.calculateElevationDifferences(previousLocation, location, track)
|
||||||
// check if significant differences were calculated
|
// check if any differences were calculated
|
||||||
if (elevationDifferences != Pair(track.positiveElevation, track.negativeElevation)) {
|
if (elevationDifferences != Pair(track.positiveElevation, track.negativeElevation)) {
|
||||||
// update altitude values
|
// update altitude values
|
||||||
if (location.altitude > track.maxAltitude) track.maxAltitude = location.altitude
|
if (location.altitude > track.maxAltitude) track.maxAltitude = location.altitude
|
||||||
if (location.altitude < track.minAltitude) track.minAltitude = location.altitude
|
if (location.altitude < track.minAltitude) track.minAltitude = location.altitude
|
||||||
// update elevation values
|
// update elevation values (do not update if resumed -> we do not want to add values calculated during a recording pause)
|
||||||
track.positiveElevation = elevationDifferences.first
|
if (!resumed) {
|
||||||
track.negativeElevation = elevationDifferences.second
|
track.positiveElevation = elevationDifferences.first
|
||||||
|
track.negativeElevation = elevationDifferences.second
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -114,7 +118,7 @@ object TrackHelper {
|
||||||
track.wayPoints.add(WayPoint(location.provider, location.latitude, location.longitude, location.altitude, location.accuracy, location.time, track.length, numberOfSatellites))
|
track.wayPoints.add(WayPoint(location.provider, location.latitude, location.longitude, location.altitude, location.accuracy, location.time, track.length, numberOfSatellites))
|
||||||
}
|
}
|
||||||
|
|
||||||
return track
|
return Pair(track, shouldBeAdded)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ buildscript {
|
||||||
|
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:3.6.0'
|
classpath 'com.android.tools.build:gradle:3.6.1'
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.2.0"
|
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.2.0"
|
||||||
// NOTE: Do not place your application dependencies here; they belong
|
// NOTE: Do not place your application dependencies here; they belong
|
||||||
|
|
Loading…
Reference in a new issue