From 3926bbf1f936f15bc4058ec7251e81fc469bad39 Mon Sep 17 00:00:00 2001 From: Dimitris Date: Thu, 30 Apr 2026 07:10:35 +0200 Subject: [PATCH] FindStep Performance --- .../com/kouros/navigation/model/Simulation.kt | 2 +- .../kouros/navigation/car/RouteModelTest.kt | 64 ++++++++++--------- .../navigation/car/DeviceLocationManager.kt | 4 +- .../navigation/car/NavigationSession.kt | 4 -- .../java/com/kouros/navigation/data/Route.kt | 2 +- .../kouros/navigation/data/osrm/OsrmRoute.kt | 2 +- .../navigation/data/overpass/Overpass.kt | 2 +- .../kouros/navigation/data/route/Maneuver.kt | 2 +- .../data/tomtom/TomTomRepository.kt | 2 +- .../navigation/data/tomtom/TomTomRoute.kt | 2 +- .../navigation/data/valhalla/ValhallaRoute.kt | 2 +- .../navigation/model/RouteCalculator.kt | 11 ++-- .../data/src/main/res/values-de/strings.xml | 14 ++-- .../data/src/main/res/values-el/strings.xml | 14 ++-- .../data/src/main/res/values-pl/strings.xml | 14 ++-- 15 files changed, 70 insertions(+), 71 deletions(-) diff --git a/app/src/main/java/com/kouros/navigation/model/Simulation.kt b/app/src/main/java/com/kouros/navigation/model/Simulation.kt index 4d2e948..7592f1f 100644 --- a/app/src/main/java/com/kouros/navigation/model/Simulation.kt +++ b/app/src/main/java/com/kouros/navigation/model/Simulation.kt @@ -31,7 +31,7 @@ fun test(applicationContext: Context, routeModel: RouteModel) { for ((index, step) in routeModel.curLeg.steps.withIndex()) { for ((windex, waypoint) in step.maneuver.waypoints.withIndex()) { routeModel.updateLocation( - location(waypoint[0], waypoint[1]), navigationViewModel + waypoint, navigationViewModel ) val step = routeModel.currentStep() val nextStep = routeModel.nextStep() diff --git a/common/car/src/androidTest/java/com/kouros/navigation/car/RouteModelTest.kt b/common/car/src/androidTest/java/com/kouros/navigation/car/RouteModelTest.kt index 338043d..16a158d 100644 --- a/common/car/src/androidTest/java/com/kouros/navigation/car/RouteModelTest.kt +++ b/common/car/src/androidTest/java/com/kouros/navigation/car/RouteModelTest.kt @@ -33,38 +33,38 @@ class RouteModelTest { val routeModel = RouteModel() val location = Location(LocationManager.GPS_PROVIDER) - val distance = listOf( - 1046.0, - 1012.8, - 979.5, + 1046.5, + 1026.5, + 1012.0, + 979.4, 972.7, - 915.8, - 914.6, - 871.0, - 822.7, - 769.7, - 713.8, - 644.8, - 577.6, - 501.7, - 489.7, - 452.5, - 437.4, - 398.0, - 390.1, - 341.3, - 266.6, - 219.5, - 140.7, - 77.4, - 55.1, - 40.0, - 30.0, - 19.0, - 4.0 + 971.6, + 914.8, + 873.6, + 831.3, + 781.1, + 719.9, + 653.1, + 578.4, + 566.2, + 490.4, + 482.6, + 451.4, + 443.6, + 391.2, + 346.7, + 316.6, + 237.5, + 141.7, + 78.22, + 55.94, + 41.31, + 31.0, + 20.9, ) + @Before fun setup() { val appContext = InstrumentationRegistry.getInstrumentation().targetContext @@ -227,8 +227,7 @@ class RouteModelTest { @Test fun `leftStepDistance Inglolstädter `() { - - var location = location( 11.584352, 48.186771) + var location = location(11.584352, 48.186771) routeModel.updateLocation(location, NavigationViewModel(TomTomRepository())) var step = routeModel.currentStep() assertEquals(step.leftStepDistance, 1039.0, 1.0) @@ -248,6 +247,7 @@ class RouteModelTest { @Test fun leftStepDistance() { + val start = System.currentTimeMillis() for ((index, waypoint) in routeModel.curRoute.waypoints.withIndex()) { val curLocation = location(waypoint[0], waypoint[1]) if (routeModel.isNavigating()) { @@ -257,10 +257,12 @@ class RouteModelTest { NavigationViewModel(TomTomRepository()) ) val stepData = routeModel.currentStep() - // assertEquals(stepData.leftStepDistance, distance[index - 16], 1.0) + assertEquals(stepData.leftStepDistance, distance[index - 16], 1.0) } } } + val end = System.currentTimeMillis() - start + println("Time $end") } } diff --git a/common/car/src/main/java/com/kouros/navigation/car/DeviceLocationManager.kt b/common/car/src/main/java/com/kouros/navigation/car/DeviceLocationManager.kt index 1d4d3ea..6cfd317 100644 --- a/common/car/src/main/java/com/kouros/navigation/car/DeviceLocationManager.kt +++ b/common/car/src/main/java/com/kouros/navigation/car/DeviceLocationManager.kt @@ -107,8 +107,8 @@ class DeviceLocationManager( val lastLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER) if (lastLocation != null) { if (setIndividualLocation) { - onInitialLocation(lastLocation) - onLocationUpdate(lastLocation) + onInitialLocation(homeVogelhart) + onLocationUpdate(homeVogelhart) } else { onInitialLocation(lastLocation) onLocationUpdate(lastLocation) diff --git a/common/car/src/main/java/com/kouros/navigation/car/NavigationSession.kt b/common/car/src/main/java/com/kouros/navigation/car/NavigationSession.kt index f7b2db3..58b9e6b 100644 --- a/common/car/src/main/java/com/kouros/navigation/car/NavigationSession.kt +++ b/common/car/src/main/java/com/kouros/navigation/car/NavigationSession.kt @@ -459,7 +459,6 @@ class NavigationSession : CarSession(), NavigationListener, NavigationObserverCa * Snaps location to route and checks for deviation requiring reroute. */ private fun handleNavigationLocation(location: Location) { - val startTime = System.currentTimeMillis() routeModel.updateLocation(location, navigationViewModel) val snappedLocation = snapLocation(location, routeModel.route.maneuverLocations()) val streetName = routeModel.currentStep().street @@ -475,8 +474,6 @@ class NavigationSession : CarSession(), NavigationListener, NavigationObserverCa updateNavigationScreen() checkArrival() } - val endTime = System.currentTimeMillis() - startTime - //Log.d(TAG, "handleNavigationLocation: $endTime") } /** @@ -496,7 +493,6 @@ class NavigationSession : CarSession(), NavigationListener, NavigationObserverCa } else -> { surfaceRenderer.updateLocation(location, streetName) - } } return true diff --git a/common/data/src/main/java/com/kouros/navigation/data/Route.kt b/common/data/src/main/java/com/kouros/navigation/data/Route.kt index 688a1c7..ca98683 100644 --- a/common/data/src/main/java/com/kouros/navigation/data/Route.kt +++ b/common/data/src/main/java/com/kouros/navigation/data/Route.kt @@ -116,7 +116,7 @@ data class Route( val points = mutableListOf() for ((index,loc) in waypoints.withIndex()) { if (index >= wayPointIndex && points.size < 20) { - val point = Point.fromLngLat(loc[0], loc[1]) + val point = Point.fromLngLat(loc.longitude, loc.latitude) points.add(point) } } diff --git a/common/data/src/main/java/com/kouros/navigation/data/osrm/OsrmRoute.kt b/common/data/src/main/java/com/kouros/navigation/data/osrm/OsrmRoute.kt index d7f7361..63e2e12 100644 --- a/common/data/src/main/java/com/kouros/navigation/data/osrm/OsrmRoute.kt +++ b/common/data/src/main/java/com/kouros/navigation/data/osrm/OsrmRoute.kt @@ -48,7 +48,7 @@ class OsrmRoute { bearingBefore = step.maneuver.bearingBefore, bearingAfter = step.maneuver.bearingAfter, type = convertType(step.maneuver), - waypoints = points, + waypoints = points.map { location(it[0], it[1]) }, exit = step.maneuver.exit, location = location( step.maneuver.location[0], diff --git a/common/data/src/main/java/com/kouros/navigation/data/overpass/Overpass.kt b/common/data/src/main/java/com/kouros/navigation/data/overpass/Overpass.kt index 4223a5e..ddd01ef 100644 --- a/common/data/src/main/java/com/kouros/navigation/data/overpass/Overpass.kt +++ b/common/data/src/main/java/com/kouros/navigation/data/overpass/Overpass.kt @@ -58,7 +58,7 @@ class Overpass { |out body geom; """.trimMargin() - Log.d("OverpassApi", "Overpass Query: $searchQuery") + //Log.d("OverpassApi", "Overpass Query: $searchQuery") val connection = (URL(overpassUrl).openConnection() as HttpURLConnection).apply { requestMethod = "POST" setRequestProperty("Accept", "application/json") diff --git a/common/data/src/main/java/com/kouros/navigation/data/route/Maneuver.kt b/common/data/src/main/java/com/kouros/navigation/data/route/Maneuver.kt index 47b0425..7d33fad 100644 --- a/common/data/src/main/java/com/kouros/navigation/data/route/Maneuver.kt +++ b/common/data/src/main/java/com/kouros/navigation/data/route/Maneuver.kt @@ -6,7 +6,7 @@ data class Maneuver( val bearingBefore: Int = 0, val bearingAfter: Int = 0, val type: Int = 0, - val waypoints: List>, + val waypoints: List, val location: Location, val exit: Int = 0, val street: String = "", diff --git a/common/data/src/main/java/com/kouros/navigation/data/tomtom/TomTomRepository.kt b/common/data/src/main/java/com/kouros/navigation/data/tomtom/TomTomRepository.kt index d45cfc5..03e34a4 100644 --- a/common/data/src/main/java/com/kouros/navigation/data/tomtom/TomTomRepository.kt +++ b/common/data/src/main/java/com/kouros/navigation/data/tomtom/TomTomRepository.kt @@ -21,7 +21,7 @@ const val tomtomTrafficUrl = "https://api.tomtom.com/traffic/services/5/incident private const val tomtomFields = "{incidents{type,geometry{type,coordinates},properties{iconCategory,events{description}}}}" -val useLocal = false // BuildConfig.DEBUG +val useLocal = BuildConfig.DEBUG val useLocalTraffic = BuildConfig.DEBUG diff --git a/common/data/src/main/java/com/kouros/navigation/data/tomtom/TomTomRoute.kt b/common/data/src/main/java/com/kouros/navigation/data/tomtom/TomTomRoute.kt index 3816833..e8b144e 100644 --- a/common/data/src/main/java/com/kouros/navigation/data/tomtom/TomTomRoute.kt +++ b/common/data/src/main/java/com/kouros/navigation/data/tomtom/TomTomRoute.kt @@ -83,7 +83,7 @@ class TomTomRoute { waypoints = points.subList( lastPointIndex, instruction.pointIndex + 1, - ), + ).map { location(it[0], it[1]) }, exit = exitNumber(instruction), location = location( instruction.point.longitude, instruction.point.latitude diff --git a/common/data/src/main/java/com/kouros/navigation/data/valhalla/ValhallaRoute.kt b/common/data/src/main/java/com/kouros/navigation/data/valhalla/ValhallaRoute.kt index b40770c..1540df7 100644 --- a/common/data/src/main/java/com/kouros/navigation/data/valhalla/ValhallaRoute.kt +++ b/common/data/src/main/java/com/kouros/navigation/data/valhalla/ValhallaRoute.kt @@ -25,7 +25,7 @@ class ValhallaRoute { bearingAfter = it.bearingAfter, //type = it.type, type = convertType(it), - waypoints =waypoints.subList(it.beginShapeIndex, it.endShapeIndex+1), + waypoints = waypoints.subList(it.beginShapeIndex, it.endShapeIndex + 1).map { location(it[0], it[1]) }, // TODO: calculate from ShapeIndex ! location = location(0.0, 0.0), leftDistance = emptyList() diff --git a/common/data/src/main/java/com/kouros/navigation/model/RouteCalculator.kt b/common/data/src/main/java/com/kouros/navigation/model/RouteCalculator.kt index b527dd3..d84c122 100644 --- a/common/data/src/main/java/com/kouros/navigation/model/RouteCalculator.kt +++ b/common/data/src/main/java/com/kouros/navigation/model/RouteCalculator.kt @@ -7,6 +7,7 @@ import com.kouros.navigation.data.ApplicationConfig import com.kouros.navigation.data.Constants.MAXIMUM_LOCATION_DISTANCE import com.kouros.navigation.data.Constants.NEAREST_LOCATION_DISTANCE import com.kouros.navigation.data.Constants.SPEED_UPDATE_DISTANCE +import com.kouros.navigation.data.Constants.TAG import com.kouros.navigation.utils.location import java.util.concurrent.TimeUnit import kotlin.math.absoluteValue @@ -24,20 +25,20 @@ class RouteCalculator(var routeModel: RouteModel) { if (index >= routeModel.navState.route.currentStepIndex) { for ((wayIndex, waypoint) in step.maneuver.waypoints.withIndex()) { if (wayIndex >= step.waypointIndex) { - distance = location.distanceTo(location(waypoint[0], waypoint[1])) + distance = location.distanceTo(waypoint) if (distance < nearestDistance) { nearestDistance = distance routeModel.navState.route.currentStepIndex = step.index step.waypointIndex = wayIndex - step.wayPointLocation = location(waypoint[0], waypoint[1]) + step.wayPointLocation = waypoint } } - if (nearestDistance < NEAREST_LOCATION_DISTANCE && distance > NEAREST_LOCATION_DISTANCE * 10) { + if (nearestDistance < NEAREST_LOCATION_DISTANCE && distance > NEAREST_LOCATION_DISTANCE * 5) { break } } } - if (nearestDistance < NEAREST_LOCATION_DISTANCE && distance > NEAREST_LOCATION_DISTANCE * 10) { + if (nearestDistance < NEAREST_LOCATION_DISTANCE && distance > NEAREST_LOCATION_DISTANCE * 5) { break } } @@ -78,7 +79,7 @@ class RouteCalculator(var routeModel: RouteModel) { var leftDistance = 0F if (step.waypointIndex < step.maneuver.waypoints.size -1) { leftDistance = step.maneuver.leftDistance[step.waypointIndex] - val waypointLocation = location(step.maneuver.waypoints[step.waypointIndex][0], step.maneuver.waypoints[step.waypointIndex][1]) + val waypointLocation = step.maneuver.waypoints[step.waypointIndex] if (routeModel.navState.lastLocation.latitude != 0.0) { val locationDistance = waypointLocation.distanceTo(routeModel.navState.lastLocation) leftDistance -= locationDistance diff --git a/common/data/src/main/res/values-de/strings.xml b/common/data/src/main/res/values-de/strings.xml index 589620b..a1ac12a 100644 --- a/common/data/src/main/res/values-de/strings.xml +++ b/common/data/src/main/res/values-de/strings.xml @@ -66,11 +66,11 @@ Allgemein Verkehr anzeigen Fahrten-Vorschläge - Drive settings - Car settings - Combustion - Electric - Engine type - Alternative routes - Wait + Fahr-Einstellungen + Fahrzeug-Einstellungen + Verbrenner + Elektro + Motortyp + Alternative Routen + Warten diff --git a/common/data/src/main/res/values-el/strings.xml b/common/data/src/main/res/values-el/strings.xml index 0c5cc40..9551cc3 100644 --- a/common/data/src/main/res/values-el/strings.xml +++ b/common/data/src/main/res/values-el/strings.xml @@ -50,11 +50,11 @@ Γενικά Εμφάνιση κίνησης Προτάσεις διαδρομής - Drive settings - Car settings - Combustion - Electric - Engine type - Alternative routes - Wait + Ρυθμίσεις οδήγησης + Ρυθμίσεις αυτοκινήτου + Κινητήρας εσωτερικής καύσης + Ηλεκτρικό + Τύπος κινητήρα + Εναλλακτικές διαδρομές + Περιμένετε diff --git a/common/data/src/main/res/values-pl/strings.xml b/common/data/src/main/res/values-pl/strings.xml index 3d4e890..df66d81 100644 --- a/common/data/src/main/res/values-pl/strings.xml +++ b/common/data/src/main/res/values-pl/strings.xml @@ -50,11 +50,11 @@ Ogólne Pokaż natężenie ruchu Sugestie dotyczące podróży - Drive settings - Car settings - Combustion - Electric - Engine type - Alternative routes - Wait + Ustawienia jazdy + Ustawienia samochodu + Spalinowy + Elektryczny + Typ silnika + Alternatywne trasy + Czekaj