Refactoring Route, Speed

This commit is contained in:
Dimitris
2025-12-29 15:44:52 +01:00
parent 1b8abbd4eb
commit 82027dce76
32 changed files with 350 additions and 134 deletions

View File

@@ -14,8 +14,8 @@ android {
applicationId = "com.kouros.navigation"
minSdk = 33
targetSdk = 36
versionCode = 14
versionName = "0.1.3.14"
versionCode = 15
versionName = "0.1.3.15"
base.archivesName = "navi-$versionName"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}

View File

@@ -2,22 +2,34 @@ package com.kouros.navigation
import android.app.Application
import android.content.Context
import com.kouros.navigation.data.Constants.DARK_MODE_SETTINGS
import com.kouros.navigation.data.Constants.ROUTE_ENGINE
import com.kouros.navigation.data.Constants.SHOW_THREED_BUILDING
import com.kouros.navigation.data.NavigationRepository
import com.kouros.navigation.data.ObjectBox
import com.kouros.navigation.data.RouteEngine
import com.kouros.navigation.data.osrm.OsrmRepository
import com.kouros.navigation.data.valhalla.ValhallaRepository
import com.kouros.navigation.di.appModule
import com.kouros.navigation.model.ViewModel
import com.kouros.navigation.utils.NavigationUtils.getBooleanKeyValue
import com.kouros.navigation.utils.NavigationUtils.getIntKeyValue
import com.kouros.navigation.utils.NavigationUtils.getRouteEngine
import com.kouros.navigation.utils.NavigationUtils.setIntKeyValue
import org.koin.android.ext.koin.androidContext
import org.koin.android.ext.koin.androidLogger
import org.koin.core.context.startKoin
import org.koin.core.logger.Level
import org.maplibre.compose.expressions.dsl.switch
class MainApplication : Application() {
override fun onCreate() {
super.onCreate()
ObjectBox.init(this);
appContext = applicationContext
setIntKeyValue(appContext!!, RouteEngine.VALHALLA.ordinal, ROUTE_ENGINE)
navigationViewModel = getRouteEngine(appContext!!)
startKoin {
androidLogger(Level.DEBUG)
androidContext(this@MainApplication)
@@ -26,11 +38,12 @@ class MainApplication : Application() {
}
companion object {
var appContext: Context? = null
private set
var useContacts = false
val navigationViewModel = ViewModel(ValhallaRepository())
lateinit var navigationViewModel : ViewModel
}
}

View File

@@ -11,4 +11,5 @@ import org.koin.dsl.module
val appModule = module {
viewModelOf(::ViewModel)
singleOf(::ValhallaRepository)
singleOf(::OsrmRepository)
}

View File

@@ -48,7 +48,9 @@ import com.kouros.navigation.ui.theme.NavigationTheme
import com.kouros.navigation.utils.bearing
import com.kouros.navigation.utils.calculateZoom
import com.kouros.navigation.utils.location
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.async
import kotlinx.coroutines.delay
@@ -77,7 +79,7 @@ class MainActivity : ComponentActivity() {
var lastLocation = location(0.0, 0.0)
val observer = Observer<String> { newRoute ->
if (newRoute.isNotEmpty()) {
routeModel.startNavigation(newRoute)
routeModel.startNavigation(newRoute, applicationContext)
routeData.value = routeModel.route.routeGeoJson
simulate()
//test()
@@ -295,12 +297,15 @@ class MainActivity : ComponentActivity() {
}
}
@OptIn(DelicateCoroutinesApi::class)
fun simulate() = GlobalScope.async {
for ((index, step) in routeModel.legs.steps.withIndex()) {
for ((windex, waypoint) in step.maneuver.waypoints.withIndex()) {
mock.setMockLocation(waypoint[1], waypoint[0])
delay(600L) //
fun simulate() {
CoroutineScope(Dispatchers.IO).launch {
for ((index, step) in routeModel.legs.steps.withIndex()) {
for ((windex, waypoint) in step.maneuver.waypoints.withIndex()) {
if (routeModel.isNavigating()) {
mock.setMockLocation(waypoint[1], waypoint[0])
delay(800L) //
}
}
}
}
}

View File

@@ -62,7 +62,13 @@ fun MapView(
Column {
NavigationInfo(step)
Box(contentAlignment = Alignment.Center) {
MapLibre(applicationContext, cameraState, baseStyle, route, ViewStyle.VIEW)
MapLibre(
applicationContext,
cameraState,
baseStyle,
route,
ViewStyle.VIEW
)
LocationTrackingEffect(
locationState = userLocationState,
) {

View File

@@ -257,7 +257,7 @@ private fun RecentPlaces(
modifier = Modifier.size(24.dp, 24.dp),
)
ListItem(
headlineContent = { Text("${place.name} ${place.postalCode}") },
headlineContent = { Text("${place.street} ${place.postalCode} ${place.city}") },
modifier = Modifier
.clickable {
val toLocation = location(place.longitude, place.latitude)