Parse speed in location messages
This commit is contained in:
parent
c8dc6c29ea
commit
c44da1728a
1 changed files with 20 additions and 6 deletions
|
@ -256,12 +256,7 @@ object OsmandLocationUtils {
|
||||||
}
|
}
|
||||||
s.startsWith(SPEED_PREFIX) -> {
|
s.startsWith(SPEED_PREFIX) -> {
|
||||||
val speedStr = s.removePrefix(SPEED_PREFIX)
|
val speedStr = s.removePrefix(SPEED_PREFIX)
|
||||||
try {
|
res.speed = parseSpeed(speedStr)
|
||||||
val speed = speedStr.split(" ").first()
|
|
||||||
res.speed = speed.toDouble()
|
|
||||||
} catch (e: Exception) {
|
|
||||||
e.printStackTrace()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
s.startsWith(BEARING_PREFIX) -> {
|
s.startsWith(BEARING_PREFIX) -> {
|
||||||
val bearingStr = s.removePrefix(BEARING_PREFIX)
|
val bearingStr = s.removePrefix(BEARING_PREFIX)
|
||||||
|
@ -335,6 +330,25 @@ object OsmandLocationUtils {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun parseSpeed(speedS: String): Double {
|
||||||
|
try {
|
||||||
|
val speedSplit = speedS.split(" ")
|
||||||
|
val speedVal = speedSplit.first().toDouble()
|
||||||
|
val speedFormat = OsmandFormatter.SpeedConstants.values().firstOrNull { it.getDefaultString() == speedSplit.last() }
|
||||||
|
return when (speedFormat) {
|
||||||
|
OsmandFormatter.SpeedConstants.KILOMETERS_PER_HOUR -> speedVal / 3.6f
|
||||||
|
OsmandFormatter.SpeedConstants.MILES_PER_HOUR -> (speedVal / 3.6f) / (OsmandFormatter.METERS_IN_KILOMETER / OsmandFormatter.METERS_IN_ONE_MILE)
|
||||||
|
OsmandFormatter.SpeedConstants.NAUTICALMILES_PER_HOUR -> (speedVal / 3.6f) / (OsmandFormatter.METERS_IN_KILOMETER / OsmandFormatter.METERS_IN_ONE_NAUTICALMILE)
|
||||||
|
OsmandFormatter.SpeedConstants.MINUTES_PER_KILOMETER -> (OsmandFormatter.METERS_IN_KILOMETER / speedVal) / 60
|
||||||
|
OsmandFormatter.SpeedConstants.MINUTES_PER_MILE -> (OsmandFormatter.METERS_IN_ONE_MILE / speedVal) / 60
|
||||||
|
else -> speedVal
|
||||||
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
e.printStackTrace()
|
||||||
|
}
|
||||||
|
return 0.0
|
||||||
|
}
|
||||||
|
|
||||||
fun parseDistance(distanceS: String): Double {
|
fun parseDistance(distanceS: String): Double {
|
||||||
try {
|
try {
|
||||||
val distanceSplit = distanceS.split(" ")
|
val distanceSplit = distanceS.split(" ")
|
||||||
|
|
Loading…
Reference in a new issue