From a02673af367a14076c44e82961d98320cb624a5d Mon Sep 17 00:00:00 2001 From: Dimitris Date: Wed, 10 Dec 2025 17:08:25 +0100 Subject: [PATCH] Refactoring --- app/build.gradle.kts | 5 +- .../com/kouros/navigation/ui/MainActivity.kt | 205 +++------ .../java/com/kouros/navigation/ui/MapView.kt | 103 +++++ .../kouros/navigation/ui/NavigationScreen.kt | 51 +++ .../kouros/navigation/ui/NavigationSheet.kt | 32 +- .../com/kouros/navigation/ui/SearchSheet.kt | 33 +- common/car/build.gradle.kts | 11 +- .../navigation/car/NavigationSession.kt | 1 - .../com/kouros/navigation/car/map/MapView.kt | 2 +- .../car/navigation/RouteCarModel.kt | 133 +----- .../navigation/car/screen/DisplaySettings.kt | 2 +- .../navigation/car/screen/NavigationScreen.kt | 2 +- .../car/screen/NavigationSettings.kt | 2 +- .../navigation/car/screen/PlaceListScreen.kt | 2 +- .../car/screen/RoutePreviewScreen.kt | 2 +- .../navigation/car/screen/SearchScreen.kt | 2 +- .../navigation/car/screen/SettingsScreen.kt | 7 +- .../assistant_navigation_48px.xml | 10 - .../main/res/drawable/arrow_right_turn.png | Bin 660 -> 0 bytes .../src/main/res/drawable/arrow_straight.png | Bin 345 -> 0 bytes .../drawable/assistant_navigation_48px.xml | 10 - .../baseline_assistant_navigation_24.xml | 21 - .../res/drawable/baseline_navigation_24.xml | 21 - .../main/res/drawable/ic_close_white_24dp.xml | 26 -- .../res/drawable/ic_delete_background.xml | 74 ---- .../res/drawable/ic_delete_foreground.xml | 15 - .../ic_favorite_filled_white_24dp.xml | 26 -- .../res/drawable/ic_favorite_white_24dp.xml | 26 -- .../res/drawable/ic_launcher_background.xml | 74 ---- .../car/src/main/res/drawable/ic_pan_24.xml | 28 -- .../main/res/drawable/ic_place_white_24dp.xml | 25 -- .../main/res/drawable/ic_roundabout_ccw.png | Bin 2329 -> 0 bytes .../main/res/drawable/ic_roundabout_cw.png | Bin 2265 -> 0 bytes .../main/res/drawable/ic_search_black36dp.png | Bin 678 -> 0 bytes common/car/src/main/res/drawable/ic_stop.png | Bin 5059 -> 0 bytes .../main/res/drawable/ic_turn_destination.png | Bin 461 -> 0 bytes .../main/res/drawable/ic_turn_fork_left.png | Bin 631 -> 0 bytes .../main/res/drawable/ic_turn_fork_right.png | Bin 631 -> 0 bytes .../drawable/ic_turn_merge_symmetrical.png | Bin 832 -> 0 bytes .../main/res/drawable/ic_turn_name_change.png | Bin 396 -> 0 bytes .../main/res/drawable/ic_turn_normal_left.png | Bin 650 -> 0 bytes .../res/drawable/ic_turn_normal_right.png | Bin 651 -> 0 bytes .../main/res/drawable/ic_turn_sharp_left.png | Bin 593 -> 0 bytes .../main/res/drawable/ic_turn_sharp_right.png | Bin 593 -> 0 bytes .../main/res/drawable/ic_turn_slight_left.png | Bin 463 -> 0 bytes .../res/drawable/ic_turn_slight_right.png | Bin 464 -> 0 bytes .../main/res/drawable/ic_turn_u_turn_left.png | Bin 829 -> 0 bytes .../res/drawable/ic_turn_u_turn_right.png | Bin 835 -> 0 bytes .../src/main/res/drawable/ic_zoom_in_24.xml | 25 -- .../src/main/res/drawable/ic_zoom_out_24.xml | 25 -- common/car/src/main/res/drawable/lanes.png | Bin 1041 -> 0 bytes .../car/src/main/res/drawable/navigation.png | Bin 8931 -> 0 bytes .../src/main/res/drawable/navigation_48px.xml | 10 - .../res/drawable/outline_bookmark_add_24.xml | 5 - .../drawable/outline_bookmark_added_24.xml | 5 - .../src/main/res/drawable/settings_24px.xml | 10 - .../src/main/res/drawable/turn_right_48px.xml | 10 - .../main/res/drawable/turn_right_48px1.xml | 10 - .../main/res/mipmap-anydpi-v26/ic_delete.xml | 5 - .../res/mipmap-anydpi-v26/ic_delete_round.xml | 5 - .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 - .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 - .../src/main/res/mipmap-hdpi/ic_delete.webp | Bin 2390 -> 0 bytes .../main/res/mipmap-hdpi/ic_delete_round.webp | Bin 3464 -> 0 bytes .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 2966 -> 0 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 3958 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_delete.webp | Bin 2068 -> 0 bytes .../main/res/mipmap-mdpi/ic_delete_round.webp | Bin 2446 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 2358 -> 0 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 2610 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_delete.webp | Bin 3104 -> 0 bytes .../res/mipmap-xhdpi/ic_delete_round.webp | Bin 4720 -> 0 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 3794 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 5254 -> 0 bytes .../src/main/res/mipmap-xxhdpi/ic_delete.webp | Bin 4098 -> 0 bytes .../res/mipmap-xxhdpi/ic_delete_round.webp | Bin 7062 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 5712 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 8638 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_delete.webp | Bin 5554 -> 0 bytes .../res/mipmap-xxxhdpi/ic_delete_round.webp | Bin 9806 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 7460 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 11906 -> 0 bytes common/car/src/main/res/values-de/strings.xml | 308 ------------- common/car/src/main/res/values/attrs.xml | 23 - common/car/src/main/res/values/strings.xml | 415 ------------------ common/car/src/main/res/values/styles.xml | 27 -- .../src/main/res/xml/automotive_app_desc.xml | 20 - common/data/build.gradle.kts | 13 +- .../java/com/kouros/navigation/data/Data.kt | 18 +- .../com/kouros/navigation/model/RouteModel.kt | 263 +++++++++-- .../navigation/utils/NavigationUtils.kt | 19 + gradle/libs.versions.toml | 23 +- 92 files changed, 557 insertions(+), 1643 deletions(-) create mode 100644 app/src/main/java/com/kouros/navigation/ui/MapView.kt create mode 100644 app/src/main/java/com/kouros/navigation/ui/NavigationScreen.kt delete mode 100644 common/car/src/main/res/drawable-navexposed/assistant_navigation_48px.xml delete mode 100644 common/car/src/main/res/drawable/arrow_right_turn.png delete mode 100644 common/car/src/main/res/drawable/arrow_straight.png delete mode 100644 common/car/src/main/res/drawable/assistant_navigation_48px.xml delete mode 100644 common/car/src/main/res/drawable/baseline_assistant_navigation_24.xml delete mode 100644 common/car/src/main/res/drawable/baseline_navigation_24.xml delete mode 100644 common/car/src/main/res/drawable/ic_close_white_24dp.xml delete mode 100644 common/car/src/main/res/drawable/ic_delete_background.xml delete mode 100644 common/car/src/main/res/drawable/ic_delete_foreground.xml delete mode 100644 common/car/src/main/res/drawable/ic_favorite_filled_white_24dp.xml delete mode 100644 common/car/src/main/res/drawable/ic_favorite_white_24dp.xml delete mode 100644 common/car/src/main/res/drawable/ic_launcher_background.xml delete mode 100644 common/car/src/main/res/drawable/ic_pan_24.xml delete mode 100644 common/car/src/main/res/drawable/ic_place_white_24dp.xml delete mode 100644 common/car/src/main/res/drawable/ic_roundabout_ccw.png delete mode 100644 common/car/src/main/res/drawable/ic_roundabout_cw.png delete mode 100644 common/car/src/main/res/drawable/ic_search_black36dp.png delete mode 100644 common/car/src/main/res/drawable/ic_stop.png delete mode 100644 common/car/src/main/res/drawable/ic_turn_destination.png delete mode 100644 common/car/src/main/res/drawable/ic_turn_fork_left.png delete mode 100644 common/car/src/main/res/drawable/ic_turn_fork_right.png delete mode 100644 common/car/src/main/res/drawable/ic_turn_merge_symmetrical.png delete mode 100644 common/car/src/main/res/drawable/ic_turn_name_change.png delete mode 100644 common/car/src/main/res/drawable/ic_turn_normal_left.png delete mode 100644 common/car/src/main/res/drawable/ic_turn_normal_right.png delete mode 100644 common/car/src/main/res/drawable/ic_turn_sharp_left.png delete mode 100644 common/car/src/main/res/drawable/ic_turn_sharp_right.png delete mode 100644 common/car/src/main/res/drawable/ic_turn_slight_left.png delete mode 100644 common/car/src/main/res/drawable/ic_turn_slight_right.png delete mode 100644 common/car/src/main/res/drawable/ic_turn_u_turn_left.png delete mode 100644 common/car/src/main/res/drawable/ic_turn_u_turn_right.png delete mode 100644 common/car/src/main/res/drawable/ic_zoom_in_24.xml delete mode 100644 common/car/src/main/res/drawable/ic_zoom_out_24.xml delete mode 100644 common/car/src/main/res/drawable/lanes.png delete mode 100644 common/car/src/main/res/drawable/navigation.png delete mode 100644 common/car/src/main/res/drawable/navigation_48px.xml delete mode 100644 common/car/src/main/res/drawable/outline_bookmark_add_24.xml delete mode 100644 common/car/src/main/res/drawable/outline_bookmark_added_24.xml delete mode 100644 common/car/src/main/res/drawable/settings_24px.xml delete mode 100644 common/car/src/main/res/drawable/turn_right_48px.xml delete mode 100644 common/car/src/main/res/drawable/turn_right_48px1.xml delete mode 100644 common/car/src/main/res/mipmap-anydpi-v26/ic_delete.xml delete mode 100644 common/car/src/main/res/mipmap-anydpi-v26/ic_delete_round.xml delete mode 100644 common/car/src/main/res/mipmap-anydpi-v26/ic_launcher.xml delete mode 100644 common/car/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml delete mode 100644 common/car/src/main/res/mipmap-hdpi/ic_delete.webp delete mode 100644 common/car/src/main/res/mipmap-hdpi/ic_delete_round.webp delete mode 100644 common/car/src/main/res/mipmap-hdpi/ic_launcher.webp delete mode 100644 common/car/src/main/res/mipmap-hdpi/ic_launcher_round.webp delete mode 100644 common/car/src/main/res/mipmap-mdpi/ic_delete.webp delete mode 100644 common/car/src/main/res/mipmap-mdpi/ic_delete_round.webp delete mode 100644 common/car/src/main/res/mipmap-mdpi/ic_launcher.webp delete mode 100644 common/car/src/main/res/mipmap-mdpi/ic_launcher_round.webp delete mode 100644 common/car/src/main/res/mipmap-xhdpi/ic_delete.webp delete mode 100644 common/car/src/main/res/mipmap-xhdpi/ic_delete_round.webp delete mode 100644 common/car/src/main/res/mipmap-xhdpi/ic_launcher.webp delete mode 100644 common/car/src/main/res/mipmap-xhdpi/ic_launcher_round.webp delete mode 100644 common/car/src/main/res/mipmap-xxhdpi/ic_delete.webp delete mode 100644 common/car/src/main/res/mipmap-xxhdpi/ic_delete_round.webp delete mode 100644 common/car/src/main/res/mipmap-xxhdpi/ic_launcher.webp delete mode 100644 common/car/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp delete mode 100644 common/car/src/main/res/mipmap-xxxhdpi/ic_delete.webp delete mode 100644 common/car/src/main/res/mipmap-xxxhdpi/ic_delete_round.webp delete mode 100644 common/car/src/main/res/mipmap-xxxhdpi/ic_launcher.webp delete mode 100644 common/car/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp delete mode 100644 common/car/src/main/res/values-de/strings.xml delete mode 100644 common/car/src/main/res/values/attrs.xml delete mode 100644 common/car/src/main/res/values/strings.xml delete mode 100644 common/car/src/main/res/values/styles.xml delete mode 100644 common/car/src/main/res/xml/automotive_app_desc.xml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 26a9e67..435aa85 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -14,8 +14,8 @@ android { applicationId = "com.kouros.navigation" minSdk = 33 targetSdk = 36 - versionCode = 6 - versionName = "0.1.3.6" + versionCode = 7 + versionName = "0.1.3.7" base.archivesName = "navi-$versionName" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } @@ -93,6 +93,7 @@ dependencies { implementation(libs.androidx.compose.material3.window.size.class1) implementation(libs.androidx.compose.ui.graphics) implementation(libs.androidx.window) + implementation(libs.androidx.compose.foundation.layout) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) diff --git a/app/src/main/java/com/kouros/navigation/ui/MainActivity.kt b/app/src/main/java/com/kouros/navigation/ui/MainActivity.kt index 849406d..43ade6d 100644 --- a/app/src/main/java/com/kouros/navigation/ui/MainActivity.kt +++ b/app/src/main/java/com/kouros/navigation/ui/MainActivity.kt @@ -13,14 +13,10 @@ import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.annotation.RequiresPermission import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.material3.BottomSheetScaffold -import androidx.compose.material3.Card import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.Icon import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text @@ -31,31 +27,23 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState import androidx.compose.runtime.mutableDoubleStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.lifecycle.MutableLiveData import androidx.lifecycle.Observer -import androidx.window.layout.WindowMetricsCalculator import com.google.android.gms.location.FusedLocationProviderClient import com.google.android.gms.location.LocationServices -import com.kouros.android.cars.carappservice.R -import com.kouros.navigation.car.map.BuildingLayer -import com.kouros.navigation.car.map.NavigationImage -import com.kouros.navigation.car.map.RouteLayer -import com.kouros.navigation.data.Constants +import com.kouros.navigation.data.Constants.homeLocation import com.kouros.navigation.data.NavigationRepository import com.kouros.navigation.data.StepData -import com.kouros.navigation.data.nominatim.SearchResult import com.kouros.navigation.model.MockLocation import com.kouros.navigation.model.RouteModel import com.kouros.navigation.model.ViewModel import com.kouros.navigation.ui.theme.NavigationTheme -import com.kouros.navigation.utils.NavigationUtils import com.kouros.navigation.utils.bearing import com.kouros.navigation.utils.calculateZoom import com.kouros.navigation.utils.location @@ -63,18 +51,12 @@ import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.async import kotlinx.coroutines.delay +import kotlinx.coroutines.launch import org.maplibre.compose.camera.CameraPosition -import org.maplibre.compose.camera.rememberCameraState import org.maplibre.compose.location.DesiredAccuracy -import org.maplibre.compose.location.LocationTrackingEffect -import org.maplibre.compose.location.UserLocationState +import org.maplibre.compose.location.Location import org.maplibre.compose.location.rememberDefaultLocationProvider import org.maplibre.compose.location.rememberUserLocationState -import org.maplibre.compose.map.MapOptions -import org.maplibre.compose.map.MaplibreMap -import org.maplibre.compose.map.OrnamentOptions -import org.maplibre.compose.sources.getBaseSource -import org.maplibre.compose.style.BaseStyle import org.maplibre.spatialk.geojson.Position import kotlin.time.Duration.Companion.seconds @@ -88,15 +70,19 @@ class MainActivity : ComponentActivity() { var tilt = 50.0 val useMock = true - val instruction: MutableLiveData by lazy { + val stepData: MutableLiveData by lazy { MutableLiveData() } var lastLocation = location(0.0, 0.0) val observer = Observer { newRoute -> - routeModel.startNavigation(newRoute) - routeData.value = routeModel.route.routeGeoJson + if (newRoute.isNotEmpty()) { + routeModel.startNavigation(newRoute) + routeData.value = routeModel.route.routeGeoJson + //mock.setMockLocation(homeLocation.latitude, homeLocation.longitude) + simulate() + } } val cameraPosition = MutableLiveData( CameraPosition( @@ -129,8 +115,8 @@ class MainActivity : ComponentActivity() { if (useMock) { mock = MockLocation(locationManager) mock.setMockLocation( - Constants.homeLocation.latitude, - Constants.homeLocation.longitude + homeLocation.latitude, + homeLocation.longitude ) } enableEdgeToEdge() @@ -139,6 +125,21 @@ class MainActivity : ComponentActivity() { } } + @SuppressLint("MissingPermission") + @Composable + fun CheckPermissionScreen() { + val permissions = listOf( + Manifest.permission.ACCESS_COARSE_LOCATION, + Manifest.permission.ACCESS_FINE_LOCATION, + ) + PermissionScreen( + permissions = permissions, + requiredPermissions = listOf(permissions.first()), + onGranted = { + Content() + }, + ) + } @SuppressLint("AutoboxingStateCreation") @OptIn(ExperimentalMaterial3Api::class) @@ -146,6 +147,8 @@ class MainActivity : ComponentActivity() { fun Content() { val scaffoldState = rememberBottomSheetScaffoldState() val snackbarHostState = remember { SnackbarHostState() } + + val scope = rememberCoroutineScope() val locationProvider = rememberDefaultLocationProvider( updateInterval = 0.5.seconds, desiredAccuracy = DesiredAccuracy.Highest @@ -157,7 +160,15 @@ class MainActivity : ComponentActivity() { if (locationState.value != null) { latitude = locationState.value!!.position.latitude } - val step: StepData? by instruction.observeAsState() + val step: StepData? by stepData.observeAsState() + + fun openSheet() { + scope.launch { scaffoldState.bottomSheetState.expand() } + } + + fun closeSheet() { + scope.launch { scaffoldState.bottomSheetState.partialExpand() } + } NavigationTheme { BottomSheetScaffold( @@ -167,7 +178,7 @@ class MainActivity : ComponentActivity() { scaffoldState = scaffoldState, sheetPeekHeight = 128.dp, sheetContent = { - SheetContent(latitude, step) + SheetContent(latitude, step) { closeSheet() } }, ) { innerPadding -> Box( @@ -176,117 +187,35 @@ class MainActivity : ComponentActivity() { .padding(innerPadding), contentAlignment = Alignment.Center, ) { - Map(userLocationState, step) + MapView(applicationContext,userLocationState, step, cameraPosition, routeData, tilt) } } } } @Composable - fun SheetContent(locationState: Double, step: StepData?) { + fun SheetContent(locationState: Double, step: StepData?, closeSheet: () -> Unit) { if (!routeModel.isNavigating()) { - SearchSheet(applicationContext, viewModel, lastLocation) + SearchSheet(applicationContext, viewModel, lastLocation) { closeSheet() } } else { - NavigationSheet( routeModel, step, { simulate() }) - } - // to recomposite SheetContent ! - Text("State $locationState") - } - @Composable - fun NavigationInfo(step: StepData?) { - Card { - Column { - Icon( - painter = painterResource(R.drawable.ic_turn_normal_right), - contentDescription = stringResource(id = R.string.accept_action_title) - ) - if (step != null) { - Text(text = step.instruction, fontSize = 25.sp) - } - } - } - } - - @Composable - fun Map(userLocationState: UserLocationState, step: StepData?) { - Column { - if (step != null) { - NavigationInfo(step) - } - MapView(userLocationState) - } - } - - @Composable - fun MapView(userLocationState: UserLocationState) { - - val metrics = WindowMetricsCalculator.getOrCreate().computeCurrentWindowMetrics(this) - val width = metrics.bounds.width() - val height = metrics.bounds.height() - val paddingValues = PaddingValues(start = 0.dp, top = 350.dp) - - val position: CameraPosition? by cameraPosition.observeAsState() - val route: String? by routeData.observeAsState() - val cameraState = - rememberCameraState( - firstPosition = - CameraPosition( - target = Position( - position!!.target.latitude, - position!!.target.longitude - ), - zoom = 15.0, - ) + NavigationSheet( + routeModel, step!!, + { stopNavigation { closeSheet() } }, + { simulateNavigation() } ) - Box (contentAlignment = Alignment.Center) { - MaplibreMap( - options = MapOptions( - ornamentOptions = - OrnamentOptions(isScaleBarEnabled = false) - ), - cameraState = cameraState, - baseStyle = BaseStyle.Uri(Constants.STYLE), - ) { - getBaseSource(id = "openmaptiles")?.let { tiles -> - if (!NavigationUtils.getBooleanKeyValue( - context = applicationContext, - Constants.SHOW_THREED_BUILDING - ) - ) { - BuildingLayer(tiles) - } - RouteLayer(route, "", position!!.zoom) - } - if (userLocationState.location != null) { - ///PuckState(cameraState, userLocationState) - } - } - - LocationTrackingEffect( - locationState = userLocationState, - ) { - cameraState.animateTo( - finalPosition = CameraPosition( - bearing = position!!.bearing, - zoom = position!!.zoom, - target = position!!.target, - tilt = tilt, - padding = paddingValues - ), - duration = 1.seconds - ) - } - NavigationImage(paddingValues, width, height /6, "") } + // For recomposition! + Text("$locationState", fontSize = 12.sp) } - fun updateLocation(location: org.maplibre.compose.location.Location?) { + fun updateLocation(location: Location?) { if (location != null && lastLocation.latitude != location.position.latitude - && lastLocation.longitude != location.position.longitude) { + && lastLocation.longitude != location.position.longitude + ) { if (routeModel.isNavigating()) { routeModel.updateLocation(lastLocation) - instruction.value = routeModel.currentStep() + stepData.value = routeModel.currentStep() } val currentLocation = location(location.position.longitude, location.position.latitude) val bearing = bearing(lastLocation, currentLocation, cameraPosition.value!!.bearing) @@ -306,6 +235,17 @@ class MainActivity : ComponentActivity() { } } + fun stopNavigation(closeSheet: () -> Unit) { + closeSheet() + routeModel.stopNavigation() + routeData.value = "" + stepData.value = StepData("", 0.0, 0, 0, 0, 0.0) + } + + fun simulateNavigation() { + simulate() + } + private fun checkMockLocationEnabled() { try { // Check if mock location is enabled for this app @@ -330,24 +270,9 @@ class MainActivity : ComponentActivity() { } } - @SuppressLint("MissingPermission") - @Composable - fun CheckPermissionScreen() { - val permissions = listOf( - Manifest.permission.ACCESS_COARSE_LOCATION, - Manifest.permission.ACCESS_FINE_LOCATION, - ) - PermissionScreen( - permissions = permissions, - requiredPermissions = listOf(permissions.first()), - onGranted = { - Content() - }, - ) - } @OptIn(DelicateCoroutinesApi::class) fun simulate() = GlobalScope.async { - for ((i, loc) in routeModel.route.waypoints.withIndex()) { + for ((_, loc) in routeModel.route.waypoints.withIndex()) { if (routeModel.isNavigating()) { mock.setMockLocation(loc[1], loc[0]) delay(1000L) // diff --git a/app/src/main/java/com/kouros/navigation/ui/MapView.kt b/app/src/main/java/com/kouros/navigation/ui/MapView.kt new file mode 100644 index 0000000..67566b8 --- /dev/null +++ b/app/src/main/java/com/kouros/navigation/ui/MapView.kt @@ -0,0 +1,103 @@ +package com.kouros.navigation.ui + +import android.content.Context +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.livedata.observeAsState +import androidx.compose.ui.Alignment +import androidx.compose.ui.unit.dp +import androidx.lifecycle.MutableLiveData +import androidx.window.layout.WindowMetricsCalculator +import com.kouros.navigation.car.map.BuildingLayer +import com.kouros.navigation.car.map.NavigationImage +import com.kouros.navigation.car.map.RouteLayer +import com.kouros.navigation.data.Constants +import com.kouros.navigation.data.StepData +import com.kouros.navigation.utils.NavigationUtils +import org.maplibre.compose.camera.CameraPosition +import org.maplibre.compose.camera.rememberCameraState +import org.maplibre.compose.location.LocationTrackingEffect +import org.maplibre.compose.location.UserLocationState +import org.maplibre.compose.map.MapOptions +import org.maplibre.compose.map.MaplibreMap +import org.maplibre.compose.map.OrnamentOptions +import org.maplibre.compose.sources.getBaseSource +import org.maplibre.compose.style.BaseStyle +import org.maplibre.spatialk.geojson.Position +import kotlin.time.Duration.Companion.seconds + +@Composable +fun MapView( + applicationContext: Context, + userLocationState: UserLocationState, + step: StepData?, + cameraPosition: MutableLiveData, + routeData: MutableLiveData, + tilt: Double +) { + + val metrics = WindowMetricsCalculator.getOrCreate().computeCurrentWindowMetrics(applicationContext) + val width = metrics.bounds.width() + val height = metrics.bounds.height() + val paddingValues = PaddingValues(start = 0.dp, top = 350.dp) + + val position: CameraPosition? by cameraPosition.observeAsState() + val route: String? by routeData.observeAsState() + val cameraState = + rememberCameraState( + firstPosition = + CameraPosition( + target = Position( + position!!.target.latitude, + position!!.target.longitude + ), + zoom = 15.0, + ) + ) + Column { + NavigationInfo(step) + Box(contentAlignment = Alignment.Center) { + MaplibreMap( + options = MapOptions( + ornamentOptions = + OrnamentOptions(isScaleBarEnabled = false) + ), + cameraState = cameraState, + baseStyle = BaseStyle.Uri(Constants.STYLE), + ) { + getBaseSource(id = "openmaptiles")?.let { tiles -> + if (!NavigationUtils.getBooleanKeyValue( + context = applicationContext, + Constants.SHOW_THREED_BUILDING + ) + ) { + BuildingLayer(tiles) + } + RouteLayer(route, "", position!!.zoom) + } + if (userLocationState.location != null) { + ///PuckState(cameraState, userLocationState) + } + } + + LocationTrackingEffect( + locationState = userLocationState, + ) { + cameraState.animateTo( + finalPosition = CameraPosition( + bearing = position!!.bearing, + zoom = position!!.zoom, + target = position!!.target, + tilt = tilt, + padding = paddingValues + ), + duration = 1.seconds + ) + } + NavigationImage(paddingValues, width, height / 6, "") + } + } +} diff --git a/app/src/main/java/com/kouros/navigation/ui/NavigationScreen.kt b/app/src/main/java/com/kouros/navigation/ui/NavigationScreen.kt new file mode 100644 index 0000000..176f443 --- /dev/null +++ b/app/src/main/java/com/kouros/navigation/ui/NavigationScreen.kt @@ -0,0 +1,51 @@ +package com.kouros.navigation.ui + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material3.Card +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.kouros.data.R +import com.kouros.navigation.data.StepData +import com.kouros.navigation.utils.round + +@Composable +fun NavigationInfo(step: StepData?) { + if (step != null && step.instruction.isNotEmpty()) { + Card(modifier = Modifier.padding(top = 60.dp)) { + Column() { + Row { + Icon( + painter = painterResource(step.icon), + contentDescription = stringResource(id = R.string.accept_action_title), + modifier = Modifier.size(48.dp, 48.dp), + ) + Column { + if (step.leftStepDistance < 1000) { + Text(text = "${step.leftStepDistance.toInt()} m", fontSize = 25.sp) + } else { + Text( + text = "${(step.leftStepDistance / 1000).round(1)} km", + fontSize = 25.sp + ) + } + Text(text = step.instruction, fontSize = 20.sp) + } + Icon( + painter = painterResource(step.icon), + contentDescription = stringResource(id = R.string.accept_action_title), + modifier = Modifier.size(48.dp, 48.dp), + ) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/kouros/navigation/ui/NavigationSheet.kt b/app/src/main/java/com/kouros/navigation/ui/NavigationSheet.kt index 2df7018..e22f4e2 100755 --- a/app/src/main/java/com/kouros/navigation/ui/NavigationSheet.kt +++ b/app/src/main/java/com/kouros/navigation/ui/NavigationSheet.kt @@ -1,34 +1,45 @@ +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.size import androidx.compose.material3.Button import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.Text +import androidx.compose.material3.VerticalDivider import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp -import com.kouros.android.cars.carappservice.R +import androidx.compose.ui.unit.sp +import com.kouros.data.R import com.kouros.navigation.data.StepData import com.kouros.navigation.model.RouteModel -import kotlinx.coroutines.Deferred +import com.kouros.navigation.utils.formatDateTime +import com.kouros.navigation.utils.round + @Composable fun NavigationSheet( routeModel: RouteModel, - step: StepData?, - simulate: () -> Unit + step: StepData, + stopNavigation: () -> Unit, + simulateNavigation: () -> Unit, ) { + val distance = step.leftDistance.round(1) Column { - //Text("${routeModel.travelLeftTime()}") - if (step != null) - Text("${step.leftDistance / 1000} km") + FlowRow(horizontalArrangement= Arrangement.SpaceEvenly) { + Text(formatDateTime(step.arrivalTime), fontSize = 22.sp) + Spacer(Modifier.size(30.dp)) + Text("$distance km", fontSize = 22.sp) + } HorizontalDivider() - Row() { + FlowRow(horizontalArrangement = Arrangement.SpaceEvenly) { if (routeModel.isNavigating()) { Button(onClick = { - routeModel.stopNavigation() + stopNavigation() }) { Icon( painter = painterResource(id = R.drawable.ic_close_white_24dp), @@ -36,8 +47,9 @@ fun NavigationSheet( modifier = Modifier.size(24.dp, 24.dp), ) } + Spacer(Modifier.size(30.dp)) Button(onClick = { - simulate() + simulateNavigation() }) { Icon( painter = painterResource(id = R.drawable.assistant_navigation_48px), diff --git a/app/src/main/java/com/kouros/navigation/ui/SearchSheet.kt b/app/src/main/java/com/kouros/navigation/ui/SearchSheet.kt index d80ef23..b35a883 100644 --- a/app/src/main/java/com/kouros/navigation/ui/SearchSheet.kt +++ b/app/src/main/java/com/kouros/navigation/ui/SearchSheet.kt @@ -22,8 +22,6 @@ import androidx.compose.material3.SearchBar import androidx.compose.material3.SearchBarDefaults import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.State -import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState import androidx.compose.runtime.mutableStateOf @@ -38,7 +36,7 @@ import androidx.compose.ui.semantics.isTraversalGroup import androidx.compose.ui.semantics.semantics import androidx.compose.ui.semantics.traversalIndex import androidx.compose.ui.unit.dp -import com.kouros.android.cars.carappservice.R +import com.kouros.data.R import com.kouros.navigation.data.Place import com.kouros.navigation.data.PlaceColor import com.kouros.navigation.data.nominatim.SearchResult @@ -46,7 +44,12 @@ import com.kouros.navigation.model.ViewModel import com.kouros.navigation.utils.location @Composable -fun SearchSheet(applicationContext: Context, viewModel: ViewModel, location: Location) { +fun SearchSheet( + applicationContext: Context, + viewModel: ViewModel, + location: Location, + closeSheet: () -> Unit +) { val searchResults = mutableListOf() val recentPlaces = viewModel.places.observeAsState() val search = viewModel.searchPlaces.observeAsState() @@ -63,7 +66,9 @@ fun SearchSheet(applicationContext: Context, viewModel: ViewModel, location: Loc searchResults = searchResults, viewModel = viewModel, context = applicationContext, - location = location + location = location, + closeSheet = {closeSheet()} + ) } } @@ -77,7 +82,8 @@ fun SearchSheet(applicationContext: Context, viewModel: ViewModel, location: Loc searchResults = searchResults, viewModel = viewModel, context = applicationContext, - location = location + location = location, + closeSheet = {closeSheet()} ) } } @@ -93,6 +99,7 @@ fun SearchBar( viewModel: ViewModel, context: Context, location: Location, + closeSheet: () -> Unit ) { var expanded by rememberSaveable { mutableStateOf(true) } Box( @@ -121,19 +128,19 @@ fun SearchBar( }, expanded = expanded, onExpandedChange = { expanded = it }, - placeholder = { Text("Suchen") } + placeholder = { Text(context.getString(R.string.search_action_title)) } ) }, expanded = expanded, onExpandedChange = { expanded = it }, ) { if (searchPlaces.isNotEmpty()) { - Text("Recent places") - RecentPlaces(searchPlaces, viewModel, context, location) + Text(context.getString(R.string.recent_destinations)) + RecentPlaces(searchPlaces, viewModel, context, location, closeSheet) } if (searchResults.isNotEmpty()) { Text("Search places") - SearchPlaces(searchResults, viewModel, context, location) + SearchPlaces(searchResults, viewModel, context, location, closeSheet) } } } @@ -149,6 +156,7 @@ private fun SearchPlaces( viewModel: ViewModel, context: Context, location: Location, + closeSheet: () -> Unit ) { val color = remember { PlaceColor } LazyColumn( @@ -171,6 +179,7 @@ private fun SearchPlaces( val toLocation = location(place.lon.toDouble(), place.lat.toDouble()) viewModel.loadRoute(context, location, toLocation) + closeSheet() } .fillMaxWidth() ) @@ -186,7 +195,8 @@ private fun RecentPlaces( recentPlaces: List, viewModel: ViewModel, context: Context, - location: Location + location: Location, + closeSheet: () -> Unit ) { val color = remember { PlaceColor } LazyColumn( @@ -207,6 +217,7 @@ private fun RecentPlaces( .clickable { val toLocation = location(place.longitude, place.latitude) viewModel.loadRoute(context, location, toLocation) + closeSheet() } .fillMaxWidth() ) diff --git a/common/car/build.gradle.kts b/common/car/build.gradle.kts index 1a52ecc..518536a 100644 --- a/common/car/build.gradle.kts +++ b/common/car/build.gradle.kts @@ -1,3 +1,5 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { alias(libs.plugins.android.library) alias(libs.plugins.kotlin.android) @@ -27,8 +29,10 @@ android { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } - kotlinOptions { - jvmTarget = "11" + kotlin { + compilerOptions { + jvmTarget = JvmTarget.JVM_11 + } } buildFeatures { compose = true @@ -38,8 +42,7 @@ android { dependencies { implementation(libs.androidx.core.ktx) implementation(libs.androidx.car.app) - - implementation(libs.ui) + implementation(libs.androidx.compose.ui) implementation(libs.androidx.lifecycle.runtime.ktx) implementation(libs.androidx.ui) implementation(libs.maplibre.compose) 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 9af282a..0a025e0 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 @@ -110,7 +110,6 @@ class NavigationSession : Session(), NavigationScreen.Listener { if ((CarContext.ACTION_NAVIGATE == intent.action)) { val uri = ("http://" + intent.dataString).toUri() val location = Location(LocationManager.GPS_PROVIDER) - screenManager.popToRoot() screenManager.pushForResult( SearchScreen( diff --git a/common/car/src/main/java/com/kouros/navigation/car/map/MapView.kt b/common/car/src/main/java/com/kouros/navigation/car/map/MapView.kt index d560258..b7e6008 100644 --- a/common/car/src/main/java/com/kouros/navigation/car/map/MapView.kt +++ b/common/car/src/main/java/com/kouros/navigation/car/map/MapView.kt @@ -24,7 +24,7 @@ import androidx.compose.ui.text.drawText import androidx.compose.ui.text.rememberTextMeasurer import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import com.kouros.android.cars.carappservice.R +import com.kouros.data.R import com.kouros.navigation.data.NavigationColor import com.kouros.navigation.data.RouteColor import com.kouros.navigation.data.SpeedColor diff --git a/common/car/src/main/java/com/kouros/navigation/car/navigation/RouteCarModel.kt b/common/car/src/main/java/com/kouros/navigation/car/navigation/RouteCarModel.kt index 1344a5a..30ff4c0 100644 --- a/common/car/src/main/java/com/kouros/navigation/car/navigation/RouteCarModel.kt +++ b/common/car/src/main/java/com/kouros/navigation/car/navigation/RouteCarModel.kt @@ -28,7 +28,6 @@ import androidx.car.app.navigation.model.Maneuver import androidx.car.app.navigation.model.Step import androidx.car.app.navigation.model.TravelEstimate import androidx.core.graphics.drawable.IconCompat -import com.kouros.android.cars.carappservice.R import com.kouros.navigation.data.Constants.NEXT_STEP_THRESHOLD import com.kouros.navigation.data.ManeuverType import com.kouros.navigation.model.RouteModel @@ -40,34 +39,14 @@ class RouteCarModel() : RouteModel() { /** Returns the current [Step] with information such as the cue text and images. */ fun currentStep(carContext: CarContext): Step { - val maneuver = route.currentManeuver() - val maneuverType = maneuver.type - val stepData = currentStep() - - var routing: (Pair) - routing = if (hasArrived(maneuverType)) { - routingData(maneuverType, carContext) - } else { - routingData(ManeuverType.None.value, carContext) - } - when (stepData.leftDistance) { - in 0.0..NEXT_STEP_THRESHOLD -> { - if (route.currentManeuverIndex < route.maneuvers.size) { - val maneuver = route.nextManeuver() - val maneuverType = maneuver.type - routing = routingData(maneuverType, carContext) - } - } - } - val currentStepCueWithImage: SpannableString = createString(stepData.instruction) val step = Step.Builder(currentStepCueWithImage) .setManeuver( - Maneuver.Builder(routing.first) - .setIcon(routing.second) + Maneuver.Builder(stepData.maneuverType) + .setIcon(createCarIcon(carContext, stepData.icon)) .build() ) .setRoad(destination.street!!) @@ -77,130 +56,40 @@ class RouteCarModel() : RouteModel() { /** Returns the next [Step] with information such as the cue text and images. */ fun nextStep(carContext: CarContext): Step? { - val maneuver = route.nextManeuver() - val maneuverType = maneuver.type - val routing = routingData(maneuverType, carContext) - var text = "" - val distanceLeft = leftStepDistance() - - when (distanceLeft) { - in 0.0..NEXT_STEP_THRESHOLD -> { - return null - } - else -> { - if (maneuver.streetNames != null && maneuver.streetNames!!.isNotEmpty()) { - text = maneuver.streetNames!![0] - } - } - } + val stepData = nextStep() val currentStepCueWithImage: SpannableString = - createString(text) + createString(stepData.instruction) val step = Step.Builder(currentStepCueWithImage) .setManeuver( - Maneuver.Builder(routing.first) - .setIcon(routing.second) + Maneuver.Builder(stepData.maneuverType) + .setIcon(createCarIcon(carContext, stepData.icon)) .build() ) .build() return step } - fun routingData(routeManeuverType: Int, carContext: CarContext): (Pair) { - var type = Maneuver.TYPE_DEPART - var currentTurnIcon = createCarIcon(carContext, R.drawable.ic_turn_name_change) - when (routeManeuverType) { - ManeuverType.None.value -> { - type = Maneuver.TYPE_STRAIGHT - currentTurnIcon = createCarIcon(carContext, R.drawable.ic_turn_name_change) - } - - ManeuverType.Destination.value, - ManeuverType.DestinationRight.value, - ManeuverType.DestinationLeft.value, - -> { - type = Maneuver.TYPE_DESTINATION - currentTurnIcon = createCarIcon(carContext, R.drawable.ic_turn_destination) - } - - ManeuverType.Right.value -> { - type = Maneuver.TYPE_TURN_NORMAL_RIGHT - currentTurnIcon = createCarIcon(carContext, R.drawable.ic_turn_normal_right) - } - - ManeuverType.Left.value -> { - type = Maneuver.TYPE_TURN_NORMAL_LEFT - currentTurnIcon = createCarIcon(carContext, R.drawable.ic_turn_normal_left) - } - - ManeuverType.RampRight.value -> { - type = Maneuver.TYPE_OFF_RAMP_SLIGHT_RIGHT - currentTurnIcon = createCarIcon(carContext, R.drawable.ic_turn_slight_right) - } - - ManeuverType.RampLeft.value -> { - type = Maneuver.TYPE_TURN_NORMAL_LEFT - currentTurnIcon = createCarIcon(carContext, R.drawable.ic_turn_normal_left) - } - - ManeuverType.ExitRight.value -> { - type = Maneuver.TYPE_TURN_SLIGHT_RIGHT - currentTurnIcon = createCarIcon(carContext, R.drawable.ic_turn_slight_right) - } - - ManeuverType.StayRight.value -> { - type = Maneuver.TYPE_KEEP_RIGHT - currentTurnIcon = createCarIcon(carContext, R.drawable.ic_turn_name_change) - } - - ManeuverType.StayLeft.value -> { - type = Maneuver.TYPE_KEEP_LEFT - currentTurnIcon = createCarIcon(carContext, R.drawable.ic_turn_name_change) - } - - ManeuverType.RoundaboutEnter.value -> { - type = Maneuver.TYPE_ROUNDABOUT_ENTER_CCW - currentTurnIcon = createCarIcon(carContext, R.drawable.ic_roundabout_ccw) - } - - ManeuverType.RoundaboutExit.value -> { - type = Maneuver.TYPE_ROUNDABOUT_EXIT_CCW - currentTurnIcon = createCarIcon(carContext, R.drawable.ic_roundabout_ccw) - } - } - maneuverType = type - return Pair(type, currentTurnIcon) - } - - fun hasArrived(type: Int): Boolean { - return type == ManeuverType.DestinationRight.value - || maneuverType == ManeuverType.Destination.value - || maneuverType == ManeuverType.DestinationLeft.value - } - fun travelEstimate(): TravelEstimate { val timeLeft = travelLeftTime() - // Calculate the time to destination from the current time. - val nowUtcMillis = System.currentTimeMillis() val timeToDestinationMillis = TimeUnit.SECONDS.toMillis(timeLeft.toLong()) - val leftDistance = travelLeftDistance() val displayUnit = if (leftDistance > 1.0) { Distance.UNIT_KILOMETERS } else { Distance.UNIT_METERS } + val arivalTime = DateTimeWithZone.create( + arrivalTime(), + TimeZone.getTimeZone("Europe/Berlin") + ) return TravelEstimate.Builder( // The estimated distance to the destination. Distance.create( leftDistance, displayUnit ), // Arrival time at the destination with the destination time zone. - - DateTimeWithZone.create( - nowUtcMillis + timeToDestinationMillis, - TimeZone.getTimeZone("Europe/Berlin") - ) + arivalTime ) .setRemainingTimeSeconds( TimeUnit.MILLISECONDS.toSeconds( diff --git a/common/car/src/main/java/com/kouros/navigation/car/screen/DisplaySettings.kt b/common/car/src/main/java/com/kouros/navigation/car/screen/DisplaySettings.kt index 930b1ef..f8b011d 100644 --- a/common/car/src/main/java/com/kouros/navigation/car/screen/DisplaySettings.kt +++ b/common/car/src/main/java/com/kouros/navigation/car/screen/DisplaySettings.kt @@ -10,7 +10,7 @@ import androidx.car.app.model.ListTemplate import androidx.car.app.model.Row import androidx.car.app.model.Template import androidx.car.app.model.Toggle -import com.kouros.android.cars.carappservice.R +import com.kouros.data.R import com.kouros.navigation.data.Constants.SHOW_THREED_BUILDING import com.kouros.navigation.utils.NavigationUtils.getBooleanKeyValue import com.kouros.navigation.utils.NavigationUtils.setBooleanKeyValue diff --git a/common/car/src/main/java/com/kouros/navigation/car/screen/NavigationScreen.kt b/common/car/src/main/java/com/kouros/navigation/car/screen/NavigationScreen.kt index b71d260..abfc9b7 100644 --- a/common/car/src/main/java/com/kouros/navigation/car/screen/NavigationScreen.kt +++ b/common/car/src/main/java/com/kouros/navigation/car/screen/NavigationScreen.kt @@ -25,7 +25,7 @@ import androidx.car.app.notification.CarPendingIntent import androidx.car.app.suggestion.model.Suggestion import androidx.core.graphics.drawable.IconCompat import androidx.lifecycle.Observer -import com.kouros.android.cars.carappservice.R +import com.kouros.data.R import com.kouros.navigation.car.NavigationCarAppService import com.kouros.navigation.car.SurfaceRenderer import com.kouros.navigation.car.navigation.RouteCarModel diff --git a/common/car/src/main/java/com/kouros/navigation/car/screen/NavigationSettings.kt b/common/car/src/main/java/com/kouros/navigation/car/screen/NavigationSettings.kt index ec7e0de..1e36110 100644 --- a/common/car/src/main/java/com/kouros/navigation/car/screen/NavigationSettings.kt +++ b/common/car/src/main/java/com/kouros/navigation/car/screen/NavigationSettings.kt @@ -9,7 +9,7 @@ import androidx.car.app.model.ListTemplate import androidx.car.app.model.Row import androidx.car.app.model.Template import androidx.car.app.model.Toggle -import com.kouros.android.cars.carappservice.R +import com.kouros.data.R import com.kouros.navigation.data.Constants.AVOID_MOTORWAY import com.kouros.navigation.data.Constants.AVOID_TOLLWAY import com.kouros.navigation.utils.NavigationUtils.getBooleanKeyValue diff --git a/common/car/src/main/java/com/kouros/navigation/car/screen/PlaceListScreen.kt b/common/car/src/main/java/com/kouros/navigation/car/screen/PlaceListScreen.kt index 6108f27..b0f76eb 100644 --- a/common/car/src/main/java/com/kouros/navigation/car/screen/PlaceListScreen.kt +++ b/common/car/src/main/java/com/kouros/navigation/car/screen/PlaceListScreen.kt @@ -18,7 +18,7 @@ import androidx.car.app.model.Row import androidx.car.app.model.Template import androidx.core.graphics.drawable.IconCompat import androidx.lifecycle.Observer -import com.kouros.android.cars.carappservice.R +import com.kouros.data.R import com.kouros.navigation.car.SurfaceRenderer import com.kouros.navigation.car.navigation.RouteCarModel import com.kouros.navigation.data.Constants diff --git a/common/car/src/main/java/com/kouros/navigation/car/screen/RoutePreviewScreen.kt b/common/car/src/main/java/com/kouros/navigation/car/screen/RoutePreviewScreen.kt index 5793fad..1985c7d 100644 --- a/common/car/src/main/java/com/kouros/navigation/car/screen/RoutePreviewScreen.kt +++ b/common/car/src/main/java/com/kouros/navigation/car/screen/RoutePreviewScreen.kt @@ -39,7 +39,7 @@ import androidx.car.app.navigation.model.MapController import androidx.car.app.navigation.model.MapWithContentTemplate import androidx.core.graphics.drawable.IconCompat import androidx.lifecycle.Observer -import com.kouros.android.cars.carappservice.R +import com.kouros.data.R import com.kouros.navigation.car.SurfaceRenderer import com.kouros.navigation.car.navigation.NavigationMessage import com.kouros.navigation.car.navigation.RouteCarModel diff --git a/common/car/src/main/java/com/kouros/navigation/car/screen/SearchScreen.kt b/common/car/src/main/java/com/kouros/navigation/car/screen/SearchScreen.kt index 1e763bc..185168b 100644 --- a/common/car/src/main/java/com/kouros/navigation/car/screen/SearchScreen.kt +++ b/common/car/src/main/java/com/kouros/navigation/car/screen/SearchScreen.kt @@ -14,7 +14,7 @@ import androidx.car.app.model.SearchTemplate.SearchCallback import androidx.car.app.model.Template import androidx.core.graphics.drawable.IconCompat import androidx.lifecycle.Observer -import com.kouros.android.cars.carappservice.R +import com.kouros.data.R import com.kouros.navigation.car.SurfaceRenderer import com.kouros.navigation.data.Category import com.kouros.navigation.data.Constants diff --git a/common/car/src/main/java/com/kouros/navigation/car/screen/SettingsScreen.kt b/common/car/src/main/java/com/kouros/navigation/car/screen/SettingsScreen.kt index c67824f..46fca1d 100644 --- a/common/car/src/main/java/com/kouros/navigation/car/screen/SettingsScreen.kt +++ b/common/car/src/main/java/com/kouros/navigation/car/screen/SettingsScreen.kt @@ -15,9 +15,7 @@ */ package com.kouros.navigation.car.screen -import android.content.Context import androidx.car.app.CarContext -import androidx.car.app.CarToast import androidx.car.app.Screen import androidx.car.app.model.Action import androidx.car.app.model.Header @@ -25,10 +23,7 @@ import androidx.car.app.model.ItemList import androidx.car.app.model.ListTemplate import androidx.car.app.model.Row import androidx.car.app.model.Template -import androidx.car.app.model.Toggle -import androidx.core.content.edit -import com.kouros.android.cars.carappservice.R -import com.kouros.navigation.car.NavigationSession +import com.kouros.data.R /** A screen demonstrating selectable lists. */ class SettingsScreen( diff --git a/common/car/src/main/res/drawable-navexposed/assistant_navigation_48px.xml b/common/car/src/main/res/drawable-navexposed/assistant_navigation_48px.xml deleted file mode 100644 index 1077be0..0000000 --- a/common/car/src/main/res/drawable-navexposed/assistant_navigation_48px.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/common/car/src/main/res/drawable/arrow_right_turn.png b/common/car/src/main/res/drawable/arrow_right_turn.png deleted file mode 100644 index 6b93cec4b50376f44edf8911bfc5ad3403d5dfc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 660 zcmV;F0&D$=P)HmZLagtirpDBpk#soA9Y92tV|~9mkv_n4$+G z899ri9urH^lbSYo;V3tSqx$!21TU*LZU0gpwn~L0ae7HKO2oI5QC%)@vj2)00s$=N62AQV> zb$w6~o*~mu$5^-%GHyiB5wrxExq1fYXOStUBd7%KnDzp{I)d6FGf&UIjw#4A&=a&C znPhr`j!Ul~A9{lBW7+|s1I6%^U(y;-1DQTT2O1z#SLi?sWXcO2=zvUNp#$BK$su&0 u4>B2q4)jGPy%A&t89_$SzZs;S!SEjOTJ0Js9%ixt0000t@qHPS zMfT6B(c7Re{o$l%BJ=NM+Nb_B{@NhF#edfM@R$CxK77`?d$cZQZS@6>Z{2+-i%zdR zRClxKcKA!dZ?B{7Hl}T`FY%iv?Z^D>_%+W$##@K~#VqE&aMa$RS%IaEG6qjqKbLh*2~7Zp$D6YN diff --git a/common/car/src/main/res/drawable/assistant_navigation_48px.xml b/common/car/src/main/res/drawable/assistant_navigation_48px.xml deleted file mode 100644 index 1077be0..0000000 --- a/common/car/src/main/res/drawable/assistant_navigation_48px.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/common/car/src/main/res/drawable/baseline_assistant_navigation_24.xml b/common/car/src/main/res/drawable/baseline_assistant_navigation_24.xml deleted file mode 100644 index 3b7031f..0000000 --- a/common/car/src/main/res/drawable/baseline_assistant_navigation_24.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - diff --git a/common/car/src/main/res/drawable/baseline_navigation_24.xml b/common/car/src/main/res/drawable/baseline_navigation_24.xml deleted file mode 100644 index 65886f8..0000000 --- a/common/car/src/main/res/drawable/baseline_navigation_24.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - diff --git a/common/car/src/main/res/drawable/ic_close_white_24dp.xml b/common/car/src/main/res/drawable/ic_close_white_24dp.xml deleted file mode 100644 index 5832c5a..0000000 --- a/common/car/src/main/res/drawable/ic_close_white_24dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - diff --git a/common/car/src/main/res/drawable/ic_delete_background.xml b/common/car/src/main/res/drawable/ic_delete_background.xml deleted file mode 100644 index ca3826a..0000000 --- a/common/car/src/main/res/drawable/ic_delete_background.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/common/car/src/main/res/drawable/ic_delete_foreground.xml b/common/car/src/main/res/drawable/ic_delete_foreground.xml deleted file mode 100644 index e153c58..0000000 --- a/common/car/src/main/res/drawable/ic_delete_foreground.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/common/car/src/main/res/drawable/ic_favorite_filled_white_24dp.xml b/common/car/src/main/res/drawable/ic_favorite_filled_white_24dp.xml deleted file mode 100644 index d3df144..0000000 --- a/common/car/src/main/res/drawable/ic_favorite_filled_white_24dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - diff --git a/common/car/src/main/res/drawable/ic_favorite_white_24dp.xml b/common/car/src/main/res/drawable/ic_favorite_white_24dp.xml deleted file mode 100644 index 7709015..0000000 --- a/common/car/src/main/res/drawable/ic_favorite_white_24dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - diff --git a/common/car/src/main/res/drawable/ic_launcher_background.xml b/common/car/src/main/res/drawable/ic_launcher_background.xml deleted file mode 100644 index ca3826a..0000000 --- a/common/car/src/main/res/drawable/ic_launcher_background.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/common/car/src/main/res/drawable/ic_pan_24.xml b/common/car/src/main/res/drawable/ic_pan_24.xml deleted file mode 100644 index 1dfeed1..0000000 --- a/common/car/src/main/res/drawable/ic_pan_24.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - diff --git a/common/car/src/main/res/drawable/ic_place_white_24dp.xml b/common/car/src/main/res/drawable/ic_place_white_24dp.xml deleted file mode 100644 index 1ba39ce..0000000 --- a/common/car/src/main/res/drawable/ic_place_white_24dp.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - diff --git a/common/car/src/main/res/drawable/ic_roundabout_ccw.png b/common/car/src/main/res/drawable/ic_roundabout_ccw.png deleted file mode 100644 index 478f371426cffda9f3b1d1a09f22ac88699b2cef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2329 zcmZuz3p5nk8s76TX5=w96^+Ue84kuXIXR41rSeQDlNqjO9x?J527}UL#CQ~vlFms* zIpIWQjK`5d;YP=hj4~5R9-|nU%o*q0yY9N{_OHFx_y6Dj?QiY1_S$Rz7u;O-E68Ew z000V32OK;AfJjpaKq90-q}&Mx06FgDVC$I(nHf#L&~AiwZ2e8U=L6e61P1jaw3L^n zM~;u%Y}`wf>i-kJvUJ}0%svmNri}eYTpWTv45jXzyKW)O!72QHvkyxX?i-YOUZZS} zrkf)hCQ(?V_ZS+6i=s|MBiz0k*h|XTh{WK2R=^p4gKYB-x~mKoB3hxqv2el(O@LfK z;CDl^(4<8#%QBQ#YvDRVFCsL~1VHm&F!647oFhBdtDyVMKeN6-8mm8)`#OguPr%nLX1DurzrCyp57}wmJ5NBFSfeqKi%jNwD2_I6!Y#K3uVA803zR|`onI6ohbS>0uXEORfXS> zBrxZc0h((XP8}8R1A#wG5rwCq0J<9V3;Y4(bS)V-m9#?P?Y`Q}RNa zzuZsemfkQ>-gNrMVa8v2qb0z+Z=eh(sIRww*$;JvK3dnC)#4$b6`$MTj2~{tHkKbT zfdtZ1!zN=EYi1(Q#C}B~2@2YH>KCq(f^;&+GvY7(1RRnxLl0oV6IHlMUFnPQXH zOmUBit@|mbaj$VtgmJb6pCs0gEGcgc=^oo*G1pykKd)b>t|#}WR4?gma5MS59e8b( zfUU52Nz8Ir(iM~(?c$7Jp>BR&0Tq`PDK^i&5yG#&g1VSoRoOa3F%H)v;tZ*y)jhlN zSd9r!4+J*(-kO!UZL=#sSLdaAGUn&igmI9XSA`j@vw7eYxSY1%@FeqbOM|w@c>acm zN8j8ANw*kHZwAPH!qtq*r+y2kMf;s^?6;4{+HHA^ae=3}y;Th6y@3NX5j>H8FRBwuCg;7o$QY_fGCk1QH- znY1&bJ~8VG=Y9)+jf+(*s=vE<8I_>U9yc!=Tx?y|UmLMFr1Q97lEDk?%y2m^>0w)` zTan!=C!uF>)Kn44MJoiyNmEZ_@{+AX^IYpzhnC~|FHuyWc4l2Ae46F`H>*PXJ{6Xa z_)^&IqgFh9{i3?opGN{`*Y3~`H}hBcCo;3lyoNqk(y?BbOF1u&pkN7X55FJgKGPP@ z+S;dSG@n;tY!@^O%aI>rs;!P)pX?ad$;4q!DdKl^b`J=s3VYtGaSZs16jv%!MV=uW z-RLofn=4f6s_fa5wLQqfviX{)i$O?!Y_|;m9fkV%Uc020GKNJIemfz zp~^~;n6y;jZ0N98Nd|#&_}b?72@-k={bl*xYGNdq^8c4T@^b=x+Vrk1hE$Lzu_Syc z9>YGyie5qVB&qG!5M5a`};`eO@M zMG{Y;4gWzwX+-D3vQro4!q3ugI1}-ZEcKOK6PzcKsL7tZ+uDX-Gv$xgmfAkFBRBG# zE%t7T8De|H2RIrjZ2Ntp{p@jZL-*0ddX+4t^q&NWghj-(;Or9;cgqWq?6-wv<(0|} z8CY+I#PV_3HFJLQ#g-b*9Pafse?I5k}reWi}by!_wITdrDuDK8=hi z_K3pc!$Z*o>9=Ba?;jh~kr^n#6QO5Dd6Ya;y{AuLX{=AfZhF!a#J4ry01eGg-Lot$tQNAQ>0WiVqS^}jnUtdsOkvDya!Ou5evN=TpM*C{7Q7l#LSW46PV5Gi$-8M%x|hGsA>8Hbc9N1f`(Wz37D5IRvr z?qW1$x=7_VakfxW%%~HRTk=LDyK$KYhrQNb=d69sZ~fNud_UjkdDgSm@1Nf#`av2N zjY9(ffZgxx;0XZWiUa{w)JpRITV*H!s21&auw$G9C;L58nyCQv+S*HYuAs-2lcZS> zAIqC#`@HMA)m{~VS(*6#1b%Z)|FVahKX&$$^m+7JsTMmXG`{Q0lb5Fp)_8N?<*}x} znEdz$x@fw(kRq$ z0?fM|4yI@rk&Vc|uli#aMrP=#33E&EDEi+^0d&MV>JV1Rs9^_Ht@L{=*S73zAQnnKcqcBafyw6c#DgJ$<2Jw?I5|T`ytA{^XL0u3FBlW@aw?lzqEvjt&^5b_LPQ%$`0O z-0s5G0r#k(Nm~s;k3TC}tj9P}$x6?9zy(!^v=vWeD~}Ej2d{*ZU?8MK(U}I@V1S>u zYG~t0Th+C3&}txURe@k|-f~Ws_9`_EJQ?vJ+ROqaT3iT`65yYFx{c7wU5~>1{`-D? z5ZUk}$Ev4I&=~knwYqH)Oj779oqN6lAlu60<2w0bwKiIe~=%GHZR zwxg(SG+ew&W@4X}Dp_3zE+$=$0vbJo&oiUdr`4kHCaWv)8q_r+HnMGI7rShShNzbF z&^cHHBd2G2-ODT~VA|&F`A9%|wU(^EGEDYfbi_fZ4lbaNM}7Ab0hrBU7#$XO3KV|V zxcp!?8~2k5)?6rm2C=PlVLipBBDs4!o&dNmzqUS(l|=gB*g93;fcfJi{W9H^CtB&_ z!{jfK4fB@pK)a9gcoTXj+xe_|R2@+;lNxOul}8kez&qLpnL!iqezD=`RE;nlY9;Z! zFO)-}2E53~rEnN5&8*cEN3C=`X&-#RX%?n~t;~$8wbhbmE1to+u=$@wORDC6;M?{J zPM+|LXdc-$GY8|g3vMo1J{CP3m2RsE^cmBRJT=q%xnIQw^|I)2Ic7YW37zn7>x1zU z^Ps6lI}=8mEZ!gIg*9)87GzeyJLAEOScC6Vnuj!#d#^OHK-Pvl#7&V`OhQN1-bhBHqs30rM zp0c$2=%U#^G(Ntwgr$({(O9^PCvM@pN{EL*5u!cEAgigEu0j|pu49=UzJ@+xs6hUr$!4+8@hl2 z4;RN`9sZQwYw^(-8PbxK0t(hx%d7kwU(A!Y^%x7=L3;qJX7Nrl-#&xFG4h*T*RKK^ifKHU|@;=@ZaO)7)>8S3&QGCrk zU)MWj*HU&t>2#HgV#lTH1I&dmc4$p%^m}{y zWWchc)dQ)#VW=WLNiu{mU4~kC*Z2CnNfQT62npF@7Gi5MUbl3U)9*DP>$Df%d+Nk> zIT$-_M(?Y<$DQtbW-m;A>dkdDT=-a6)XN}64&RL+B(#WA5ta;^8cu9#^7Y3~B}P0^ z1lFIH&=5o4UsQN_t32G!mlj;($A`HUjZAFxi(~@J)$JDQVnR+Kn$Q}}39`z^xy$ed zme65hQfC>8$xUJf0E>J(aV7^)Fo)kFeh#e~pnNVls&^x-DS5}yx4J98*D4*l@>cu> zv6WrLnZ7)roa5Wc-^6gOGC-3j+Xj}AAlVIs(w(b2X3e@;_R359wqJ{2)&_{FY-thv zI0q=u{~CP9ht>mB9U#Fq7;)UVAxKTxacFI0b1(pd01D6n*#9G@y8r+JFn~EA`u_s@ zJQ84=4r#T0D@Z#oQufW3gtKaxfBfSA!zXg_698af-0Cu}IhnQU?{_@taCaX&;op>a B27v$o diff --git a/common/car/src/main/res/drawable/ic_search_black36dp.png b/common/car/src/main/res/drawable/ic_search_black36dp.png deleted file mode 100644 index cebcea1d7d5c1185ea5eacc96ef77f5a0d801faf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 678 zcmV;X0$KfuP)a;v{S0CuC0<#;D^YsvtrJIiL;hQ0i(}KngTP6{Rc0ABY3XvK_fIB=0;X zb6lf?5DlE;61Rwvy>p~0ysv^7qF7^yV28mYY@i>v5;TG+W_uimCLSS*J9t|Qq8MV| zDi}jMwsm-zeq#-Axb%_6@UBb977sXd73H{P2;o&TNRAXW6j4)o;f~-S}9j}j=a*K80qH9QwU+|(SB*zFYnnQAY zgBM*L@kLVmnDYf*R8!vW_fcd+NRC%j%kW)LQs4uvV_lZ7Uwe=(BBx)m0H5JqOUM>| zCr1m2;bk4j7TEzu8bJFy7x1MzWD?q-WGYHj<6A!$>xcGLkZm6}leBvMkH8EX%U2fB&lZQ6#Jm{r~^~ M07*qoM6N<$f`0}amH+?% diff --git a/common/car/src/main/res/drawable/ic_stop.png b/common/car/src/main/res/drawable/ic_stop.png deleted file mode 100644 index 42c75307859dc63762b1d60ba0766812608db0ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5059 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 Dw8P9| diff --git a/common/car/src/main/res/drawable/ic_turn_fork_left.png b/common/car/src/main/res/drawable/ic_turn_fork_left.png deleted file mode 100644 index 1bb58b4b3a8470c9a8f9f0bf539639190d6023d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 631 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58JL)Xl%kBoS0Kd`;1l8sr2j*}zkgwOtm=V$ z=8_=4V21zoD_?{HH8F{Mx;TbZFuuKhaHXiDfZN03R?fsp23^NEqFzpH7wia>=sNxA zS+bp-Ncd5Q>FgI>|1#E;%#FSLd;Rs-U#s>WpX!$B&c-%1wsLh{%&rxB^>kLH72z~`Ed3;d&Ts@Z5Ej|t>s7oBEp4m`t#P~jiX`0sr29<)S2OAC?X7YHj z~;__-AtFEh0>xHPdzWh`h!5WUj(Y&a!8%|Feob6vpA>VWXI*I%oE cQTtuE!-Gxm7*|FWFvT!Ue2H8#jRDV2UWnkD4@AsWqW^cnyhJ7sjall{#f*U&T z_p$tCVYoAMvp568ffxG^c8fD4oc@>0s-qPZvSo!uiN~2mi(Fm1yBK`D&dG(CXj+zf zom;ZR({u79HPz*QCudGE(aa3GwB*SfN7u=df|oz>@tOq|Dta|#4n&o&7vFth6O9bN zyp6}jnEq!4>I%Gw*TawR>rQxaUwgu<`OaOtZ>9&EZrLjocrnZg|IN;_ zju$ur4koR>f-sa#$yEa+1btp%=HE1tnf=Omf&=T)@J>!orwSTJS6Xntc8-53P;{vcZ9i4rYyi oL^Eo`=Ce+7R1IgJ>JAEE9$7`DEoI9>CIHzCp00i_>zopr0C>EP+yDRo diff --git a/common/car/src/main/res/drawable/ic_turn_normal_left.png b/common/car/src/main/res/drawable/ic_turn_normal_left.png deleted file mode 100644 index 572a48ca44a98f16ecca6878cf1a098882e96bc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 650 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5Flk7;1l8sr2k_ApdfA}Ih*et zP@7;$kY6yve^x0$NL)ng4g||#UV;lcO?YCM~)o_J*iJZb$hL!9dwhpftgZL*to<&N&fDk%2lXB({CJt{P`2^UVfAg3V;NKa9%@Vyw?6Q2 w!uDJH_yVfcP861$DEXmt?zmX|Bo$9MGFM@>Vf}9C@(JW7Pgg&ebxsLQ0Ono)0{{R3 diff --git a/common/car/src/main/res/drawable/ic_turn_normal_right.png b/common/car/src/main/res/drawable/ic_turn_normal_right.png deleted file mode 100644 index b9cc652f823953bc3d041a75f82a4128ae3f213f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 651 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5Flk7;1l8sr2k_ApdfA}Ih*et zP@7;$kY6wZ>wiIU0bUkPMkYQER(58=>ydLd04@6F>Eakt!T9DvBPSE10L#YGU;4Mi zSX?TLG!>Z{&RIU6Q*5(-)k!XW4|z)93wdVS^ZQmzV%Mrxs9Er#@k8UhUj7a&(1U+R z!<`219Z(e8AZuWgP;uZx!$Zcy%x&yE{1S3dfxmhQ_LrZd2w|upUSNjghrIQCMFMOK zHM%CP2)eN9cl=uCHmS~y-{$Ual=pl1-9RmkN#^(gpN7jbrgIj^U4F#iwwnzYxDc@7 zC4;v`gZhO{jCUI3_zE;{GHgv})~Vmcd~55}o4+bP0l+XkKz@E~C diff --git a/common/car/src/main/res/drawable/ic_turn_sharp_left.png b/common/car/src/main/res/drawable/ic_turn_sharp_left.png deleted file mode 100644 index 8b29193b2ee5b74a3d0d89c41c3699e37c48e0fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 593 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58CaNs)Vi3hp+HI~z$e5NNdE@{APGVL{&DN2 z{s4-ymIV0)GyG>_W&S;-@FGy}OHUWakP61PcNp7L7zJD|_SiZeiT$Qj{r|Mi0RxSj zTF;Xo#V?qj!4>*s%eAQNwOe6CxMsZZ@81m$oZ1H%f8Kk~q>=c)`2fSk272NJ4eg9y zq!i?NA6#eXvX@MVV|g-}@gB3vM|S2tYyp$ruvbVv_{yNqyh-*!X~T5pJ$xtf8kifx znPnI@Nk3qCaFv0*;SHMwLxt%9Mupvsd<=2C1q>&$8n_$GnPV6>Nj_kCaFjv4L5FPz z`;X7xpEEM+CrB9}%QP}B zV`OIbVP<2S!TiU263-r}4v_fg*FfSRk$5K)&(~db_KleieGJa}21@%Sby}W$F#oE&%F%>FMGaQo;E4PPZpZpn%K8cRZ^Ylnn$w_j~>0P;%D) zyXVE~*$3pf%Jvz2P1amGCCCd-{LWUYlNa66%T>{^zg&F5U)zfej~VET|Fb##7Up66 zdx_;9^A&C3EnC?uQkn9Z;$|$!)n|Gpd}G@;hR2*$(gt%6+-`WtvX_5`?}OR{8BO=t z&!~N{OE7VK&zvS)A#X5i!FR^ZoO}2sd@r~&G;`K48O&JF&%h@9gC)VhQJ#@U?L**! z&n&fKA8Z=?ndYg#*xc}(vqmnU?uEsIOoxXJ%NSdkXR(PeRQz9|Z@L#Dz?UHvfT98< zuzX-b)eRm|K=t<8Bzs*U;g;zz3H|7>Gk_fcmMnL=a;+5b^B$;K&cPu za@WQG9CKmaZ!EOeLG<@IkKYYHI~#2H{wzPwxRQxOp@9KT)M%K>pLS(k<;1!Q5ncap asrTl6$i8*cN)?z27(8A5T-G@yGywoQ$a?9QhcZ9GH--pfTb2e{nOm zM?dx#L%1RuTsb@}tVJv}e9CX$w>2(s2wHHDS^hCc?N2(Y2StGKyEOQ`v%B0>ASGK zPx(%?lVF&q#vw0G*BwDgf=&ib{C{L3TI4zw*oz+&lz|~GcY$67DMyp043>)=iv(Ge zr)01kXkdgg4%D-6sjlSOAk zpM>?^`~RQ)ymH?5^}My4%9w-auX$hnK;J@IWX7+Axl9}1ul-cd7{cPP+#z5=po7E< z5e_aBE)M3oOpc9ijEM_^6*MkrDDaeUv9L<9wlw-RKIeV(^YeqB*^2Y_%iGlZ_dK7^ zecoRB@z3wg&+kucV*2~l{Hj}{26K7SeW48xd8JsJm}D8lo945u;{23odN7FTD2uUt zxNy&&K-0!g3+5=S5AmCz{*mdKI;Vst0Ci=odjJ3c diff --git a/common/car/src/main/res/drawable/ic_turn_u_turn_left.png b/common/car/src/main/res/drawable/ic_turn_u_turn_left.png deleted file mode 100644 index e37bbbe3cd24e8e6341a1c00079930614dba5844..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 829 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5Flk4;1l8sr2hi}gaomO1xdTo zN`RV$OM?7@8U8ae@iTI=39z$p@p3S;@`y=q+h5hmz`(S?)5S5Qg7MAyg^Udb3@nBT z{})ayoND_0ro#C%AaLia9P8^3t?yetw|p-7Uh+NVHweRE$p4hz2n=C`{6~d<-rTs} z*kZuL5@7cHM*YU`mAo9@QTFBrXPDKQp>ji@%<)Kku%6pn|+Y=iY$-K8-aEH9xQX+xhJ$gZ+~EH~-f^;ZAwJo$17X z*4;d8-fo+=HKFeU}Jqi)!<7IN5V-4i&7SgW9{d-3+Bo`Fta{jE0b{GbOlSBopl}K z`U7WT8639%T=Cy%$Lw06nr$;#q~EZd-|XMiz1iWoenMHp-#7aYe9{JnI{iTV#D(wA ze~;!(Fs@Qz0$QsOpKy|eVS;`@k^iMt|D_n}-(E1}WiSvpvf+dK-H(b9Q}uY}?2+f^ z`2DwG!+r87p!O5LKQ@pQqpOdb;|#taD0e0s!3Ddbj`p diff --git a/common/car/src/main/res/drawable/ic_turn_u_turn_right.png b/common/car/src/main/res/drawable/ic_turn_u_turn_right.png deleted file mode 100644 index 9f26af1b7fa8a44018f4a1334dc7db106c40e05d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 835 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5Flk4;1l8sr2hi}gaomO1xdTo zN`RV$OM?7@8U8c!GcmGp3b3Eakt!T9C^dm_;0!y7XH zIEp*|U!TnO>3&r9+O5~3UhlNLsek%En+xAWz7SvL4> zyY=tqLoJ5YQ?uXfPus(EVAWTl-{JxiHV&KX{;=GA$H1G{l(+uy-^Y#4CLYK8853?d z?7Juv&2aK=gD1n5b8J0Al6T8lEOxLTi9P-$tKop*hRRnQ1$;SiR!lBt>lvi}IX;xS zVFOg*%YMU$eTOgm4t6tn#)~Bl=?R~&ew6!=_jd>PjHd!OY<%h^Yy9hl_L#AJP^p+% z$KR2&Z<#&kyXDL|R!lmAtiaHx8~E_ErhevTnbnLroAntO9x*bQ2>saZe4K^hfP=uH z59@a+Sv_e#%=l930K=#MTnrp8jC&m98n~V?t{{s7X%{)bO%BBnxZap4kU>AdX~8 - - - - diff --git a/common/car/src/main/res/drawable/ic_zoom_out_24.xml b/common/car/src/main/res/drawable/ic_zoom_out_24.xml deleted file mode 100644 index 089d265..0000000 --- a/common/car/src/main/res/drawable/ic_zoom_out_24.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - diff --git a/common/car/src/main/res/drawable/lanes.png b/common/car/src/main/res/drawable/lanes.png deleted file mode 100644 index 4374cb2ff48c318b2d2a62adf6676367ebab2319..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1041 zcmV+s1n&EZP)8adIKNTH*N$ML^ zGExmW4rWt{FMF=NgmqEIn7>tWlMI-H5ftSjx?3SP$$)mwK_|{3mbs3-guPL3)-lhu zm#`8V%m}khnYjt;<3>E3$sgR!mJ}r$re_c(oU>_{DC~3XFCeyN%cj@jb^zdW&SP$= zhZ3it6=pAqz&_Xh0%A!NWziUXWFR!V&0!6u$zUZ|G z@D!o1xs(N@5*A0R&Q(k=kr?ILUtR@HaJfg4Z)z>prjjSvl@9SSz-4HSIhmqFV3lis z0kL(EyJ1sn(aDEY_ATuq4u_z1W)q3PDA)e-S_BPdlsTJI3pzQPFRA7N@lAXp9ppI9 zM!h+aQyE23_K^roa_uj#elA4`=R7)M*Mb~}*Qf;CLtcE$z;et?UW8pyZ&nqd#9S;( zw?tr&Ykzs=Ii_OnzHw_oA9qsATl7n1mDUrJL9YGfwOQ5NmE+Zdg?Nivequq9R;`8o z<+T7~RdWZKAxK< z(}ve#Gu|ciA2+Z#IJc8awXnRrPC-$wBUemA?Gm@*ATVM{Brn|wlIGNC6Oe^E@BLLqrx75cf?CZ?}5}iSA3p@;5E#AWS z9PKg@9|Qlet|Tp2i!<LV{Z^T_sff1BJ@{)mRZmPwNI6NL_Jq{P3D7}(_X>O{;JviJN zbv<-3hH{x?V4Rz3@fZ%*MO+VE9E_qIEEO2$rdk-(;xrB)KPNGWqFm0@Qh{M^s)a!< z!a0$-q!P>AR11SzoWOqU$G+^yx-2N!+2^*v=SyPLVq+9#J@IfHiZV<18lQnlZV~}Y zp(wkEhl^3hCkMQO(a;4Rj!4^E#O>MWLD;3V+K)_MZ)!%<=RMS z=TtNtwiF51W0q?rp}<<4=RVnR9CM4~)?<}xE1}HHOiSK6*Ix2JN#Sq{0h3c{00000 LNkvXXu0mjfoFV2M diff --git a/common/car/src/main/res/drawable/navigation.png b/common/car/src/main/res/drawable/navigation.png deleted file mode 100644 index 7ebe82879fa1f20d358cf3737e3401c98544dfa6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8931 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 diff --git a/common/car/src/main/res/drawable/navigation_48px.xml b/common/car/src/main/res/drawable/navigation_48px.xml deleted file mode 100644 index e87c0a6..0000000 --- a/common/car/src/main/res/drawable/navigation_48px.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/common/car/src/main/res/drawable/outline_bookmark_add_24.xml b/common/car/src/main/res/drawable/outline_bookmark_add_24.xml deleted file mode 100644 index 93aeae9..0000000 --- a/common/car/src/main/res/drawable/outline_bookmark_add_24.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/common/car/src/main/res/drawable/outline_bookmark_added_24.xml b/common/car/src/main/res/drawable/outline_bookmark_added_24.xml deleted file mode 100644 index 3960836..0000000 --- a/common/car/src/main/res/drawable/outline_bookmark_added_24.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/common/car/src/main/res/drawable/settings_24px.xml b/common/car/src/main/res/drawable/settings_24px.xml deleted file mode 100644 index 4bcd4aa..0000000 --- a/common/car/src/main/res/drawable/settings_24px.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/common/car/src/main/res/drawable/turn_right_48px.xml b/common/car/src/main/res/drawable/turn_right_48px.xml deleted file mode 100644 index 730ed7d..0000000 --- a/common/car/src/main/res/drawable/turn_right_48px.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/common/car/src/main/res/drawable/turn_right_48px1.xml b/common/car/src/main/res/drawable/turn_right_48px1.xml deleted file mode 100644 index 730ed7d..0000000 --- a/common/car/src/main/res/drawable/turn_right_48px1.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/common/car/src/main/res/mipmap-anydpi-v26/ic_delete.xml b/common/car/src/main/res/mipmap-anydpi-v26/ic_delete.xml deleted file mode 100644 index c76661e..0000000 --- a/common/car/src/main/res/mipmap-anydpi-v26/ic_delete.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/common/car/src/main/res/mipmap-anydpi-v26/ic_delete_round.xml b/common/car/src/main/res/mipmap-anydpi-v26/ic_delete_round.xml deleted file mode 100644 index c76661e..0000000 --- a/common/car/src/main/res/mipmap-anydpi-v26/ic_delete_round.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/common/car/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/common/car/src/main/res/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index bbd3e02..0000000 --- a/common/car/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/common/car/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/common/car/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index bbd3e02..0000000 --- a/common/car/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/common/car/src/main/res/mipmap-hdpi/ic_delete.webp b/common/car/src/main/res/mipmap-hdpi/ic_delete.webp deleted file mode 100644 index d991c89563b937f64c2694dc4a3b02356459af9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2390 zcmV-c390r{Nk&Fa2><|BMM6+kP&iCM2><{uN5Byf6;Zyn-;nK8Y}>YN+qP}nwrwZZ zw(WcD#;&Rp{TpZ9+P~hrPIWY_*w#$LJBzJeJDSLB! zT2gFnTeiyGT`S3FV39>6)0qO5KeX2r?de)@7DMQWeK(^e5Xw&wPJ%8eK6poOsa4dRC$0E*-Hvx&h(y@q= zV>m!W(6P&aUypPd@Gcy1`o)`E5P#bV^n;-C2la#*xP;zUk~ zZ|VCI2>=?yyv2Q0h90{m06=X&73@|m4iw2H@$=Wn&JRM+#RhKTaY7`Q$nVc569BZ7 z#>gcwQENkY+poIcd)LF!(6ONI_XoN^8anpa#v>baM;v?Xqun1291HsKgJZ|*Xu-eC ztcrZ_QIy8$6>u!mv@Z4sfNY9p^y$a*zxh;2^07;eZ$I7*P^p%{?w*9YnW6QR4cyVuSMt1nc;118e4a zr4+%RP;6zZ6AHhX&rjBDf zSTk=M{)|ClO|oox03`98EDCUdEOJ}G0Un7n1u%x@U)Hb=<9m@D2W|#J%0ZkdTgWan zemuXHC1FboXH%q(6MI-Q(X9YU_#--Kv#er4Te|85V;Nc-GPN~@h@7PqA_|#X8a`x< zZERWQAAyq4{M!cBQDV;~TfohfF&t5`WGnEB790C9r7C{^S|H!Wl@`i#Rr%`|_G|AAF?KtP0yiU34 zX#V$?OHF1k3k^Pbr{%|`ij9l_04vV~4JP*bpX-^pr6E$_+$r2yFjak3z3GFB{%4p= z<(o>4KYk20-BBFF+$O8YwR16%z=&N_e{yfy+LSu?-tHu5{>Hgnk-sQ>bl~5AgDYAt zd36HZ9$A&<>S(F`!wI8S#qU3(4qma7%-;wnDRV`dz5W|a9{8~)aC_!%Z>sh8FQ%eO zjLhh>9SFsg*S}U9<(puf?ly39vJ0j<-k&fR)qVfg?)k*!^`?)QO9@lgS7~^3qaQz% z&A93!Ac`CP6LM<^CX1IH8q<45cBU zf#e=jt%9sdVO7#ftG9FEln$G#Bv6r&QBMGne)isJrIVwfFR>xV@32^C<7FjX&@O7% zJDXx5u6M)E_b@i_`jf{Gv@EO5n;D|kAD1j^*!eD^%KrVEw>l}YTz}ue>+i7B_ZS;z z@CsOeEB&7#YW;rUfd__}=^$crRmMe&jgbegRQuz{{fS_M(Kg-r5=bQuOXBDD^L8iMR9C_Sk%jt9Z(Xj+`l!ir9 zjYT#Xu?mgMKr>z2a^B1Ov#(r~XDZqnaJGk$JGQ_19?p5+%a6)80n~JICuOc(G&Ols z&9RK~Z{Ld#IJYx~zINY0y&Ml^)@4!meS6tu?V8j{Vh^h~b2N2R%^b~jbG9|jRu#j| zR+R|K_n6BryKEHC)$;utqy0O;LZ5>%6fF%kkv;&*GgZ=dw0*7a`@dlzO4r@X8de?v z6&sm~v&yO!8wzgK3Fdnwfiskbp15-j?NDJ>>3{QC6X}C%fL3nji4eF$)ovI=?!RG_ zT1o7k&6SE{Sc8cjrm|zxX_e4FuS((M%2lBPPxarvQB?LnGjC}K+?*Mz6T7Ih^)VhZ zizXjw{4jj&N~Cnt)TJu>`-hQh|7;B`7vzLWN7`hTS{M5Y>X1n6z;=umwBrOeay>nv36pb}i|NKF{ME~?mfM=H{X*nIOcQE;2z#;O;U(cb#aOQ8-aVvGlw9rnT3#ivMT8Ihsfv z^m06srn4A~HF<&e zzF?96maM?9$x5P{tSYVEg$n)Z_4<6t%A=aBDycqj1I|cRnN+XOt5og`ug~Z8&RHJS z>6+_x>gIZ#qOn#dX>Hc2>T7lN*~_DvtiY=eUg%q}D0n;Uud7epsS>Xh2*45 z05Bl{m=yrb2>|9b?~MZl0OL)kXWg&q)LJ-#)@EO~0}UsSBMqdFW19EF|Ig^Edd&^# I%b?N$08}WZYybcN diff --git a/common/car/src/main/res/mipmap-hdpi/ic_delete_round.webp b/common/car/src/main/res/mipmap-hdpi/ic_delete_round.webp deleted file mode 100644 index 9bb57ba3f0a90c2c8e279171435cec0720a7779b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3464 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 diff --git a/common/car/src/main/res/mipmap-hdpi/ic_launcher.webp b/common/car/src/main/res/mipmap-hdpi/ic_launcher.webp deleted file mode 100644 index da24c35fec0b2cd51f61561bf7c44b4956109715..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2966 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 diff --git a/common/car/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/common/car/src/main/res/mipmap-mdpi/ic_launcher_round.webp deleted file mode 100644 index 940caf57b8fa2e2c381731b615ff19f4ba84fec8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2610 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 U;t4?F3FDrB`}X4*@CSqe0IIhBGynhq diff --git a/common/car/src/main/res/mipmap-xhdpi/ic_delete.webp b/common/car/src/main/res/mipmap-xhdpi/ic_delete.webp deleted file mode 100644 index 4e2031e836bc9e290927cedc768a3bc3647e99a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3104 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 diff --git a/common/car/src/main/res/mipmap-xhdpi/ic_delete_round.webp b/common/car/src/main/res/mipmap-xhdpi/ic_delete_round.webp deleted file mode 100644 index d5c635eb5d9bc38c815efa2b38e777cfb6446fcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4720 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 IQr1w40td`hvj6}9 diff --git a/common/car/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/common/car/src/main/res/mipmap-xhdpi/ic_launcher_round.webp deleted file mode 100644 index 56b8e2b2a3f1b5d9c2bd326c9e1e8c3303e56ce8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5254 zcmV;16nX1XNk&F~6aWBMMM6+kP&iC+6aWA(U%(d-HQBxZ;JoDKTio@=oSAG^v1c7S zS;V%v2$sQQZQHxCZ7$<1n%P+!@gK1#cYfdZ`+j%!^!ckFja%c%w&tX^+Zea@^fb<@ z{%YKs_ng?OZF}-mY@cl2+SWa(87H-E+qP}Hzd6~r{$l;k>73ebZ|bQYZQE{8>#6CX zzir!^HhcC5e!seZmDJ`NRz>R;Jh(%H!=bggVY3>kEl|UfP%lPp+qS1|bN}`HjeJd8 zS3-MF&|u@2jkdfrBQ%i^Xw!lPfM6p{2W-K+b!=0y%%Cf{*Dj9A*F(_NTF1|E|>Yf z6iE;ghHU-*^gEH^?>_~Z{`{|0roaBJl>XnhYCC?}9*5d4WLl3xYw{?R#;&Ivqas=Q zlT|W4NcPP%kh(kTSmpgBlG;CQ&b8Ku!NmO`bkeEdI_W|%y?p7cCmcSEM%=f`Bog|c zHQw?%|6VsCM5|PoEIIj&kb)4Bjg>B%nVTDAC@R0+Bidfwy7~Ql<8ME?J>1bhJu0Q_ zEBxxpX6waz`^6f7wKhz3daK)A_`k>h=hCjxBideND5}1G&RGc|iffr*4+SAjiWQz|*b1xjg!8%vGE`(n?xjx2wh zcQE$Pe*FADl>^!)v5TJ z^;y<;RHAsDte!?l#{d57+OeRrUw?Ovs;Eq*q86P9D*M(zh-@BqEkcZt=slq^(RZ(^ zp)8meLx;*a_2}pKs!2~Z?==P2Ng~NPvFDravFRC_^I59S%)IV#M=@u8+*NfdXJIgr zVJ~$r0Hly>$z*&*-@Wk<8;$kYu0OE0IypV^={AJaiaHWjWSD8lGF+0bBLboKyn5f; z+306k8|~cPH5Tnj-k5~RvDQHN$( zf>g_0>zb!R4=GlanM%mb|Ct0MnPfejuQNYRWf@xDm$)TdHd?Ri$ZmEUPc8}vp{+zO zgGK546EgJ087uo-Q&v$;9)wo+K*mUK;7{eEu$LRz>*Vfou4GoSv{!y5hbTGTkw(v@ z8=Br1yQa?2-HN}wikj%ltm5?}=Rg|JZ|UEqTR%dZ*T5cRQVWh${KXZzmuo7J#6p&I z5-_qj-Jl?f-k)TCuV8xxnTuuu&7~%i@Cwp*MIn@JnvrF!4CTXj^Pzk=!O>rcOtU9o z=l_h3kuZnnNdIk&5b6U@AAi_vKCdIJR;B;gXVyw5vX+jP;M>hOK_}Xicq0mdf zk@#u)e(YjBBuyvPIh=}T=k5XVAP3hseyv1`o)|%P2tRGbMvR7d&P}!xkCp3*Ik=Lf z=zL3dJyh7|sCa_twCvzIQL1i=fJY~SvOnS>3=&K)SvDdJKCDAgWq(KfVsWg&wOT#} z68p^c&I&3=mA0krj1urj(-l?c%dxz3;315g8`s?+rJVQ1Z1euI-FI+sGpdR`@g>kq4)Pvw4Hd11S-TfQw;ojI$FD zr58RVE`kvf)4}8$I3s+v!Nh{eTlMhXPHy>Z|+2h(#gHvAEgM`9CPWEF8!F; z2osi0?!W_%7FougZg;9xg{?`+_uU(RzJ~W-;IddMux|mIt9nRIP^o6RDmFrgqN-x( z09;i6{#$q4!s|SmYmww8v2xL zWZZ&`4^t58*C5L>RD|*&2ilfxlD6`u)<-BqhgtdCUySl+d1poWkc^vGVl4zG_um$} znW#UCG(ViQ&u^r)H9>DI{Nh5+#D4uDX1wnh0(K<Y1!wdxc|{NwkkpkN)@An8ZN!za^dnFWPp@d13c7s()lLb$3p>a2Ti@hbobYPIlu z5P!N^7!~CXNE%Nf6Boo<@7w|obYLMIUf;l+XmuR;&E6n`t;Rzrt#~MCpkJD_|1%YY z0ydvaME7qf(FfN(ha4ID&8~7Q9bwYDY6Vnxkw&;XIk%ib zI6d(Q9B4V(MUk441A^nT6A0S2QCY2Xj0Cf)pj`r?0lcOhi!HDRy`e1ocXw>8U4T9M;}=nW zZdNnmCB}Xv6gtW~@pP-?J^_HRR!hjk2>?X8TWtO5m<~Yb=l8M<7d<}S6Y!U-K{ODFvg015JN>79I~8*W-e z6~D%A{Q;upw_nnAL||7EKg)1_?4hh$=|-?CLQU_!K-jx`2xKK2%E%vb_(Kt*-~(%= zWN@9l%N(K=n+l(p3r+WC=iV_FTJZTNgt>uD-CO_4M@e2`Omrz-E~s8UVhuoK5?;x} zW)3&oD-=V&m;;+|DgiXq>07p|$9(wA>I?uN(E3!XN)Ur`dMb$MXbU!NPSJ`u58-fe zH8#-~TOg)t*{+@OXC-w3AiyBzV!LKggLLlR5UtHHu<;UdP%L>3+OTPLwgKYa1`hSS zfs-_1U=~fv*5Xdzy>S#%yXQ_zF14{4gGdUl8ln+#bMimkktqw$Q``66mPbvcshX3H}i9hORX8D{{bLJ z?QaYLDgItGLI9AKWTx@n10l*g_GF%*;l$M}o<~av`NZMl39I+IB6k4bmWIK@y65HLR2J12w=c>;7k&v&r8{0;2_+wMUeLJ6 z@5EIKPaggg#25gGwYR_ysV6l-MFzI&4`J0j9AeEkQBI1r(1gPjhf4CE2 z%$ooZG4NaUqB^yc@VxA2Nr%Btt4&RD<0nQ41q0u>jzWY8*ryv^9kwXI_@R9=0OWVB z5tqYU7=sQ)RTt;R-S>@w(^C&jOsBRM0E#_%aAGX4(NPotvb#fDZ~OvY7bSe2#ZKeV z9?DToM0(gsz{;W!u6I^qTFEC@`5a*o0Ubs^)uvV+g;>{l3EIBOM$&(U?w`CvtRhr0LnH`WLdrrZ<5C;${Bc%J+0NAS8jl0n9TAt$eb&A-qeVyZF^ zx0>^rdVQSs#3N5K6-)3lifM3ijU-B*%!Db_uzW{D+2}&b?RF`2h%=I z1rJ{gb14^VuCWo`*PQrjXlnbugz~?dgRO{m)m344uDbEbP@lJsuXAW(B>L>tAK-mW zaJ{s($n#5;!~1*D2oYF~r%57j$Ft4HJbYUaq2hWgTRB4Uyr%0x6nA;$X~)&gG$Wl_ z@OG3xZ-2rlo_1Eofw*2guLb2#Qf`5x+67dK)qY!uXjERzyBmVQ--Z*JsJ4w|!}fgU z5yZaI=f`i^7 zA>28?_fOvt`^xCi&atWqx8+1$cSlha124S*plAo8>gyhoKVXVxLLG>!1W0ofTMHR4 zfcE?QOXHr~T>AI>y*H(_I3_d)>`wdQ8ZAtV+{iAU|- z-oa_V6GDvZfmoBYUh-RnQS*9vl9skJLcm4X*7`$Z0*n0b^+>FZ3-9Z93g`U(E#!C= zU#4xY(%_4)7(v2Uu(M7FfZ}aW)}N^=Jp*G^|H_aNLJ^oU)JeRq4ds@eLI`+3I%IBd zs{@}Em>i_uwGk_rDzh`;)ZD9&{6A07stxZ%_FOD=t={@Hy+x;Trh?am|4h{#g_<`p zkj1&mk|QeE?K&mD?w;L8hfzY{g&cXV#R2Z;T5^42Eh@_XH2+!_Agu7!rRNC%C@kY((;()2 zbC+(}r$VG9r0S-~mc^saD$<7HeF4qn`D-rY z$pi~tuYkDyOB4b?^ANV?`X9EPdKC}F9QI|06?9n3jVKZQxjA~?@(P3E-yjH zig23~u(BRvVMURdR-2j%qm}*zfcghr#*?L)ODf=`=qCZ7ECAGshO%Ea7VWWnd#9o- z(kuJU8%iVUdbl9-6a&qlyBaB)^}Ko|AM1OWr8gew3ajS70f5?TT3-Qa=9rwHp7IYm zd{C3}v|k&!R$}o)F0y%Tv-zT1@s)S%aY61JZHNd;PBgSF&Ro-$E#>~KM9pu%jQSeW zzp%a<1ArTj&yEc2>NUT1?fKykY6WLbM%|j1TPSlW0|3>Uigd?EmU6pX=3KIWFZS{X z3VwGZ%e_ejU#DC1a*eGrNQG0#ERGIK13(q0rDOA`()RbBLmhhMGf^%(cI5r5M9^=KPW;~IR)Bq4$Uop(38~{`;;`-h=v_^P2uu(a3Qge-*^UFz5t}*wJ zoCs`Cj)c&OuRdk*Gq3O4Y9c%FPX>T=9V#d}#_+CpSDixZMwOSXgFAo%FuTJ-5s7V@!5qR5uy*`gU=rr~G1>unYiH`m>ATp<_^|@j@V@ zva!w=V?{FoN#lu%BF1k>BT7Y&@xr>+N1hwRWxS|gJaqoE<$)&oHhwoQF~qc(qMvkB zyp**ZUIJ+7C2Y@%hPJ+I(V_3H{ndwZ_coZn0b_~KNK~rT)$wYqCA+rg)>n`K8Vzr` z`uCVFz!MXY`pKqFF8!oqdS7~sf)YS2XBEGVxAoE7P+sHX2)Mq|U!;4ymh9xFeqpcN zvm?h$z)t;P7Ha_amg@Ag*r`7`WZHN*kxBco~9rGR2$>l6PrGnF{a5} z9A3BPqq^#^b-$R#E08F_;FueYjs4Y`d>_^@p*8&{*2dHf99-17CfuvJjZ$S;W4gc z{5SxJ0zld%lg)h1OP%%45Y6i8Hp!<3HRFj1i&rl&sA-`LvPXaM5cAAGhUKL$1prlcwW~{6jxql{L%ewO zo0$%}fEv2W1xy71AZ}VXg-pGIm!orh%yUxolcP(uz8kD%G}C(*K-zK<6R%dAnJpld MnVDM6%g#ms0L=neF8}}l diff --git a/common/car/src/main/res/mipmap-xxhdpi/ic_delete.webp b/common/car/src/main/res/mipmap-xxhdpi/ic_delete.webp deleted file mode 100644 index 3cbf6d0a91ebff723f60967fb59cea86bc83a849..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4098 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 AasU7T diff --git a/common/car/src/main/res/mipmap-xxhdpi/ic_delete_round.webp b/common/car/src/main/res/mipmap-xxhdpi/ic_delete_round.webp deleted file mode 100644 index aa08b89750f81bac5aab4f81d35caee420d0a60e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7062 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 Ak^lez diff --git a/common/car/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/common/car/src/main/res/mipmap-xxhdpi/ic_launcher.webp deleted file mode 100644 index 284db5a46566966f4be924538d219c63aaa40920..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5712 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 Qk%+XU%Mn)r5(&R^Y5$|=S^xk5 diff --git a/common/car/src/main/res/mipmap-xxxhdpi/ic_delete.webp b/common/car/src/main/res/mipmap-xxxhdpi/ic_delete.webp deleted file mode 100644 index 1aae1c182502ce13d981fcb89304e01f7cabdde9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5554 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 A9smFU diff --git a/common/car/src/main/res/mipmap-xxxhdpi/ic_delete_round.webp b/common/car/src/main/res/mipmap-xxxhdpi/ic_delete_round.webp deleted file mode 100644 index b5a8d5148410cd02f5963444eaa23e0e00affe4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9806 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

fZN;yKE#=d{*&+U-gO#hD% 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 diff --git a/common/car/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/common/car/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp deleted file mode 100644 index 56a171bf30c14d5fccae2ea729d8bca28d5f20a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11906 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 Ij?Ci%0AOAaCjbBd diff --git a/common/car/src/main/res/values-de/strings.xml b/common/car/src/main/res/values-de/strings.xml deleted file mode 100644 index d7acf7b..0000000 --- a/common/car/src/main/res/values-de/strings.xml +++ /dev/null @@ -1,308 +0,0 @@ - - - - - "Beenden" - "Aktualisieren" - "Schließen" - "Zugriff gewähren" - "Standortermittlung aktivieren" - "Ignorieren" - "Stopp" - "Mehr" - "Anrufen" - "Optionen" - "Suchen" - "Aktiviert" - "Deaktiviert" - "An" - "Aus" - "Einstellungen" - "Annehmen" - "Ablehnen" - "OK" - "Auslösen" - "Arbeitsweg" - "Abmelden" - "Ja" - "Nein" - "Herangezoomt" - "Herausgezoomt" - "Favoriten" - "Kein Favorit!" - "Navigation angefragt" - "Ausgewählte Route" - "Sichtbare Routen" - "Einstellungen angeklickt" - "Aktion „Geparkt“" - "„Mehr“ angeklickt" - "Standortermittlung erlauben, um aktuellen Standort anzuzeigen" - "Navigieren" - "Wählen" - "Adresse" - "Smartphone" - "Fehler beim Starten der Navigation" - "Fehler beim Starten des Telefons" - "Einstellungen für die Anzeige" - "Paket wurde nicht gefunden." - "Alle Berechtigungen wurden erteilt. Du kannst sie in den Einstellungen deaktivieren." - "Die App benötigt Zugriff auf die folgenden Berechtigungen:\n" - "Berechtigungen über das Smartphone-Display erteilen" - "Berechtigungen zur Standortermittlung auf Gerät aktivieren" - "Standortermittlung auf dem Smartphone-Bildschirm aktivieren" - "Erforderliche Berechtigungen" - "Demo der Berechtigungsanfrage" - "Bildschirm zum Stornieren der Reservierung" - "Reservierung wurde storniert" - "Ergebnisdemo" - "Diese App wurde nicht für ein Ergebnis gestartet" - "Diese App wurde aufgerufen, um Ergebnisse aus %s zu erhalten. Wähle das Ergebnis aus, das an den Anrufer zurückgesendet werden soll." - "Angekommen!" - "Benachrichtigung senden" - "Benachrichtigungen starten" - "Benachrichtigungen deaktivieren" - "Benachrichtigung" - "Wichtigkeit" - "Kategorie" - "Aktiv" - "Standard" - "Hoch" - "Gering" - "Unbekannt" - "Benachrichtigungsdemo" - "Verschiedene Demos" - "Navigationsdemo" - "Demo für „Angekommen“" - "Demo des Kreuzungsbildes" - "Demos der Navigationsvorlage" - "Demo der Kartenvorlage mit Bereich" - "Demo der Kartenvorlage mit Liste" - "Benachrichtigung beginnen" - "Benachrichtigung deaktivieren" - "Demo der Navigationsbenachrichtigung" - "Geradeaus fahren" - "Rechts abbiegen" - "Die 520 nehmen" - "Tankstelle" - "Kurze Route" - "Weniger Verkehr" - "Carpool-Spur-fähig" - "Lange Route" - "Weiter, um die Navigation zu starten" - "Weiter zur Route" - "Route" - Neue Route Berechnung - "Demo der Navigationsvorlage für Ortslisten" - "Demo der Routenvorschauvorlage" - "Demo der Benachrichtigungsvorlage" - "Demo der Navigationsvorlage nur mit Karte" - "Navigationsdemos" - "Blitzer noch da?" - "Vor 10 Minuten gemeldet" - "Keine Berechtigung für Mautkarte." - "Keine Berechtigung für Akkustand." - "Keine Berechtigung für Geschwindigkeit." - "Keine Berechtigung für Kilometerstand." - "Keine Berechtigung für Status des Elektrofahrzeugs." - "Keine Berechtigung für Beschleunigungsmesser." - "Keine Berechtigung für Gyroskop." - "Keine Berechtigung für Kompass." - "Keine Berechtigung für Auto-Hardware-Standort." - "Mautinformationen werden abgerufen." - "Akkustand wird abgerufen." - "Geschwindigkeit wird abgerufen." - "Kilometerstand wird abgerufen." - "Status des Elektrofahrzeugs wird abgerufen." - "Beschleunigungsmesser wird abgerufen." - "Gyroskop wird abgerufen." - "Kompass wird abgerufen." - "Standort wird abgerufen." - "Status der Mautkarte" - "Niedriger Akkustand" - "Bereich" - "Kraftstoff" - "Akku" - "Geschwindigkeit anzeigen" - "Rohgeschwindigkeit" - "Einheit" - "Kilometerzähler" - "Ladeanschluss des Elektrofahrzeugs verbunden" - "Ladeanschluss des Elektrofahrzeugs ist offen" - "Beschleunigungsmesser" - "Gyroskop" - "Kompass" - "Standort der Auto-Hardware" - "Keine Aktion möglich" - "Zweiter Eintrag" - "Dritter Eintrag" - "Vierter Eintrag" - "Der fünfte Eintrag hat einen langen Titel" - "Der sechste Eintrag hat einen langen Titel" - "Demo der Rastervorlage" - "Titel für „Nur geparkt“" - "Mehr Text für „Nur geparkt“." - "Angeklickte Zeile" - "Erste Textzeile" - "Zweite Textzeile" - "Dieser Subtext kann im uneingeschränkten Modus (z. B. Parkmodus, eingeschränkter Modus für niedrige Geschwindigkeit) vollständig angezeigt werden. Im eingeschränkten Modus (z. B. Fahrmodus) wird er jedoch nach zwei Zeilen abgeschnitten. Zu Testzwecken ist dieser Subtext extrem lang." - "Titel" - "Demo für Listenvorlage" - "Demo der langen Nachrichtenvorlage" - "Dein Host unterstützt keine lange Nachrichtenvorlage" - "Inkompatibler Host" - "Keine Orte" - "Bitte lies unsere ""Nutzungsbedingungen" - "Google Log-in" - "PIN nutzen" - "QR-Code" - "Dein Host unterstützt keine Anmeldevorlage" - "Inkompatibler Host" - "E-Mail" - "Anmelden" - "Anmeldedaten eingeben" - "Der Nutzername muss eine gültige E-Mail-Adresse sein" - "Der Nutzername muss mindestens %s Zeichen enthalten" - "Ungültiges Passwort" - "Passwort" - "Nutzername" - "Gib diese PIN auf deinem Telefon ein" - "Zum Anmelden QR-Code scannen" - "Über Google anmelden" - "Schließe mit dieser Schaltfläche dein Google Log-in ab" - "Du bist angemeldet!" - "Anmeldung abgeschlossen" - "Anmeldungsvorlagendemo" - "Tab-Vorlage – Demos" - "Tab-Vorlage – Demo" - "Tab „Nachrichten“" - "Tab „Bereich“" - "Tab „Liste“" - "Tab „Raster“ mit langem Tab-Titel" - "Tab „Suche“" - "Tab wird geladen" - "Tab-Vorlage – Demo wird geladen" - "Tab-Vorlage – Demo „Keine Tabs“" - "Für einen unbekannten Host können keine Bilder angezeigt werden" - "Symbol" - "Demo der Contentanbietersymbole" - "Symboldemo" - "Das App-Symbol" - "Ein Vektor-Drawable ohne Färbung" - "Ein Vektor-Drawable mit einer Färbung" - "Ein Vektor-Drawable mit einem App-Designattribut für die Farbe" - "Eine PNG wurde als Ressource gesendet" - "Eine PNG-Datei, als Bitmap gesendet" - "Nur ein Titel" - "Titel mit App-Symbol" - "Titel mit Bild für Ressourcen-ID" - "Titel mit SVG-Bild" - "Farbiger Sekundärtext" - "Titel mit mehreren Zeilen Sekundärtext" - "Du darfst irren, und irren, und irren – aber immer weniger, und weniger, und weniger." - "– Piet Hein" - "Demo der Zeilen" - "Demos für Text und Symbole" - "Demo der Zeilen mit Text und Symbolen" - "Demo der Optionsfeldlisten" - "Demo der auswählbaren Listen" - "Option 1" - "Option 2" - "Option 3" - "Zeile mit Optionsfeld" - "Zeile mit Optionsfeld und Symbol" - "Zeile mit Optionsfeld, Symbol und farbigem Text" - "Zusätzlicher Text" - "Beispiel für auswählbare Liste" - "Demo der Aufgabenbeschränkung" - "Hierdurch wird die maximale Anzahl an Schritten überschritten und du gelangst zu einem neuen Bildschirm." - "Aufgabe: Schritt %1$d von %2$d" - "Klicken, um fortzufahren" - "Bitte rufe die verschiedenen Vorlagen auf und achte darauf, dass sich das Auto im Fahrmodus befindet" - "Demo der Ein-/Aus-Schaltfläche" - "Test der Ein-/Aus-Schaltfläche" - "Zustandsorientierte Änderungen sind erlaubt" - "Test der Ein-/Aus-Schaltfläche aktivieren" - "Klicke diese Option an, um den Test der Ein-/Aus-Schaltfläche zu aktivieren" - "Test der Ein-/Aus-Schaltfläche" - "Zustandsorientierte Änderungen sind erlaubt" - "Bildtest" - "Bildänderungen sind erlaubt" - "Zusätzliche Daten" - "Updates beim Zurückgehen erlaubt." - "Test der Ein-/Aus-Schaltfläche aktiviert" - "Test der Ein-/Aus-Schaltfläche deaktiviert" - "Demo der sekundären Aktion und der Dekoration" - "Test für sekundäre Aktion" - "Nur die sekundäre Aktion kann ausgewählt werden" - "Dekorationstest" - "Sekundäre Aktionen und Dekoration" - "Zeile mit sekundären Aktionen und Dekoration mit einem sehr langen Titel" - "Auch diese Zeile kann ausgewählt werden" - Eintrag gelöscht - "Zeile mit der primären Aktion ist ausgewählt" - "Demo für Elementliste mit Abschnitten" - "Liste 1" - "Liste 2" - "Subtext unter jeder Liste" - "Leere Liste – Demo" - "Die Liste ist leer" - "Demos der verschiedenen Vorlagen" - "Demos anzeigen" - "Demo der Layoutvorlagen" - "Demo der Rastervorlagen" - "Bildschirm für Voice Access-Demo" - "Nutzerinteraktionen" - "Demos zur Berechtigungsanfrage" - "Anwendungs-Overflow-Validator" - "Bitte teste die folgenden Vorlagen, wenn du" - "das Fahrzeug vom Park- in den Fahrmodus umschaltest" - "Berechtigungsgruppe" - "Berechtigungsgruppe für die Showcase App" - "Zugriff auf genauen Standort" - "Berechtigung für Zugriff auf den genauen Standort" - "Zugriff auf ungefähren Standort" - "Berechtigung für Zugriff auf den ungefähren Standort" - "Zugriff für Audioaufnahmen" - "Berechtigung für Zugriff für Audioaufnahmen" - "Gefärbter Ressourcenvektor" - "Bitmap-Infobild" - "Farbige Textmarkierung" - "Bitmap-Bild" - "Textlabel" - "Demo: Parken im Vergleich zu Fahren" - "Displays in Autos." - "Navigation" - Anzeige - "3D Gebäude" - "Laden deaktiviert" - "Ladebildschirm" - "Schieberegler zum Hinzufügen/Entfernen von Farben" - "Kartenvorlage mit Ein-/Aus-Schaltflächen" - "Mautstraßen meiden" - "Routenoptionen" - "Autobahnen meiden" - "Fähren meiden" - "Kartenbezogene Demos" - "Demos von Karten mit Inhalten" - "Karte mit Demo der Nachrichtenvorlage" - "Demo einer Karte mit Rastervorlage" - Routen - Letzte Ziele - Kontakte - Jetzt losfahren - diff --git a/common/car/src/main/res/values/attrs.xml b/common/car/src/main/res/values/attrs.xml deleted file mode 100644 index d6b0be2..0000000 --- a/common/car/src/main/res/values/attrs.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - diff --git a/common/car/src/main/res/values/strings.xml b/common/car/src/main/res/values/strings.xml deleted file mode 100644 index fa2c99d..0000000 --- a/common/car/src/main/res/values/strings.xml +++ /dev/null @@ -1,415 +0,0 @@ - - - Navigation - - - Exit - Refresh - Close - Grant Access - Enable Location - Cancel - Stop - More - Call - Options - Search - Checked - Unchecked - On - Off - Settings - Accept - Reject - OK - Throw - Commute - Sign out - Yes - No - - - Zoomed in - Zoomed out - Favorites - Not a favorite! - Navigation Requested - Selected route - Visible routes - Clicked Settings - Parked action - Clicked More - Grant location Permission to see current location - - - - Navigate - Dial - Address - Phone - - - Failure starting navigation - Failure starting dialer - - Display settings - - - Package Not found. - All permissions have been granted. Please revoke permissions from Settings. - The app needs access to the following permissions:\n - Grant Permission on the phone screen - Enable Location Permissions on device - Enable location on the phone screen - Required Permissions - Request Permission Demo - - - Cancel Reservation Screen - Reservation canceled - - - Result demo - This app was not started for result - This app was called for result from %s. Please select the result to send back to the caller - - - Arrived! - - - Roy st 520 - I5 Aurora Ave N - - - Send a notification - Start notifications - Stop notifications - Notification - Importance - Category - Ongoing - Default - High - Low - Unknown - Notification Demo - - - Misc Demos - - - Navigating Demo - Arrived Demo - Junction Image Demo - Navigation Template Demos - - - Map Template with Pane Demo - Map Template with List Demo - - - Start Notification - Stop Notification - Navigation Notification Demo - - - Go Straight - Turn Right - Take 520 - Gas Station - - Short route - Less busy - HOV friendly - Long route - Continue to start navigation - Continue to route - Routes - New Route calculation - - - Place List Navigation Template Demo - Route Preview Template Demo - Notification Template Demo - Navigation Template with map only Demo - Navigation Demos - Still a speed trap? - Reported 10m ago - - - No TollCard Permission. - No EnergyLevel Permission. - No Speed Permission. - No Mileage Permission. - No EV status Permission. - No Accelerometer Permission. - No Gyroscope Permission. - No Compass Permission. - No CarHardwareLocation Permission. - Fetching Toll information. - Fetching Energy Level. - Fetching Speed. - Fetching Mileage. - Fetching EV status. - Fetching Accelerometer. - Fetching Gyroscope. - Fetching Compass. - Fetching Location. - Toll card state - Low energy - Range - Fuel - Battery - Display Speed - Raw Speed - Unit - Odometer - Ev Charge Port Connected - Ev Charge Port Open - Accelerometer - Gyroscope - Compass - Car Hardware Location - - - Non-actionable - Second Item - Third Item - Fourth Item - Fifth Item has a long title set - Sixth Item has a long title set - Grid Template Demo - - - Parked Only Title - More Parked only text. - Clicked row - First line of text - Second line of text - This subtext can fully display in unrestricted mode (ex. parking mode, restricted low speed mode). But this will truncate to only two lines while in restricted mode (ex. driving mode). For testing purposes, this subtext is super super super super super long - Title - List Template Demo - - - Long Message Template Demo - Lorem ipsum dolor sit amet, consectetur adipiscing elit. \nAliquam laoreet ac metus eu commodo. Sed a congue diam, sed dictum lectus. Nam nec\ntristique dolor, quis sodales arcu. Etiam at metus eu nulla auctor varius. \nInteger dolor lorem, placerat sit amet lacus in, imperdiet semper dui. Vestibulum \nante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; \nQuisque gravida fermentum egestas.\n\n\n\nUt ut sodales mi. Aenean porta vel ipsum sed lacinia. Morbi odio ipsum, hendrerit \neu est et, sollicitudin finibus diam. Nunc sit amet felis elit. Orci varius \nnatoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed \nvestibulum, tellus a rutrum auctor, diam arcu vestibulum purus, nec mollis ligula \nnisi in nisi. Donec sem tortor, pharetra sed fermentum sit amet, ullamcorper nec \nsapien. Aliquam risus arcu, porttitor eu dui nec, vulputate tempus libero. \nCurabitur sit amet tristique orci. Suspendisse et odio tempus, tempus turpis quis,\n euismod est.\n\n\n\nVestibulum mauris ante, luctus viverra nisi eget, blandit facilisis nulla. \nPhasellus ex lorem, semper in vestibulum nec, aliquet vel elit. Aliquam vitae \nligula nec enim dictum lobortis. Sed varius turpis quis nisi tempus varius. Sed \nnon sollicitudin magna, at mattis tortor. Curabitur quis ligula eget lorem mattis \ntincidunt et in sapien. Curabitur a elit nisi. Aliquam ex arcu, hendrerit eget \nturpis vitae, bibendum vulputate nibh. Fusce vitae ex aliquet, tristique magna eu,\n vulputate dui. Aenean tempor viverra tortor non pharetra. Pellentesque convallis \nnec risus a auctor. Praesent non sem non eros tincidunt ullamcorper efficitur non \nlacus.\n\n\n\nSuspendisse accumsan ultricies egestas. Aenean leo ligula, congue ac erat eu, \nlobortis ultricies lorem. Nulla finibus, arcu sed tincidunt lobortis, magna justo \nrutrum ligula, et mattis felis turpis vel ex. Morbi ac auctor ex, at bibendum sem.\n Vestibulum a tortor iaculis, viverra felis vitae, lobortis est. Duis sit amet \ncondimentum sem. Ut molestie, dolor pretium imperdiet maximus, enim orci porta \nquam, id gravida enim nunc vitae lacus. Pellentesque habitant morbi tristique \nsenectus et netus et malesuada fames ac turpis egestas. Nullam vel justo eu risus \nlobortis dignissim sit amet ullamcorper nulla. Donec finibus cursus purus \nporttitor pellentesque.\n\n\n\nDonec at vehicula ante. Suspendisse rutrum nisl quis metus faucibus lacinia. \nVestibulum eros sapien, eleifend nec accumsan a, interdum sed nisi. Aenean posuere\n ultrices lorem non pharetra. Nulla non porta ligula. Maecenas at elit diam. \nNullam gravida augue et semper eleifend. Fusce venenatis ac arcu et luctus. Mauris\n ultricies urna non dui interdum, vel hendrerit est aliquam. Fusce id dictum leo, \nfringilla egestas ipsum. - Your host doesn\'t support Long Message template - Incompatible host - - - No Places - - - - Please review our terms of service - Google sign-in - Use PIN - QR Code - Your host doesn\'t support Sign In template - Incompatible host - Email - Sign in - Enter your credentials - User name must be a valid email address - User name must be at least %s characters long - Invalid password - password - Username - Type this PIN in your phone - Scan QR Code to sign in - Sign in with Google - Use this button to complete your Google sign-in - You are signed in! - Sign in completed - Sign In Template Demo - - - Tab Template Demos - Tab Template Demo - Message Tab - Pane Tab - List Tab - Grid Tab with Long Tab Title - Search Tab - Loading Tab - Tab Template Loading Demo - Tab Template No Tabs Demo - - - Images cannot be displayed for an unknown host - Icon - Content Provider Icons Demo - - - Icons Demo - The app icon - A vector drawable, without a tint - A vector drawable, with a tint - A vector drawable, with an app\'s theme attribute for its color - A PNG, sent as a resource - A PNG, sent as a bitmap - - - Just a title - Title with app icon - Title with resource ID image - Title with SVG image - Colored secondary text - Title with multiple secondary text lines - Err and err and err again, but less and less and less. - - Piet Hein - Rows Demo - - - Text and Icons Demos - Rows with Text and Icons Demo - - - Radio Button Lists Demo - Selectable Lists Demo - Option 1 - Option 2 - Option 3 - Row with Radio Button - Row with Radio Button and Icon - Row with Radio Button and Icon and Colored Text - Some additional text - Sample selectable list - - - Task Restriction Demo - This will overflow the step count, and lead you to a new screen. - Task step %1$d of %2$d - Click to go forward - Please visit the different templates and ensure the car is in driving mode - - - Toggle Button Demo - Toggle test - Stateful changes are allowed - Enable Toggle Test - Check this one to enable the toggle test - Toggle test - Stateful changes are allowed - Image test - Image changes are allowed - Additional Data - Updates allowed on back operations. - Toggle Test Enabled - Toggle Test Disabled - - - Secondary Action and Decoration Demo - Secondary Action Test - Only the secondary action can be selected - Decoration Test - Secondary Actions and Decoration - Row with Secondary Actions and Decoration with a really long title - The row can also be selected - Place deleted - Row primary action is selected - - - - Sectioned Item List Demo - List 1 - List 2 - Subtext under each list - - - Empty List Demo - The list is empty - - - Misc Templates Demos - CAL API Level: %d - Showcase Demos - Template Layout Demos - Grid Template Demos - - - Voice Access Demo Screen - User Interactions - Request Permissions Demos - - - Application Overflow Validator - Please test the following templates while changing - the vehicle from parked to driving state - - - Permission Group - Permission Group for Showcase App - Access to Fine Location - Permission for Access to Fine Location - Access to Coarse Location - Permission for Access to Coarse Location - Access to Record Audio - Permission for Access to Record Audio - - - Google Kirkland - 747 6th St South, Kirkland, WA 98033 - Tinted resource vector - +14257395600 - Google Bellevue - 1120 112th Ave NE, Bellevue, WA 98004 - Image resource bitmap - +14252301301 - Google South Lake Union - 1021 Valley St, Seattle, WA 98109 - Colored text marker - +12065311800 - Google Seattle - 601 N 34th St, Seattle, WA 98103 - Image bitmap - +12068761800 - 1600 Amphitheatre Pkwy, Mountain View, CA 94043 - +16502530000 - Google Bothell - 11831 North Creek Pkwy, Bothell, WA 98011 - Seward Park - 5900 Lake Washington Blvd S, Seattle, WA 98118 - Luther Burbank Park - 2040 84th Ave SE, Mercer Island, WA 98040 - Heritage Park - 111 Waverly Way, Kirkland, WA 98033 - Text label - n/a - - Parking Vs Driving Demo - Cluster Displays in cars! - Navigation - Display - 3D Building - Loading disabled - Loading screen - Toggle to add/remove color - Map Template with Toggles - Avoid tolls - Route options - Avoid highways - Avoid ferry - Map Demos - Map With Content Demos - Map With Message Template Demo - Map With Grid Template Demo - Routes - Recent - Contacts - Drive now - diff --git a/common/car/src/main/res/values/styles.xml b/common/car/src/main/res/values/styles.xml deleted file mode 100644 index d983543..0000000 --- a/common/car/src/main/res/values/styles.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - diff --git a/common/car/src/main/res/xml/automotive_app_desc.xml b/common/car/src/main/res/xml/automotive_app_desc.xml deleted file mode 100644 index cec730a..0000000 --- a/common/car/src/main/res/xml/automotive_app_desc.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/common/data/build.gradle.kts b/common/data/build.gradle.kts index a43bdf1..a23b530 100644 --- a/common/data/build.gradle.kts +++ b/common/data/build.gradle.kts @@ -1,4 +1,5 @@ import org.gradle.kotlin.dsl.annotationProcessor +import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { @@ -8,8 +9,6 @@ plugins { kotlin("kapt") } - - android { namespace = "com.kouros.data" compileSdk = 36 @@ -33,13 +32,14 @@ android { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } - kotlinOptions { - jvmTarget = "11" + kotlin { + compilerOptions { + jvmTarget = JvmTarget.JVM_11 + } } } dependencies { - implementation(libs.android.sdk.turf) implementation(libs.androidx.core.ktx) implementation(libs.androidx.appcompat) implementation(libs.material) @@ -47,6 +47,9 @@ dependencies { implementation(libs.koin.core) implementation(libs.koin.android) implementation(libs.koin.compose.viewmodel) + implementation(libs.androidx.car.app) + implementation(libs.android.sdk.turf) + // objectbox implementation(libs.objectbox.kotlin) diff --git a/common/data/src/main/java/com/kouros/navigation/data/Data.kt b/common/data/src/main/java/com/kouros/navigation/data/Data.kt index 1ba89aa..e5a5b1e 100644 --- a/common/data/src/main/java/com/kouros/navigation/data/Data.kt +++ b/common/data/src/main/java/com/kouros/navigation/data/Data.kt @@ -16,19 +16,12 @@ package com.kouros.navigation.data -import android.R import android.location.Location import android.location.LocationManager import android.net.Uri -import com.google.gson.GsonBuilder -import com.kouros.navigation.data.valhalla.Maneuvers -import com.kouros.navigation.data.valhalla.ValhallaJson -import com.kouros.navigation.utils.NavigationUtils.createGeoJson -import com.kouros.navigation.utils.NavigationUtils.decodePolyline import io.objectbox.annotation.Entity import io.objectbox.annotation.Id import kotlinx.serialization.Serializable -import org.maplibre.geojson.Point data class Category( val id: String, @@ -61,7 +54,16 @@ data class ContactData( data class StepData ( var instruction: String, - var leftDistance: Double, + + var leftStepDistance: Double, + + var maneuverType: Int, + + var icon: Int, + + var arrivalTime : Long, + + var leftDistance: Double ) diff --git a/common/data/src/main/java/com/kouros/navigation/model/RouteModel.kt b/common/data/src/main/java/com/kouros/navigation/model/RouteModel.kt index 3265233..b6702fc 100644 --- a/common/data/src/main/java/com/kouros/navigation/model/RouteModel.kt +++ b/common/data/src/main/java/com/kouros/navigation/model/RouteModel.kt @@ -2,7 +2,12 @@ package com.kouros.navigation.model import android.location.Location import android.location.LocationManager +import androidx.car.app.navigation.model.Maneuver +import androidx.car.app.navigation.model.Step +import com.kouros.data.R +import com.kouros.navigation.data.Constants import com.kouros.navigation.data.Constants.NEXT_STEP_THRESHOLD +import com.kouros.navigation.data.ManeuverType import com.kouros.navigation.data.Place import com.kouros.navigation.data.Route import com.kouros.navigation.data.StepData @@ -10,6 +15,7 @@ import com.kouros.navigation.utils.location import org.maplibre.geojson.FeatureCollection import org.maplibre.geojson.Point import org.maplibre.turf.TurfMeasurement +import java.util.concurrent.TimeUnit import kotlin.math.roundToInt open class RouteModel() { @@ -44,25 +50,51 @@ open class RouteModel() { navigating = true } - - private fun createCenterLocation(): Location { - - val future = TurfMeasurement.center(FeatureCollection.fromJson(route.routeGeoJson)) - val point = future.geometry() as Point - return location(point.longitude(), point.latitude()) + fun stopNavigation() { + route.clear() + navigating = false + currentShapeIndex = 0 + distanceToStepEnd = 0F + beginIndex = 0 + endIndex = 0 } + /** + * Calculates the geographic center of the route's GeoJSON data. + * + * @return A [Location] object representing the center point. + * @throws IllegalStateException if the calculated center does not have valid Point geometry. + */ + private fun createCenterLocation(): Location { + // 1. Create a FeatureCollection from the raw GeoJSON string. + val featureCollection = FeatureCollection.fromJson(route.routeGeoJson) + + // 2. Calculate the center feature of the collection. + val centerFeature = TurfMeasurement.center(featureCollection) + + // 3. Safely access and cast the geometry, throwing an informative error if it fails. + val centerPoint = centerFeature.geometry() as? Point + ?: throw IllegalStateException("Center of GeoJSON is not a valid Point.") + + // 4. Create and return the Location object. + return location(centerPoint.longitude(), centerPoint.latitude()) + } + + /** + * The remaining distance to the step, rounded to the nearest 10 units. + */ val currentDistance: Double - /** Returns the current [Step] with information such as the cue text and images. */ get() { - return ((leftStepDistance()).roundToInt().toDouble() / 10.0).roundToInt() * 10.0 + // This is a more direct way to round to the nearest multiple of 10. + return (leftStepDistance() / 10.0).roundToInt() * 10.0 } + + fun updateLocation(location: Location) { var nearestDistance = 100000.0f - route.currentManeuverIndex = -1 - // find maneuver - for ((i, maneuver) in route.maneuvers.withIndex()) { + for (i in route.currentManeuverIndex.. { - if (route.currentManeuverIndex < route.maneuvers.size) { - val maneuver = route.nextManeuver() - if (maneuver.streetNames != null && maneuver.streetNames.isNotEmpty()) { - text = maneuver.streetNames[0] - } - } - } - } - return StepData(text, distanceStepLeft) - } - /** Calculates the index in a maneuver. */ private fun calculateCurrentShapeIndex( beginShapeIndex: Int, @@ -105,7 +113,7 @@ open class RouteModel() { location: Location ) { var nearestLocation = 100000.0f - for (i in beginShapeIndex..endShapeIndex) { + for (i in currentShapeIndex..endShapeIndex) { val waypoint = Location(LocationManager.GPS_PROVIDER) waypoint.longitude = route.waypoints[i][0] waypoint.latitude = route.waypoints[i][1] @@ -131,6 +139,97 @@ open class RouteModel() { } } + fun currentStep(): StepData { + // Determine if we should display the current or the next maneuver + val distanceToNextStep = leftStepDistance() + val isNearNextManeuver = distanceToNextStep in 0.0..NEXT_STEP_THRESHOLD + val shouldAdvance = + isNearNextManeuver && route.currentManeuverIndex < (route.maneuvers.size - 1) + + // Get the single, correct maneuver for this state + val relevantManeuver = if (shouldAdvance) { + route.nextManeuver() // This advances the route's state + } else { + route.currentManeuver() + } + + // Safely get the street name from the maneuver + val streetName = relevantManeuver.streetNames?.firstOrNull() ?: "" + + // Determine the maneuver type and corresponding icon + val maneuverType = if (hasArrived(relevantManeuver.type)) { + relevantManeuver.type + } else { + ManeuverType.None.value + } + val maneuverIconPair = maneuverIcon(maneuverType) + + // Construct and return the final StepData object + return StepData( + streetName, + distanceToNextStep, + maneuverIconPair.first, + maneuverIconPair.second, + arrivalTime(), + travelLeftDistance() + ) + } + + + fun currentStepx(): StepData { + val maneuver = route.currentManeuver() + var text = "" + if (maneuver.streetNames != null && maneuver.streetNames.isNotEmpty()) { + text = maneuver.streetNames[0] + } + val distanceStepLeft = leftStepDistance() + when (distanceStepLeft) { + in 0.0..Constants.NEXT_STEP_THRESHOLD -> { + if (route.currentManeuverIndex < route.maneuvers.size) { + val maneuver = route.nextManeuver() + if (maneuver.streetNames != null && maneuver.streetNames.isNotEmpty()) { + text = maneuver.streetNames[0] + } + } + } + } + val type = if (hasArrived(maneuverType)) { + maneuver.type + } else { + ManeuverType.None.value + } + var routing: (Pair) = maneuverIcon(type) + when (distanceStepLeft) { + in 0.0..NEXT_STEP_THRESHOLD -> { + if (route.currentManeuverIndex < route.maneuvers.size) { + val maneuver = route.nextManeuver() + val maneuverType = maneuver.type + routing = maneuverIcon(maneuverType) + } + } + } + return StepData(text, distanceStepLeft, routing.first, routing.second, arrivalTime(), travelLeftDistance()) + } + + fun nextStep(): StepData { + val maneuver = route.nextManeuver() + val maneuverType = maneuver.type + val distanceLeft = leftStepDistance() + var text = "" + + when (distanceLeft) { + in 0.0..NEXT_STEP_THRESHOLD -> { + } + else -> { + if (maneuver.streetNames != null && maneuver.streetNames!!.isNotEmpty()) { + text = maneuver.streetNames[0] + } + } + } + val routing: (Pair) = maneuverIcon(maneuverType) + return StepData(text, distanceLeft, routing.first, routing.second, arrivalTime(), travelLeftDistance()) + } + private fun calculateDistance( beginShapeIndex: Int, endShapeIndex: Int, @@ -138,9 +237,7 @@ open class RouteModel() { ): Float { var nearestLocation = 100000.0f for (i in beginShapeIndex..endShapeIndex) { - val polylineLocation = Location(LocationManager.GPS_PROVIDER) - polylineLocation.longitude = route.waypoints[i][0] - polylineLocation.latitude = route.waypoints[i][1] + val polylineLocation = location(route.waypoints[i][0], route.waypoints[i][1]) val distance: Float = location.distanceTo(polylineLocation) if (distance < nearestLocation) { nearestLocation = distance @@ -165,12 +262,21 @@ open class RouteModel() { return timeLeft } + fun arrivalTime(): Long { + val timeLeft = travelLeftTime() + // Calculate the time to destination from the current time. + val nowUtcMillis = System.currentTimeMillis() + val timeToDestinationMillis = + TimeUnit.SECONDS.toMillis(timeLeft.toLong()) + return nowUtcMillis + timeToDestinationMillis + } + /** Returns the current [Step] left distance in m. */ fun leftStepDistance(): Double { val maneuver = route.currentManeuver() var leftDistance = maneuver.length if (endIndex > 0) { - leftDistance = distanceToStepEnd.toDouble() + leftDistance = (distanceToStepEnd / 1000).toDouble() } return leftDistance * 1000 } @@ -192,6 +298,72 @@ open class RouteModel() { return leftDistance } + fun maneuverIcon(routeManeuverType: Int): (Pair) { + var type = Maneuver.TYPE_DEPART + var currentTurnIcon = R.drawable.ic_turn_name_change + when (routeManeuverType) { + ManeuverType.None.value -> { + type = Maneuver.TYPE_STRAIGHT + currentTurnIcon = R.drawable.ic_turn_name_change + } + + ManeuverType.Destination.value, + ManeuverType.DestinationRight.value, + ManeuverType.DestinationLeft.value, + -> { + type = Maneuver.TYPE_DESTINATION + currentTurnIcon = R.drawable.ic_turn_destination + } + + ManeuverType.Right.value -> { + type = Maneuver.TYPE_TURN_NORMAL_RIGHT + currentTurnIcon = R.drawable.ic_turn_normal_right + } + + ManeuverType.Left.value -> { + type = Maneuver.TYPE_TURN_NORMAL_LEFT + currentTurnIcon = R.drawable.ic_turn_normal_left + } + + ManeuverType.RampRight.value -> { + type = Maneuver.TYPE_OFF_RAMP_SLIGHT_RIGHT + currentTurnIcon = R.drawable.ic_turn_slight_right + } + + ManeuverType.RampLeft.value -> { + type = Maneuver.TYPE_TURN_NORMAL_LEFT + currentTurnIcon = R.drawable.ic_turn_normal_left + } + + ManeuverType.ExitRight.value -> { + type = Maneuver.TYPE_TURN_SLIGHT_RIGHT + currentTurnIcon = R.drawable.ic_turn_slight_right + } + + ManeuverType.StayRight.value -> { + type = Maneuver.TYPE_KEEP_RIGHT + currentTurnIcon = R.drawable.ic_turn_name_change + } + + ManeuverType.StayLeft.value -> { + type = Maneuver.TYPE_KEEP_LEFT + currentTurnIcon = R.drawable.ic_turn_name_change + } + + ManeuverType.RoundaboutEnter.value -> { + type = Maneuver.TYPE_ROUNDABOUT_ENTER_CCW + currentTurnIcon = R.drawable.ic_roundabout_ccw + } + + ManeuverType.RoundaboutExit.value -> { + type = Maneuver.TYPE_ROUNDABOUT_EXIT_CCW + currentTurnIcon = R.drawable.ic_roundabout_ccw + } + } + maneuverType = type + return Pair(type, currentTurnIcon) + } + fun isNavigating(): Boolean { return navigating } @@ -200,12 +372,9 @@ open class RouteModel() { return arrived } - fun stopNavigation() { - route.clear() - navigating = false - currentShapeIndex = 0 - distanceToStepEnd = 0F - beginIndex = 0 - endIndex = 0 + fun hasArrived(type: Int): Boolean { + return type == ManeuverType.DestinationRight.value + || maneuverType == ManeuverType.Destination.value + || maneuverType == ManeuverType.DestinationLeft.value } } \ No newline at end of file diff --git a/common/data/src/main/java/com/kouros/navigation/utils/NavigationUtils.kt b/common/data/src/main/java/com/kouros/navigation/utils/NavigationUtils.kt index 27cce56..1857253 100644 --- a/common/data/src/main/java/com/kouros/navigation/utils/NavigationUtils.kt +++ b/common/data/src/main/java/com/kouros/navigation/utils/NavigationUtils.kt @@ -13,10 +13,17 @@ import org.maplibre.geojson.Point import org.maplibre.turf.TurfMisc import java.lang.Math.toDegrees import java.lang.Math.toRadians +import java.time.LocalDateTime +import java.time.ZoneId +import java.time.ZoneOffset +import java.time.ZonedDateTime +import java.time.format.DateTimeFormatter +import java.time.format.FormatStyle import kotlin.math.asin import kotlin.math.atan2 import kotlin.math.cos import kotlin.math.pow +import kotlin.math.roundToInt import kotlin.math.sin @@ -191,4 +198,16 @@ fun location(longitude : Double, latitude: Double): Location { location.longitude = longitude location.latitude = latitude return location +} + +fun formatDateTime(time: Long): String { + val dateFormatter = DateTimeFormatter.ofLocalizedTime( FormatStyle.SHORT) + val dateTime = LocalDateTime.ofEpochSecond(time / 1000, 0, ZoneOffset.UTC) + val zdt = ZonedDateTime.of(dateTime, ZoneId.of("Europe/Berlin")) + return zdt.format(dateFormatter) +} + +fun Double.round(numFractionDigits: Int): Double { + val factor = 10.0.pow(numFractionDigits.toDouble()) + return (this * factor).roundToInt() / factor } \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 411fbe0..b65dd53 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,30 +13,31 @@ junitVersion = "1.3.0" espressoCore = "3.7.0" kotlinxSerializationJson = "1.9.0" lifecycleRuntimeKtx = "2.10.0" -composeBom = "2025.11.01" +composeBom = "2025.12.00" appcompat = "1.7.1" material = "1.13.0" carApp = "1.7.0" -androidx-car = "1.7.0-beta01" +androidx-car = "1.7.0" objectboxKotlin = "5.0.1" objectboxProcessor = "5.0.1" -ui = "1.9.5" +ui = "1.10.0" material3 = "1.4.0" -runtimeLivedata = "1.9.5" -foundation = "1.9.5" +runtimeLivedata = "1.10.0" +foundation = "1.10.0" maplibre-composeMaterial3 = "0.12.2" maplibre-compose = "0.12.1" playServicesLocation = "21.3.0" -runtime = "1.9.5" +runtime = "1.10.0" accompanist = "0.37.3" -uiVersion = "1.9.5" -uiText = "1.9.5" +uiVersion = "1.10.0" +uiText = "1.10.0" navigationCompose = "2.9.6" -uiToolingPreview = "1.9.5" -uiTooling = "1.9.5" +uiToolingPreview = "1.10.0" +uiTooling = "1.10.0" material3WindowSizeClass = "1.4.0" uiGraphics = "1.10.0" window = "1.5.1" +foundationLayout = "1.10.0" [libraries] @@ -59,7 +60,6 @@ material = { group = "com.google.android.material", name = "material", version.r androidx-car-app = { group = "androidx.car.app", name = "app", version.ref = "carApp" } objectbox-kotlin = { module = "io.objectbox:objectbox-kotlin", version.ref = "objectboxKotlin" } objectbox-processor = { module = "io.objectbox:objectbox-processor", version.ref = "objectboxProcessor" } -ui = { group = "androidx.compose.ui", name = "ui", version.ref = "ui" } maplibre-compose = { module = "org.maplibre.compose:maplibre-compose", version.ref = "maplibre-compose" } maplibre-composeMaterial3 = { module = "org.maplibre.compose:maplibre-compose-material3", version = "maplibre-composeMaterial3" } androidx-material3 = { group = "androidx.compose.material3", name = "material3", version.ref = "material3" } @@ -77,6 +77,7 @@ androidx-compose-material3-window-size-class1 = { group = "androidx.compose.mate androidx-app-automotive = { module = "androidx.car.app:app-automotive", version.ref = "androidx-car" } androidx-compose-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics", version.ref = "uiGraphics" } androidx-window = { group = "androidx.window", name = "window", version.ref = "window" } +androidx-compose-foundation-layout = { group = "androidx.compose.foundation", name = "foundation-layout", version.ref = "foundationLayout" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" }