diff --git a/README.md b/README.md index 572890ae..d3c204f8 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,11 @@ Please let me now if you do not want to be listed in the supporters list. * Peter Füllhase * Lukas Bruckenberger * Stefan Süssenguth + * Jürgen Bereuter + * Markus Enseroth + * Jacob Frostholm + * Christoffer Gennerud + * Samuel Lodyga @@ -56,6 +61,28 @@ Currently the following languages are already available: - :sweden: Swedish - :norway: Norwegian - :denmark: Danish + - :fr: French + - :pt: Portuguese + - :fn: Finnish + +
+

Translators

+ + * DoubleYouEl + * Robin Hellström + * Jakob Schlyter + * Oddvarr + * Emil Blixt Hansen + * Ian Mascarenhas + * Dominik Brüning + * Juha Mönkkönen + * Ossi Lahtinen + * J-P + * Laurent Vitalis + * Jere Kataja + * Pedro Leite + +
### Rules for contributing code:
@@ -72,12 +99,9 @@ Please also be aware that I will not just include everything. It has to fit into ## Contributors: - Dario Bosshard (Consumption and charge curve diagrams) -- Dutch translation: DoubleYouEl -- Swedish translation: Robin Hellström, jschlyter -- Norwegian translation: Oddvarr -- Danish translation: Emil Blixt Hansen - FreshDave29 - rdu +- Jannick Fahlbusch ## Links: @@ -91,6 +115,14 @@ Discussion in the international Polestar forums: [Polestar Forum](https://www.po ## Changelog [DE]: +### 0.24.1 (18.05.2023) +- Höhenunterschied in der Zusammenfassung hinzugefügt (experimentell) +- Falsche Einheitem im Diagramm der Zusammenfassung behoben +- Falsche Datumsangaben der Ladekurven in der Zusammenfassung behoben +- Bedingungen für Neustart-Benachrichtigungen verbessert +- Bedingungen für Energieerfassung angepasst (experimentell) +- Französische, portugisische und finnische Übersetzungen hinzugefügt + ### 0.24.0 (02.04.2023) - Mehrere Live-Daten-APIs hinzugefügt: - ABRP OTA Live Data diff --git a/automotive/build.gradle b/automotive/build.gradle index 12e40e31..878914c1 100644 --- a/automotive/build.gradle +++ b/automotive/build.gradle @@ -12,8 +12,8 @@ android { applicationId "com.ixam97.carStatsViewer" minSdkVersion 29 targetSdkVersion 33 - versionCode 106 - versionName "0.24.0" + versionCode 111 + versionName "0.24.1.0005" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/automotive/src/main/java/com/ixam97/carStatsViewer/AutoStartReceiver.kt b/automotive/src/main/java/com/ixam97/carStatsViewer/AutoStartReceiver.kt index ba6c3a6b..1633e99f 100644 --- a/automotive/src/main/java/com/ixam97/carStatsViewer/AutoStartReceiver.kt +++ b/automotive/src/main/java/com/ixam97/carStatsViewer/AutoStartReceiver.kt @@ -19,17 +19,32 @@ class AutoStartReceiver: BroadcastReceiver() { "crash" to context.getString(R.string.restart_notification_reason_crash), "reboot" to context.getString(R.string.restart_notification_reason_reboot), "update" to context.getString(R.string.restart_notification_reason_update), + "termination" to "an unexpected termination" ) var reason: String? = null + InAppLogger.d("AutoStartReceiver, Service started: ${CarStatsViewer.foregroundServiceStarted}, dismissed: ${CarStatsViewer.restartNotificationDismissed}") + if (!CarStatsViewer.appPreferences.autostart) return + if (CarStatsViewer.foregroundServiceStarted) return + if (CarStatsViewer.restartNotificationDismissed) return intent?.let { + InAppLogger.d("${intent.toString()} ${intent.extras?.keySet().let { key -> + val stringBuilder = StringBuilder() + key?.forEach { + stringBuilder.append("$it ") + } + stringBuilder.toString() + }}") if (intent.hasExtra("dismiss")) { - CarStatsViewer.restartNotificationDismissed = true - CarStatsViewer.notificationManager.cancel(CarStatsViewer.RESTART_NOTIFICATION_ID) - return + if (intent.getBooleanExtra("dismiss", false)) { + CarStatsViewer.restartNotificationDismissed = true + CarStatsViewer.notificationManager.cancel(CarStatsViewer.RESTART_NOTIFICATION_ID) + InAppLogger.d("AutoStartReceiver: Dismiss intent") + return + } } reason = if (intent.hasExtra("reason")) { reasonMap[intent.getStringExtra("reason")] @@ -42,7 +57,7 @@ class AutoStartReceiver: BroadcastReceiver() { } } - InAppLogger.i("AutStartReceiver fired. Reason: $reason") + InAppLogger.i("AutoStartReceiver fired. Reason: $reason") val notificationText = if (reason != null) { @@ -59,15 +74,6 @@ class AutoStartReceiver: BroadcastReceiver() { }, PendingIntent.FLAG_IMMUTABLE ) - - val actionDismissPendingIntent = PendingIntent.getBroadcast( - context.applicationContext, - 0, - Intent(context.applicationContext, this.javaClass).apply { - putExtra("dismiss", "") - }, - PendingIntent.FLAG_ONE_SHOT - ) val actionActivityPendingIntent = PendingIntent.getActivity( context.applicationContext, 0, @@ -82,7 +88,7 @@ class AutoStartReceiver: BroadcastReceiver() { .setContentTitle(notificationText) .setContentText(context.getString(R.string.restart_notification_message)) .setSmallIcon(R.drawable.ic_launcher_foreground) - .setOngoing(true) + .setOngoing(false) startupNotificationBuilder.apply { addAction(Notification.Action.Builder( @@ -98,7 +104,14 @@ class AutoStartReceiver: BroadcastReceiver() { addAction(Notification.Action.Builder( null, context.getString(R.string.restart_notification_dismiss), - actionDismissPendingIntent + PendingIntent.getBroadcast( + context.applicationContext, + 0, + Intent(context.applicationContext, AutoStartReceiver::class.java).apply { + putExtra("dismiss", true) + }, + PendingIntent.FLAG_UPDATE_CURRENT + ) ).build()) } diff --git a/automotive/src/main/java/com/ixam97/carStatsViewer/activities/AboutActivity.kt b/automotive/src/main/java/com/ixam97/carStatsViewer/activities/AboutActivity.kt index e4b77362..7d0d14bd 100644 --- a/automotive/src/main/java/com/ixam97/carStatsViewer/activities/AboutActivity.kt +++ b/automotive/src/main/java/com/ixam97/carStatsViewer/activities/AboutActivity.kt @@ -51,6 +51,26 @@ class AboutActivity : Activity() { } about_contributors_text.text = contributors + + about_translators.setOnClickListener { + val translatorsDialog = AlertDialog.Builder(this).apply { + setPositiveButton(getString(R.string.dialog_close)) { dialog, _ -> + dialog.cancel() + } + setTitle(getString(R.string.about_translators)) + val translatorsArray = resources.getStringArray(R.array.translators) + var translators = "" + for ((index, translator) in translatorsArray.withIndex()) { + translators += translator + if (index < translatorsArray.size - 1) translators += ", " + } + setMessage(translators) + setCancelable(true) + create() + } + translatorsDialog.show() + } + about_supporters.setOnClickListener { val supportersDialog = AlertDialog.Builder(this).apply { setPositiveButton(getString(R.string.dialog_close)) { dialog, _ -> diff --git a/automotive/src/main/java/com/ixam97/carStatsViewer/activities/MainActivity.kt b/automotive/src/main/java/com/ixam97/carStatsViewer/activities/MainActivity.kt index 32c99981..e6a3b804 100644 --- a/automotive/src/main/java/com/ixam97/carStatsViewer/activities/MainActivity.kt +++ b/automotive/src/main/java/com/ixam97/carStatsViewer/activities/MainActivity.kt @@ -230,6 +230,8 @@ class MainActivity : FragmentActivity(), SummaryFragment.OnSelectedTripChangedLi main_button_performance.isEnabled = true main_button_performance.colorFilter = PorterDuffColorFilter(getColor(R.color.disabled_tint), PorterDuff.Mode.SRC_IN) + main_button_history.isEnabled = false + main_button_history.colorFilter = PorterDuffColorFilter(getColor(R.color.disabled_tint), PorterDuff.Mode.SRC_IN) enableUiUpdates() @@ -238,8 +240,8 @@ class MainActivity : FragmentActivity(), SummaryFragment.OnSelectedTripChangedLi setPositiveButton(getString(R.string.dialog_close)) { dialog, _ -> dialog.cancel() } - setTitle(getString(R.string.main_changelog_dialog_title, BuildConfig.VERSION_NAME)) - val changesArray = resources.getStringArray(R.array.changes_0_24) + setTitle(getString(R.string.main_changelog_dialog_title, BuildConfig.VERSION_NAME.dropLast(5))) + val changesArray = resources.getStringArray(R.array.changes_0_24_1) var changelog = "" for ((index, change) in changesArray.withIndex()) { changelog += "• $change" diff --git a/automotive/src/main/java/com/ixam97/carStatsViewer/dataManager/DataCollector.kt b/automotive/src/main/java/com/ixam97/carStatsViewer/dataManager/DataCollector.kt index c0d2e305..ff59b49a 100644 --- a/automotive/src/main/java/com/ixam97/carStatsViewer/dataManager/DataCollector.kt +++ b/automotive/src/main/java/com/ixam97/carStatsViewer/dataManager/DataCollector.kt @@ -2,6 +2,7 @@ package com.ixam97.carStatsViewer.dataManager import android.app.* import android.car.Car +import android.car.VehicleIgnitionState import android.car.VehiclePropertyIds import android.car.VehicleUnit import android.car.hardware.CarPropertyValue @@ -135,6 +136,7 @@ class DataCollector : Service() { Thread.setDefaultUncaughtExceptionHandler { t, e -> InAppLogger.e("Car Stats Viewer has crashed!\n ${e.stackTraceToString()}") + /* val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager val serviceIntent = Intent(applicationContext, AutoStartReceiver::class.java) serviceIntent.action = "com.ixam97.carStatsViewer.RestartAction" @@ -146,6 +148,8 @@ class DataCollector : Service() { PendingIntent.FLAG_ONE_SHOT ) alarmManager.set(AlarmManager.RTC, System.currentTimeMillis() + 100, pendingIntent) + + */ exitProcess(0) } @@ -293,6 +297,25 @@ class DataCollector : Service() { delay(10_000) } } + + serviceScope.launch { + val serviceIntent = Intent(applicationContext, AutoStartReceiver::class.java) + val pendingIntent = PendingIntent.getBroadcast( + applicationContext, + 0, + serviceIntent, + PendingIntent.FLAG_ONE_SHOT + ) + while (true) { + InAppLogger.d("Keep Alive Alarm") + serviceIntent.action = "com.ixam97.carStatsViewer.RestartAction" + serviceIntent.putExtra("reason", "termination") + // serviceIntent.putExtra("dismiss", false) + val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager + alarmManager.set(AlarmManager.RTC, System.currentTimeMillis() + 5000, pendingIntent) + delay(4000) + } + } } override fun onDestroy() { @@ -390,13 +413,13 @@ class DataCollector : Service() { if (gageValueChanged) sendBroadcast(Intent(getString(R.string.ui_update_gages_broadcast))) } when (dataManager.driveState) { - DrivingState.DRIVE -> { - if (!dataManager.CurrentPower.isInitialValue) { - val usedEnergyDelta = (dataManager.currentPower / 1_000) * ((dataManager.CurrentPower.timeDelta / 3.6E12).toFloat()) - dataManager.usedEnergy += usedEnergyDelta - dataManager.consumptionPlotEnergyDelta += usedEnergyDelta - } - } + // DrivingState.DRIVE -> { + // if (!dataManager.CurrentPower.isInitialValue) { + // val usedEnergyDelta = (dataManager.currentPower / 1_000) * ((dataManager.CurrentPower.timeDelta / 3.6E12).toFloat()) + // dataManager.usedEnergy += usedEnergyDelta + // dataManager.consumptionPlotEnergyDelta += usedEnergyDelta + // } + // } DrivingState.CHARGE -> { refreshProperty(dataManager.BatteryLevel.propertyId, dataManager) if (!dataManager.CurrentPower.isInitialValue && !dataManager.BatteryLevel.isInitialValue && dataManager.CurrentPower.timeDelta < CHARGE_PLOT_MARKER_THRESHOLD_NANOS && dataManager.BatteryLevel.timeDelta < CHARGE_PLOT_MARKER_THRESHOLD_NANOS) { @@ -425,6 +448,11 @@ class DataCollector : Service() { } else -> { // Supplemental energy usage? + if (!dataManager.CurrentPower.isInitialValue && dataManager.currentIgnitionState >= VehicleIgnitionState.ON) { + val usedEnergyDelta = (dataManager.currentPower / 1_000) * ((dataManager.CurrentPower.timeDelta / 3.6E12).toFloat()) + dataManager.usedEnergy += usedEnergyDelta + dataManager.consumptionPlotEnergyDelta += usedEnergyDelta + } } } } @@ -527,13 +555,17 @@ class DataCollector : Service() { private fun ignitionUpdater(dataManager: DataManager) { if (dataManager == DataManagers.values().first().dataManager) { InAppLogger.d("Ignition switched to: ${ignitionList[dataManager.currentIgnitionState]}") + } + val previousDrivingState = dataManager.DriveState.lastDriveState + resetAutoTrips(previousDrivingState, dataManager, dataManager.currentIgnitionState) driveStateUpdater(dataManager) } private fun driveState(previousDrivingState: Int, dataManager: DataManager) { if (dataManager == DataManagers.CURRENT_TRIP.dataManager) startLocationClient() - resetAutoTrips(previousDrivingState, DrivingState.DRIVE, dataManager) + // resetAutoTrips(previousDrivingState, DrivingState.DRIVE, dataManager) + resetAutoTrips(previousDrivingState, dataManager, dataManager.currentIgnitionState) resumeTrip(dataManager) if (previousDrivingState == DrivingState.CHARGE) stopChargingSession(dataManager) if (previousDrivingState != DrivingState.UNKNOWN) dataManager.plotMarkers.endMarker(System.currentTimeMillis(), dataManager.traveledDistance) @@ -551,7 +583,8 @@ class DataCollector : Service() { } private fun parkState(previousDrivingState: Int, dataManager: DataManager) { - resetAutoTrips(previousDrivingState, DrivingState.PARKED, dataManager) + // resetAutoTrips(previousDrivingState, DrivingState.PARKED, dataManager) + resetAutoTrips(previousDrivingState, dataManager, dataManager.currentIgnitionState) if (previousDrivingState == DrivingState.DRIVE){ pauseTrip(dataManager) dataManager.plotMarkers.addMarker(PlotMarkerType.PARK, System.currentTimeMillis(), dataManager.traveledDistance) @@ -786,11 +819,12 @@ class DataCollector : Service() { } } - private fun resetAutoTrips(previousDrivingState: Int, newDrivingState: Int, dataManager: DataManager) { + private fun resetAutoTrips(previousDrivingState: Int, /*newDrivingState: Int, */ dataManager: DataManager, newIgnitionState: Int) { // Handle resets on different dataManagers if (DataManagers.CURRENT_MONTH.dataManager == dataManager && DataManagers.CURRENT_MONTH.doTrack && - newDrivingState == DrivingState.DRIVE) { + // newDrivingState == DrivingState.DRIVE) { + newIgnitionState == VehicleIgnitionState.ON) { // Reset if in different Month than start and save old month if (Date().month != DataManagers.CURRENT_MONTH.dataManager.tripStartDate.month) { InAppLogger.i("TRIP DATA: Saving past Month") @@ -804,7 +838,8 @@ class DataCollector : Service() { } if (DataManagers.AUTO_DRIVE.dataManager == dataManager && DataManagers.AUTO_DRIVE.doTrack && - newDrivingState == DrivingState.DRIVE) { + // newDrivingState == DrivingState.DRIVE) { + newIgnitionState == VehicleIgnitionState.ON) { // Reset if parked for x hours if (DataManagers.AUTO_DRIVE.dataManager.plotMarkers.markers.isNotEmpty()) { if ( diff --git a/automotive/src/main/java/com/ixam97/carStatsViewer/fragments/SummaryFragment.kt b/automotive/src/main/java/com/ixam97/carStatsViewer/fragments/SummaryFragment.kt index 9485a52f..e837f706 100644 --- a/automotive/src/main/java/com/ixam97/carStatsViewer/fragments/SummaryFragment.kt +++ b/automotive/src/main/java/com/ixam97/carStatsViewer/fragments/SummaryFragment.kt @@ -23,6 +23,7 @@ import com.ixam97.carStatsViewer.utils.StringFormatters import com.ixam97.carStatsViewer.views.PlotView import kotlinx.android.synthetic.main.fragment_summary.* import java.util.concurrent.TimeUnit +import kotlin.math.absoluteValue class SummaryFragment() : Fragment(R.layout.fragment_summary) { @@ -210,6 +211,16 @@ class SummaryFragment() : Fragment(R.layout.fragment_summary) { summary_consumption_plot.addPlotLine(consumptionPlotLine, consumptionPlotLinePaint) summary_consumption_plot.sessionGapRendering = PlotSessionGapRendering.JOIN + if (appPreferences.consumptionUnit) { + consumptionPlotLine.Configuration.Unit = "Wh/%s".format(appPreferences.distanceUnit.unit()) + consumptionPlotLine.Configuration.LabelFormat = PlotLineLabelFormat.NUMBER + consumptionPlotLine.Configuration.Divider = appPreferences.distanceUnit.toFactor() * 1f + } else { + consumptionPlotLine.Configuration.Unit = "kWh/100%s".format(appPreferences.distanceUnit.unit()) + consumptionPlotLine.Configuration.LabelFormat = PlotLineLabelFormat.FLOAT + consumptionPlotLine.Configuration.Divider = appPreferences.distanceUnit.toFactor() * 10f + } + summary_button_secondary_dimension.text = when (appPreferences.secondaryConsumptionDimension) { 1 -> getString(R.string.main_secondary_axis, getString(R.string.main_speed)) 2 -> getString(R.string.main_secondary_axis, getString(R.string.main_SoC)) @@ -230,6 +241,17 @@ class SummaryFragment() : Fragment(R.layout.fragment_summary) { summary_consumption_plot.invalidate() summary_distance_value_text.text = StringFormatters.getTraveledDistanceString(tripData.traveledDistance) + + // val altList = tripData.consumptionPlotLine.mapNotNull { it.Altitude } + // val altFirst = if (altList.isEmpty()) altList.first() else null + // val altMax = altList.maxOrNull() + // val altMin = altList.minOrNull() + // var altLast = if (altList.isEmpty()) altList.last() else null + + val altUp = tripData.consumptionPlotLine.mapNotNull { it.AltitudeDelta }.filter { it > 0 }.sum() + val altDown = tripData.consumptionPlotLine.mapNotNull { it.AltitudeDelta }.filter { it < 0 }.sum().absoluteValue + + summary_altitude_value_text.text = StringFormatters.getAltitudeString(altUp, altDown) summary_used_energy_value_text.text = StringFormatters.getEnergyString(tripData.usedEnergy) summary_avg_consumption_value_text.text = StringFormatters.getAvgConsumptionString(tripData.usedEnergy, tripData.traveledDistance) summary_travel_time_value_text.text = StringFormatters.getElapsedTimeString(tripData.travelTime) @@ -349,7 +371,7 @@ class SummaryFragment() : Fragment(R.layout.fragment_summary) { getString(R.string.settings_sub_title_last_charge_plot), progress + 1, tripData.chargeCurves.size, - StringFormatters.getDateString(tripData.chargeCurves.last().chargeStartDate)) + StringFormatters.getDateString(tripData.chargeCurves[progress].chargeStartDate)) when (progress) { 0 -> { diff --git a/automotive/src/main/java/com/ixam97/carStatsViewer/liveData/abrpLiveData/AbrpLiveData.kt b/automotive/src/main/java/com/ixam97/carStatsViewer/liveData/abrpLiveData/AbrpLiveData.kt index f78ee28e..801fff64 100644 --- a/automotive/src/main/java/com/ixam97/carStatsViewer/liveData/abrpLiveData/AbrpLiveData.kt +++ b/automotive/src/main/java/com/ixam97/carStatsViewer/liveData/abrpLiveData/AbrpLiveData.kt @@ -20,7 +20,9 @@ import java.net.URL class AbrpLiveData ( private val apiKey : String, detailedLog : Boolean = true -): LiveDataApi("com.ixam97.carStatsViewer_dev.abrp_connection_broadcast", detailedLog) { +): LiveDataApi("com.ixam97.carStatsViewer.abrp_connection_broadcast", detailedLog) { + + var lastPackage: String = "" private fun send( abrpDataSet: AbrpDataSet, @@ -73,6 +75,8 @@ class AbrpLiveData ( flush() close() } + lastPackage = jsonObject.toString(4) + // InAppLogger.v("ABRP JSON object: ${jsonObject.toString(4)}") responseCode = con.responseCode if (detailedLog) { diff --git a/automotive/src/main/java/com/ixam97/carStatsViewer/liveData/http/HttpDataSet.kt b/automotive/src/main/java/com/ixam97/carStatsViewer/liveData/http/HttpDataSet.kt index d6198600..734347e2 100644 --- a/automotive/src/main/java/com/ixam97/carStatsViewer/liveData/http/HttpDataSet.kt +++ b/automotive/src/main/java/com/ixam97/carStatsViewer/liveData/http/HttpDataSet.kt @@ -32,4 +32,7 @@ data class HttpDataSet( val isCharging: Boolean, val isParked: Boolean, val isFastCharging: Boolean, + + // ABRP debug + val abrpPackage: String? = null ) diff --git a/automotive/src/main/java/com/ixam97/carStatsViewer/liveData/http/HttpLiveData.kt b/automotive/src/main/java/com/ixam97/carStatsViewer/liveData/http/HttpLiveData.kt index 7199e62a..78399776 100644 --- a/automotive/src/main/java/com/ixam97/carStatsViewer/liveData/http/HttpLiveData.kt +++ b/automotive/src/main/java/com/ixam97/carStatsViewer/liveData/http/HttpLiveData.kt @@ -13,6 +13,7 @@ import com.ixam97.carStatsViewer.appPreferences.AppPreferences import com.ixam97.carStatsViewer.dataManager.DataManager import com.ixam97.carStatsViewer.dataManager.DrivingState import com.ixam97.carStatsViewer.liveData.LiveDataApi +import com.ixam97.carStatsViewer.liveData.abrpLiveData.AbrpLiveData import com.ixam97.carStatsViewer.utils.InAppLogger import java.io.DataOutputStream import java.net.HttpURLConnection @@ -23,7 +24,7 @@ import java.util.* class HttpLiveData ( detailedLog : Boolean = true -): LiveDataApi("com.ixam97.carStatsViewer_dev.http_live_data_connection_broadcast", detailedLog) { +): LiveDataApi("com.ixam97.carStatsViewer.http_live_data_connection_broadcast", detailedLog) { private fun addBasicAuth(connection: HttpURLConnection, username: String, password: String) { @@ -162,7 +163,10 @@ class HttpLiveData ( // Helpers isCharging = dataManager.chargePortConnected, isParked = (dataManager.driveState == DrivingState.PARKED || dataManager.driveState == DrivingState.CHARGE), - isFastCharging = (dataManager.chargePortConnected && dataManager.currentPower < -11_000_000) + isFastCharging = (dataManager.chargePortConnected && dataManager.currentPower < -11_000_000), + + // ABRP debug + abrpPackage = (CarStatsViewer.liveDataApis[0] as AbrpLiveData).lastPackage ) ) } diff --git a/automotive/src/main/java/com/ixam97/carStatsViewer/plot/objects/PlotGlobalConfiguration.kt b/automotive/src/main/java/com/ixam97/carStatsViewer/plot/objects/PlotGlobalConfiguration.kt index fbaaaf74..4c727aba 100644 --- a/automotive/src/main/java/com/ixam97/carStatsViewer/plot/objects/PlotGlobalConfiguration.kt +++ b/automotive/src/main/java/com/ixam97/carStatsViewer/plot/objects/PlotGlobalConfiguration.kt @@ -12,7 +12,11 @@ object PlotGlobalConfiguration { PlotRange(0f, 40f, 0f, 240f, 40f), PlotLineLabelFormat.NUMBER, PlotHighlightMethod.AVG_BY_TIME, - "km/h" + "km/h", + DimensionSmoothing = 0.005f, + DimensionSmoothingType = PlotDimensionSmoothingType.PERCENTAGE, + SessionGapRendering = PlotSessionGapRendering.JOIN, + DimensionSmoothingHighlightMethod = PlotHighlightMethod.AVG_BY_TIME ), PlotDimensionY.DISTANCE to PlotLineConfiguration( PlotRange(), @@ -31,9 +35,9 @@ object PlotGlobalConfiguration { PlotLineLabelFormat.PERCENTAGE, PlotHighlightMethod.LAST, "% SoC", - DimensionSmoothing = 1f, - DimensionSmoothingType = PlotDimensionSmoothingType.PIXEL, - DimensionSmoothingHighlightMethod = PlotHighlightMethod.MAX, + DimensionSmoothing = 0.005f, + DimensionSmoothingType = PlotDimensionSmoothingType.PERCENTAGE, + DimensionSmoothingHighlightMethod = PlotHighlightMethod.LAST, SessionGapRendering = PlotSessionGapRendering.GAP ), PlotDimensionY.ALTITUDE to PlotLineConfiguration( diff --git a/automotive/src/main/java/com/ixam97/carStatsViewer/utils/StringFormatters.kt b/automotive/src/main/java/com/ixam97/carStatsViewer/utils/StringFormatters.kt index bee31f21..b9f5fef9 100644 --- a/automotive/src/main/java/com/ixam97/carStatsViewer/utils/StringFormatters.kt +++ b/automotive/src/main/java/com/ixam97/carStatsViewer/utils/StringFormatters.kt @@ -69,4 +69,16 @@ object StringFormatters { val unitString = "°C" return "%d %s".format(temperature.toInt(), unitString) } + + fun getAltitudeString(altUp: Float?, altDown: Float?): String { + if (altUp == null || altDown == null) return "" + val unitAltUp = appPreferences.distanceUnit.asSubUnit(altUp).toInt() + val unitAltDown = appPreferences.distanceUnit.asSubUnit(altDown).toInt() + val unitString = appPreferences.distanceUnit.subUnit() + val formattedAltUp = "%d %s".format(unitAltUp, unitString) + val formattedAltDown = "%d %s".format(unitAltDown, unitString) + val formattedDelta = "%d %s".format(unitAltUp - unitAltDown, unitString) + + return "↑$formattedAltUp, ↓$formattedAltDown, Δ$formattedDelta" + } } \ No newline at end of file diff --git a/automotive/src/main/res/layout/activity_about.xml b/automotive/src/main/res/layout/activity_about.xml index 528b1a91..1f272b03 100644 --- a/automotive/src/main/res/layout/activity_about.xml +++ b/automotive/src/main/res/layout/activity_about.xml @@ -118,6 +118,12 @@ style="@style/menu_row_content_text"/> + + + diff --git a/automotive/src/main/res/layout/activity_main.xml b/automotive/src/main/res/layout/activity_main.xml index 76fb6dd7..be504904 100644 --- a/automotive/src/main/res/layout/activity_main.xml +++ b/automotive/src/main/res/layout/activity_main.xml @@ -62,12 +62,12 @@ android:src="@drawable/ic_performance"/> + + + + diff --git a/automotive/src/main/res/values-da/strings.xml b/automotive/src/main/res/values-da/strings.xml index b4453fe6..d62ef4aa 100644 --- a/automotive/src/main/res/values-da/strings.xml +++ b/automotive/src/main/res/values-da/strings.xml @@ -1,9 +1,11 @@ + Tilladelser nødvendigt for brug Denne app kræver tilladelser for at blive brugt. Uden de påkrævede tilladelser kan appen ikke læse data fra bilen. Afslut Car Stats Viewer Giv tilladelse + Ladeport forbundet: Nuværende strømforbrug: Brugt energi: @@ -25,6 +27,7 @@ Skjul hastighed Vis hastighed Sekundær akse: %s + Resumé af turen Nulstil tur Visning kun tilgængelig ved stilstand. @@ -39,6 +42,7 @@ Opladningstid Omgivelsestemperatur Optagelse af opladningssession er blevet afbrudt. Denne værdi er sandsynligvis forkert. + Indstillinger Tilbage Afslut app @@ -57,6 +61,7 @@ Indstillinger: Nuværende forbrug plot: Sidste opladningskurver: + Om Car Stats Viewer Om Car Stats Viewer: Støt udviklingen @@ -71,6 +76,7 @@ Supporters Tak! Mange tak til alle, der har støttet udviklingen af Car Stats Viewer! + Afslutte appen? Log vil blive kopieret til udklipsholder. Luk @@ -81,7 +87,9 @@ Annullere Ja Nej + Debug + Aktuel statistik: Dataindsamlingstjeneste kører Fejl ved læsning af rejsefil @@ -103,9 +111,6 @@ Forskellige fejlrettelser og stabilitetsforbedringer Ændringer i version %s: - Nulstil statistik? - Alle gemte turdata vil blive nulstillet. - Mil som afstandsenhed API-indstillinger %s er genstartet efter %s. @@ -136,7 +141,6 @@ Indtast dine SMTP-legitimationsoplysninger givet af din e-mail-udbyder. Dette bruges til at sende gemte statistikker og fejlretningslogfiler til en email adresse angivet af brugeren. Email adresse SMTP adgangskode - SMTP-server værtsnavn SMTP serverport Brug STARTTLS @@ -163,4 +167,13 @@ Automatisk start af app Hastighed Højde + + Højdeændring tilføjet i turoversigt (eksperimentel) + Rettede forkerte enheder i oversigtsdiagrammet + Rettet forkerte datoer for opladningssessioner i oversigten + Forbedrede betingelser for genstartsmeddelelser + Ændrede betingelser for energisporing (eksperimentelt) + + Højdeændring + Oversættere diff --git a/automotive/src/main/res/values-de/strings.xml b/automotive/src/main/res/values-de/strings.xml index 8cd34d4a..401306b7 100644 --- a/automotive/src/main/res/values-de/strings.xml +++ b/automotive/src/main/res/values-de/strings.xml @@ -1,6 +1,14 @@ + + Höhenunterschied in der Zusammenfassung hinzugefügt (experimentell) + Falsche Einheiten im Diagramm der Zusammenfassung behoben + Falsche Datumsangaben der Ladekurven in der Zusammenfassung behoben + Bedingungen für Neustart-Benachrichtigungen verbessert + Bedingungen für Energieerfassung angepasst (experimentell) + + Mehrere Live-Daten-APIs hinzugefügt:\n- ABRP OTA Live Data\n- HTTP Webhook mit BasicAuth Standorterfassung mit Höhenverlauf hinzugefügt @@ -42,6 +50,7 @@ Berechtigungen erteilen Geschwindigkeit + Höhe Ladekabel angeschlossen: @@ -82,6 +91,7 @@ Ladezeit Außentemperatur Aufzeichnung der Ladekurve unterbrochen. Dieser Wert ist vermutlich nicht korrekt. + Höhenunterschied Einstellungen @@ -152,6 +162,7 @@ Entwicklung unterstützen Besuche das GitHub-Repository um mehr darüber erfahren, wie die Entwicklung der App unterstützt werden kann. Mitwirkende + Übersetzer Kontakt: Sonstiges: Dies ist der beste Ort, um Fehler zu melden oder Wünsche zu äußern. Bitte vor dem Erstellen eines neuen Tickets die bereits vorhandenen beachten. diff --git a/automotive/src/main/res/values-fi/strings.xml b/automotive/src/main/res/values-fi/strings.xml new file mode 100644 index 00000000..9293b939 --- /dev/null +++ b/automotive/src/main/res/values-fi/strings.xml @@ -0,0 +1,182 @@ + + + + Käyttöön tarvittavat käyttöoikeudet + Tämän sovelluksen käyttäminen edellyttää käyttöoikeuksia. Ilman vaadittuja käyttöoikeuksia sovellus ei voi lukea tietoja autosta. + Lopeta Car Stats Viewer + Myönnä käyttöoikeudet + + Latausportti kytketty: + Tämänhetkinen virrankulutus: + Käytetty energia: + Tämänhetkinen nopeus: + Kuljettu matka: + Hetkellinen kulutus: + Keskimääräinen kulutus: + Nollaa tilastot + Kulutus viimeisen 3 km:n matkalta: + Nopeus + Nopeus + Teho + Latausteho + Akun varaustaso + Hetkellinen kulutus + Hylkää latauskaavio + Nollaa latauskaavio + Osamatkan yhteenveto + Piilota nopeus + Näytä nopeus + Toissijainen akseli: %s + + Osamatkan yhteenveto + Nollaa osamatkan tiedot + Näkymä on käytettävissä vain pysäköitynä. + Osamatkan historia + Lataukset + Osamatka alkoi: %s + Käytetty energia + Kuljettu matka + Keskimääräinen kulutus + Matka-aika + Ladattu energia + Latausaika + Ulkolämpötila + Latausistunnon tallennus on keskeytynyt. Tämä arvo on todennäköisesti virheellinen. + + Asetukset + Takaisin + Sulje sovellus + Ilmoitukset + Wh/km kulutusyksikkönä + Virheenkorjaustiedot + Näytä kokeellinen asettelu + Kulutusnäkymä + Latausnäkymä + Tietoja Car Stats Vieweristä + Harmaa toissijaisena kaavion värinä + Kokeellinen SoC-akseli + Yksimoottorinen malli + Näytä tehomittarit + Näytä nopeuskaavio + Asetukset: + Nykyinen kulutuskaavio: + Viimeisimmät latauskäyrät: + + Tietoja Car Stats Vieweristä + Tietoja Car Stats Vieweristä: + Tue kehitystä + Vieraile GitHubissa saadaksesi lisätietoja sovelluksen kehittämisen tukemisesta. + Avustajat + Palaute: + Sekalaista: + Tämä on paras paikka virheraporteille ja ominaisuuspyynnöille. Lue nykyiset pyynnöt ennen kuin avaat uuden. + Keskustelua Car Stats Vieweristä kansainvälisellä foorumilla. + Keskustelua Car Stats Vieweristä saksankielisellä foorumilla. + Lisenssit + Tukijat + Kiitos! + Suuri kiitos kaikille Car Stats Viewerin kehitystä tukeneille! + + Lopetetaanko sovellus? + Lokitiedot kopioidaan leikepöydälle. + Sulje + Nollataanko osamatkatiedot? + Nykyiset osamatkatiedot nollataan. Haluatko tallentaa osamatkan? + Tallenna + "Älä tallenna" + Peruuta + Kyllä + Ei + + Vianmääritys + + Nykyiset tilastot: + Tiedonkeruupalvelu käynnissä + Virhe luettaessa osamatkatiedostoa + Osamatka päänäkymässä: + Manuaalinen osamatka + Viimeisen latauksen jälkeen + Automaattinen osamatka + Kuluva kuukausi + + Tietorakennetta uusittu vakauden ja skaalautuvuuden lisäämiseksi + Lisätty tanskankielinen käännös + Lisätty \"About Car Stats Viewer\" (sis. peruskorjauksen ReadMe ja tiedot tukemisesta ja osallistumisesta kehitystyöhön) + Lisätty useita samanaikaisesti käynnissä olevia osamatkaseurannan vaihtoehtoja (manuaalinen osamatka, edellisestä latauksesta, automaattinen osamatka, kuluva kuukausi) + Erilaisia visuaalisia parannuksia kaavionäkymissä. + Tiettyjä arvoja kaavionäkymässä voidaan korostaa kaksoisnapauttamalla + Debug-logit voidaan lähettää SMTP:n kautta (kokeellinen!) + Vakautettu latauskäyrän näkymää, kun sovellus on keskeytetty latauksen aikana + Kuljettajan häiriötekijöiden optimointi + Erilaisia virheenkorjauksia ja vakauden parannuksia + + Muutokset versiossa %s : + API-asetukset + + %s on käynnistynyt uudelleen %s jälkeen. + ohjelmiston kaatuminen + uudelleenkäynnistys + päivitys + Käynnistä palvelu uudelleen tilastojen seurantaa varten. + Hylkää + Käynnistä sovellus + Käynnistä palvelu + Tilastojen seurantapalvelu käynnistettiin taustalla + Yleiset asetukset: + Sekalaiset asetukset: + Päänäkymä + ABRP Live Data + HTTP Webhook + SMTP-kirjautuminen + Käytä API:a + + Anna ABRP:n yleinen tunnus (Generic Token) lähettääksesi reaaliaikaista dataa ABRP-palvelimille. Tämä sisältää sijaintitietoja, jos niitä ei ole poistettu käytöstä. + Yleinen tunnus (Generic Token) + + Anna HTTP-osoite ja (valinnaiset) perustason todentamistiedot lähettääksesi reaaliaikaista tietoa määritettyyn URL-osoitteeseen. Sovellus käyttää POST-pyyntöä JSON-sisällön kanssa. Tämä sisältää sijaintitietoja, jos niitä ei ole poistettu käytöstä. + BasicAuth-käyttäjätunnus + BasicAuth-salasana + Virheellinen URL-osoite! + + Anna sähköpostipalveluntarjoajaltasi saadut SMTP-tunnistetietosi. Tätä käytetään tallennettujen tilastojen ja virheenkorjauslokien lähettämiseen käyttäjän määrittelemälle vastaanottajalle. + Sähköpostiosoite + SMTP-salasana + SMTP-palvelimen isäntänimi + SMTP-palvelimen portti + Käytä STARTTLS:ää + + Ajoneuvon asetukset + Vuosimalli + Voimalinja + Plus-paketti + Performance -päivitys + BST Edition + Launch Edition + + Lisätty useita live-datan sovellusliittymiä: + - ABRP OTA live-data + - HTTP Webhook BasicAuthilla + Lisätty sijainnin seuranta ja korkeushistoria + Lisätty uudelleenkäynnistysilmoitus uudelleenkäynnistyksen, päivityksen tai sovelluksen kaatumisen jälkeen + Lisätty ajoneuvon asetukset/varusteet + Uudelleenjärjestetty asetusvalikko + Korjattu, \"päänäkymän yksiköt\" eivät päivity + Yleisiä virheenkorjauksia ja vakauden parannuksia + + Sijainnin seuranta + Automaattinen sovelluksen käynnistys + Nopeus + Korkeus merenpinnasta + + Lisätty korkeuden muutos matkan yhteenvetoon (kokeellinen) + Korjattu yhteenvetokaavion virheelliset yksiköt + Korjattu latausistuntojen yhteenvedon väärät päivämäärät + Parannettu uudelleenkäynnistyksen ilmoitusehtoja + Muutettu energian seurannan ehtoja (kokeellinen) + + Korkeuden muutos + Kääntäjät + Nollataanko tilastot? + Kaikki tallennetut matkatiedot nollataan. + Maili etäisyyden yksikkönä + diff --git a/automotive/src/main/res/values-fr/strings.xml b/automotive/src/main/res/values-fr/strings.xml new file mode 100644 index 00000000..9b58d112 --- /dev/null +++ b/automotive/src/main/res/values-fr/strings.xml @@ -0,0 +1,185 @@ + + + + Permissions + Cette application requiert certaines permissions pour pouvoir recueillir les données de la voiture. + Quitter + Accorder autorisations + + Charge connectée: + Consommation électrique: + Énergie utilisée: + Vitesse: + Distance parcourue: + Consommation actuelle: + Consommation moyenne: + Réinitialiser les statistiques + Consommation des 3 derniers km + Vitesse + Vitesse + Puissance + Puissance de recharge + Niveau de batterie + Consommation + Fermer courbe de recharge + Réinitialiser courbe de recharge + Sommaire + Cacher vitesse + Afficher vitesse + 2ième courbe: %s + + Sommaire + Réinitialiser + Information seulement disponible à l\'arrêt. + Historique de trajet + Sessions de recharge + Trajet débuté le %s + Énergie consommée + Distance parcourue + Consommation moyenne + Durée du trajet + Énergie reçue + Temps de recharge + Température ambiante + Le suivi de données a été interrompu. Cette valeur est probablement incorrecte. + + Paramètres + Retour + Quitter + Notifications + Consommation affichée en Wh/km + Infos développeur + Mise en page expérimentale + Écran de consommation + Écran de recharge + À propos + Couleur grise pour la deuxième courbe + Courbe d\'état de charge (expérimental) + Modèle un moteur + Afficher indicateur de puissance + Tracer la vitesse + Paramètres + Graphique de consommation + Dernières sessions de charge: + + À propos + À propos de Car Stats Viewer + Contribuer au développement + Consultez GitHub pour savoir comment contribuer au développement de l\'application. + Contributeurs + Commentaires + Divers + Le meilleur endroit pour les rapports de bogues et demandes. Merci de consulter les rubriques existantes avant d\'en rédiger une nouvelle. + Discussion à propos de Car Stats Viewer sur un forum international. + Discussion à propos de Car Stats Viewer sur un forum allemand. + Licences logicielles + Supporteurs + Merci! + Remerciements pour tous les encouragements envers le développement de Car Stats Viewer! + + Quitter l\'application? + Le journal sera copié dans le presse-papiers. + Fermer + Réinitialiser ce trajet? + Ce trajet sera remis à zéro. Voulez-vous le sauvegarder? + Sauvegarder + Effacer + Annuler + Oui + Non + + Débogage + + Statistiques actuelles + Service de suivi de données activé + Erreur lors de la lecture des données + Contexte préféré + Trajet manuel + Depuis la dernière charge + Trajet automatique + Ce mois-ci + + Structure de données revue pour améliorer la stabilité + Ajout de langue (danois) + Ajout de la page \"À propos\" + Ajout de plusieurs contextes de suivi de données simultanés (Trajet manuel, Depuis dernière charge, Trajet automatique, Ce mois-ci) + Plusieurs améliorations apportées aux graphiques + Taper deux fois sur un graphique permet d\'afficher des valeurs précises + Journaux de débogage peuvent être envoyés par courriel (expérimental) + Correction du comportement de la courbe de recharge lorsque le conducteur quitte le véhicule + Réduction de la distraction du conducteur + Corrections et améliorations + + Changements dans la version %s. + Configuration API + + %s a redémarré après %s. + une erreur logicielle + un redémarrage système + une mise à jour + Redémarrer le service pour le suivi de données. + Annuler + Démarrer app + Démarrer service + Service de suivi de données lancé en arrière-plan + Options + Divers + Écran principal + Données en direct ABRP + Lien de rappel HTTP + Envoi courriel + Utiliser cet API + + Entrez un lien générique ABRP pour transmettre les données en direct aux serveurs d\'ABRP. + +Le suivi de localisation est inclus, s\'il n\'est pas désactivé. + Lien générique + + Entrez un URL HTTPS pour transmettre les données en direct. Utilise une requête POST avec du contenu JSON. + +Vous pouvez optionnellement spécifier des valeurs d\'authentification BasicAuth. + +Les données de localisation sont incluses, si elles ne sont pas désactivées. + Nom d\'utilisateur BasicAuth + Mot de passe BasicAuth + URL invalide + + Entrez vos informations d\'identification fournies par votre fournisseur de messagerie SMTP. Les statistiques et journaux de débogage seront envoyés à une adresse spécifiée par l\'utilisateur. + Adresse courriel + Mot de passe du serveur SMTP + Nom du serveur SMTP + Port du serveur SMTP + Utiliser STARTTLS + + Configuration du véhicule + Année + Version + Groupe Plus + Mise à niveau du logiciel de performance + Édition BST + Édition Lancement + + Ajout d\'API pour données en temps réel: +- Données en direct ABRP +- Lien de rappel HTTP avec BasicAuth + Ajout de suivi de localisation et d\'altitude + Ajout d\'un message après redémarrage anormal de l\'application + Ajout de la configuration du véhicule + Menu d\'options restructuré + Correction du rafraîchissement des unités de l\'écran principal + Corrections et améliorations + + Suivi de localisation + Lancement automatique de l\'application + Vitesse + Altitude + + Ajoute de la variation d\'altitude dans le sommaire (expérimental) + Correction des unités dans le graphique du sommaire + Correction des dates de sessions de recharge + Amélioration de la notification lors d\'une remise en marche + Modification des conditions de suivi de l\'énergie (expérimental) + + Variation d\'altitude + Traducteurs + diff --git a/automotive/src/main/res/values-nb/strings.xml b/automotive/src/main/res/values-nb/strings.xml index 5f502ec4..d9d182e6 100644 --- a/automotive/src/main/res/values-nb/strings.xml +++ b/automotive/src/main/res/values-nb/strings.xml @@ -1,9 +1,11 @@ + Tillatelser er nødvendig for bruk Denne appen trenger Tillatelser for å kunne brukes. Uten nødvendige tillatelser kan ikke appen lese data fra bilen. Avslutt Car Stats Viewer Gi tillatelser + Ladeport tilkoblet: Nåværende effekt trekk: Brukt energi: @@ -25,6 +27,7 @@ Skjul hastighet Vis hastighet Sekundær akse:%s + Tur oppsummering Resett tur Visning er kun tilgjengelig når parkert. @@ -39,6 +42,7 @@ Ladetid Omgivelsestemperatur Opptak av ladesesjonen er avbrutt. Denne verdien er sannsynligvis feil. + Innstillinger Tilbake Avslutt app @@ -57,6 +61,7 @@ Innstillinger: Nåværende forbruksgraf: Siste ladekurver: + Om Car Stats Viewer Om Car Stats Viewer: Støtt utviklingen @@ -71,6 +76,7 @@ Supportere Takk! Mange takk til alle som har støttet utviklingen av Car Stats Viewer! + Avslutt app? Loggen vil bli kopiert til utklippstavlen. Lukk @@ -81,7 +87,9 @@ Avbryt Ja Nei + Feilsøk + Nåværende statistikker: Service for datainnsamling kjører Feil ved lesing av turfil @@ -103,9 +111,6 @@ Forskjellige feilrettinger og stabilitetsforbedringer Changes in version %s: - Nullstill statistikker - All lagret turdata vil bli satt til null. - Miles som distanseenhet API-innstillinger %s har restartet etter %s, @@ -135,8 +140,7 @@ Legg inn dine SMTP legitimasjon fra din Epostleverandør. Den er brukt for å sende lagrede statistikker og feilllogger til måladressen gitt av brukeren. Epostadresse - Epost passord - + SMTP passord SMTP server-hostname SMPT server-port Bruk STARTTLS @@ -163,4 +167,13 @@ Automatisk app-start Hastighet Høyde + + Høydeendring lagt til i tursammendrag (eksperimentell) + Rettet feil enheter i oppsummeringsdiagram + Rettet feil datoer for ladeøkter i oppsummering + Forbedret restartsvarsler forhold + Endret energisporingsforhold (eksperimentell) + + Høydeendring + Oversettere diff --git a/automotive/src/main/res/values-nl/strings.xml b/automotive/src/main/res/values-nl/strings.xml index 394c8317..09055a2a 100644 --- a/automotive/src/main/res/values-nl/strings.xml +++ b/automotive/src/main/res/values-nl/strings.xml @@ -1,9 +1,11 @@ + Noodzakelijke permissies Deze app heeft bepaalde toelatingen nodig om te kunnen werken. Zonder de aangegeven toelatingen, kunnen de gegevens van het voertuig niet worden verzameld. Car Stats Viewer afsluiten Toelatingen goedkeuren + Laadkabel aangesloten: Huidig stroomverbruik: Verbruikte energie: @@ -25,6 +27,7 @@ Snelheid verbergen Snelheid tonen Secundaire as: %s + Samenvatting rit Rit resetten Enkel zichtbaar in parkeerstand. @@ -39,6 +42,7 @@ Laadtijd Omgevingstemperatuur Registratie van laadsessie is onderbroken. Deze waarde is waarschijnlijk onjuist. + Instellingen Terug App afsluiten @@ -57,6 +61,7 @@ Instellingen: Actuele verbruikscurve: Laatste laadcurven: + Over Car Stats Viewer Over Car Stats Viewer: Ondersteun de ontwikkeling @@ -71,6 +76,7 @@ Supporters Bedankt! Veel dank aan iedereen die de ontwikkeling van Car Stats Viewer heeft gesteund! + App afsluiten? Log wordt gekopieerd naar het klembord. Sluit @@ -81,7 +87,9 @@ Cancel Ja Neen + Debug + Huidige statistieken: Gegevensverzameling is bezig Fout bij het inlezen van de ritgegevens @@ -96,16 +104,13 @@ \"Over Car Stats Viewer\" toegevoegd (incl. gereviseerde ReadMe met informatie over ondersteuning en bijdragen) Meerdere rittrackers toegevoegd die tegelijkertijd worden uitgevoerd (handmatige rit, sinds laatste lading, automatische rit, huidige maand) Diverse visuele verbeteringen voor de plotweergaven - Specifieke waarden in plotweergaven kunnen worden gemarkeerd door dubbel te tikken + Specifieke waarden in de grafiek kunnen worden gemarkeerd door op de grafiek te dubbelklikken. Debug-Logs kunnen worden verzonden via SMTP (experimenteel!) Gestabiliseerd gedrag van de laadcurve wanneer de app wordt gepauzeerd tijdens het laden Geoptimaliseerde afleiding van de bestuurder Diverse bugfixes en stabiliteitsverbeteringen Wijzigingen in versie %s: - Statistieken resetten? - Alle opgeslagen ritgegevens worden op nul gezet. - Mijlen als afstandseenheid API-instellingen %s is opnieuw opgestart na %s. @@ -121,7 +126,7 @@ Diverse instellingen: Hoofdaanzicht ABRP Live-gegevens - HT,TP Webhook + HTTP Webhook SMTP-login Gebruik API @@ -135,8 +140,7 @@ Voer uw SMTP-gegevens in die u van uw e-mailprovider heeft gekregen. Dit wordt gebruikt om opgeslagen statistieken en debug-logs naar een door de gebruiker opgegeven doeladres te sturen. E-mailadres - E-mail wachtwoord - + E-mail (SMTP) wachtwoord SMTP-server-hostnaam SMTP-serverpoort Gebruik STARTTLS @@ -163,4 +167,13 @@ Automatische start van de app Snelheid Hoogte + + Hoogteverandering toegevoegd in ritoverzicht (experimenteel) + Verkeerde eenheden in overzichtsdiagram verholpen + Foute data van laadsessies in samenvatting verholpen + Verbeterde voorwaarden voor herstartmeldingen + Gewijzigde condities voor het volgen van energie (experimenteel) + + Hoogteverandering + Vertalers diff --git a/automotive/src/main/res/values-pt-rPT/strings.xml b/automotive/src/main/res/values-pt-rPT/strings.xml new file mode 100644 index 00000000..c729c3e2 --- /dev/null +++ b/automotive/src/main/res/values-pt-rPT/strings.xml @@ -0,0 +1,182 @@ + + + + Permissões necessárias para uso + Esta aplicação requer permissões para ser usado. Sem as permissões necessárias, o aplicativo não pode ler nenhum dado do carro. + Sair do Car Stats Viewer + Conceder permissões + + Porta de carga conectada: + Consumo de energia atual: + Energia usada: + Velocidade atual: + Distância percorrida: + Consumo instantâneo: + Consumo médio: + Redefinir estatísticas + Consumo nos últimos 3 km: + Velocidade + Velocidade + Energia + Potência de carregamento + Estado da carga + Consumo instantâneo: + Fechar gráfico de carga + Redefinir gráfico de carga + Resumo da viagem + Ocultar velocidade + Mostrar velocidade + Eixo secundário: %s + + Resumo da viagem + Redefinir viagem + Vista disponível apenas quando estacionado. + Histórico da viagem + Sessões de carregamento + Viagem iniciada em: %s + Energia usada + Distância percorrida + Consumo médio + Tempo de viagem + Energia carregada + Tempo de carregamento + Temperatura ambiente + A gravação da sessão de carregamento foi interrompida. Esse valor provavelmente está incorreto. + + Configurações + Voltar + Sair da aplicação + Notificação detalhada + Wh/distância como unidade de consumo + Informações de depuração + Mostrar layout experimental + Vista de consumo + Vista de carga + Sobre o Car Stats Viewer + Cinza como cor secundária do gráfico + Eixo de estado de carga experimental + Modelo de motor único + Mostrar medidores de energia + Mostrar gráfico de velocidade + Configurações: + Gráfico de consumo atual: + Últimas curvas de carregamento: + + Sobre o Car Stats Viewer + Sobre o Car Stats Viewer: + Apoie o desenvolvimento + Veja o repositório do GitHub para saber mais sobre como oferecer suporte ao desenvolvimento do aplicativo. + Colaboradores + Opinião: + Diversos: + Este é o melhor lugar para relatórios de bugs e solicitações de funcionalidades. Por favor, leia os problemas existentes antes de abrir um novo. + Discussão sobre Car Stats Viewer nos fóruns internacionais. + Discussão sobre Car Stats Viewer nos fóruns alemães. + Licenças + Apoiantes + Obrigado! + Muito obrigado a todos que apoiaram o desenvolvimento do Car Stats Viewer! + + Sair da aplicação + O log será copiado para a área de transferência. + Fechar + Redefinir dados de viagem? + Os dados atuais da viagem serão redefinidos para zero. Quer salvar a viagem? + Guardar + Não gravar + Cancelar + Sim + Não + + Depurar + + Estatísticas atuais: + Serviço de coleta de dados em execução + Erro ao ler o arquivo de viagem + Viagem na vista principal: + Viagem manual + Desde a última carga + Viagem automática + Mês atual + + Estrutura de dados renovada para aumentar a estabilidade e a escalabilidade + Adicionada tradução dinamarquesa + Adicionado \"Sobre o Car Stats Viewer\" (incluindo revisão do Leia-me com informações sobre suporte e contribuição) + Adicionado vários rastreadores de viagem em execução ao mesmo tempo (viagem manual, desde a última carga, viagem automática, mês atual) + Várias melhorias visuais para as visualizações dos graficos + Valores específicos em visualizações de graficos podem ser destacados com um toque duplo + Debug-Logs podem ser enviados via SMTP (experimental!) + Comportamento estabilizado da curva de carga quando a aplicação é pausada durante a carga + Otimização otimizada da distração do condutor + Várias correções de bugs e melhorias de estabilidade + + Alterações na versão %s: + Configurações da API + + %s foi reiniciado após %s. + um crash + um reboot + uma atualização + Por favor, reinicie o serviço para rastreamento de estatísticas. + Sair + Iniciar aplicação + Iniciar serviço + Serviço de rastreamento de estatísticas iniciado em segundo plano + Configurações genéricas: + Configurações diversas: + Vista principal + Telemetria ABRP atual + HTTP Webhook + Login SMTP + Usar API + + Insira um token genérico ABRP para transmitir dados ao vivo over-the-air para os servidores ABRP. Isso inclui dados de localização, se não estiverem desabilitados. + Token genérico + + Insira a URL HTTP e as credenciais de autenticação básicas (opcionais) para transmitir dados em tempo real para a URL especificada. Usa a solicitação POST com conteúdo JSON. Isso inclui dados de localização, se não estiverem desabilitados. + Nome de usuário BasicAuth + Senha do BasicAuth + URL inválida! + + Introduza as suas credenciais SMTP dadas pelo seu fornecedor de E-Mail. Isto é utilizado para enviar estatísticas guardadas e registos de depuração para um endereço de destino especificado pelo utilizador. + Endereço de e-mail + Palavra-passe e-mail + Nome do host do servidor SMTP + Porta do servidor SMTP + Utilizar STARTTLS + + Configuração do veículo + Ano do modelo + Propulsão + Pacote Plus + Atualização de Perfomance + Edição BST + Edição de Lançamento + + Adicionadas várias APIs de dados em tempo real: +- Dados ao vivo da ABRP OTA +- Webhook HTTP com BasicAuth + Adicionado rastreamento de localização e histórico de elevação + Adicionada notificação de reinicialização após uma reinicialização, atualização ou falha no aplicativo + Adicionada a configuração do veículo + Reestruturação do menu de definições + Correção da atualização das unidades da vista principal + Correções de erros e melhorias de estabilidade + + Rastreamento da localização + Arranque automático da aplicação + Velocidade + Altitude + + Mudança de altitude adicionada no resumo da viagem (experimental) + Unidades erradas corrigidas no diagrama de resumo + Correcção das datas erradas das sessões de carregamento no resumo + Condições de notificação de reinício melhoradas + Alteração das condições de monitorização da energia (experimental) + + Mudança de altitude + Tradutores + Redefinir estatísticas? + Todos os dados de viagem salvos serão redefinidos para zero. + Milhas como unidade de distância + diff --git a/automotive/src/main/res/values-sv/strings.xml b/automotive/src/main/res/values-sv/strings.xml index e5e68834..40b94285 100644 --- a/automotive/src/main/res/values-sv/strings.xml +++ b/automotive/src/main/res/values-sv/strings.xml @@ -1,9 +1,11 @@ + Behörigheter krävs för användning Denna app kräver behörigheter för att kunna användas. Utan de nödvändiga behörigheterna kan appen inte läsa någon data från bilen. Avsluta Car Stats Viewer Bevilja behörigheter + Laddkabel ansluten: Aktuell strömförbrukning: Använd energi: @@ -25,6 +27,7 @@ Dölj hastighet Visa hastighet Sekundär axel: %s + Reseöversikt Återställ trippmätare Vyn enbart tillgänglig vid parkering. @@ -39,6 +42,7 @@ Laddtid Utomhustemperatur Inspelning av laddningssession har avbrutits. Detta värde är förmodligen felaktigt. + Inställningar Tillbaka Avsluta appen @@ -57,6 +61,7 @@ Inställningar: Plott för nuvarande förbrukning: Senaste laddningskurvor: + Om Car Stats Viewer Om Car Stats Viewer: Stöd utvecklingen @@ -71,6 +76,7 @@ Supporters Tack! Tack till alla alla som stödjer utvecklingen av Car Stats Viewer! + Avsluta appen? Logg kommer att kopieras till urklipp. Stäng @@ -81,7 +87,9 @@ Avbryt Ja Nej + Felsök + Aktuell statistik: Datainsamlingstjänst aktiv Fel vid läsning av tripp-fil @@ -103,9 +111,6 @@ Diverse felrättningar och stabilitetsförbättringar Ändringar i version %s: - Radera statistik - Alla sparade resor raderas. - Miles som distansenhet API-inställningar %s har startat om efter %s. @@ -122,7 +127,7 @@ Huvudvy Realtidsdata för ABRP HTTP Webhook - Användarnamn för SMTP + Inloggningsuppgifter för SMTP Använd API Ange en generisk ABRP-token för att överföra realtidsdata till ABRP-servrarna. Detta inkluderar platsdata om det inte är inaktiverat. @@ -136,7 +141,6 @@ Ange dina SMTP-uppgifter från din e-postleverantör. Detta används för att skicka sparad statistik och felsökningsloggar till en e-postadress som anges av användaren. E-postadress Lösenord för SMTP - SMTP server SMTP server port Använd STARTTLS @@ -163,4 +167,13 @@ Automatisk start av appen Hastighet Höjd + + Höjdförändring tillagd i resesammanfattningen (experimentellt) + Fixade fel enheter i sammanfattningsdiagrammet + Fixade fel datum för laddningssessioner i sammanfattning + Förbättrade notifieringar vid omstart + Ändrade villkor för energispårning (experimentellt) + + Höjdförändring + Översättare diff --git a/automotive/src/main/res/values/colors.xml b/automotive/src/main/res/values/colors.xml index c5610084..28f4ac69 100644 --- a/automotive/src/main/res/values/colors.xml +++ b/automotive/src/main/res/values/colors.xml @@ -5,7 +5,7 @@ #121212 #D96C00 #B3B3B3 - #FF4D4D4D + #54FFFFFF #1F1F1F #090909 #FFD96C00 diff --git a/automotive/src/main/res/values/strings.xml b/automotive/src/main/res/values/strings.xml index 7cbb3ccb..9df9722b 100644 --- a/automotive/src/main/res/values/strings.xml +++ b/automotive/src/main/res/values/strings.xml @@ -9,14 +9,24 @@ https://github.com/Ixam97/CarStatsViewer/issues Dario Bosshard + FreshDave29 + rdu + Jannick Fahlbusch + + DoubleYouEl Robin Hellström - jschlyter + Jakob Schlyter Oddvarr - FreshDave29 - rdu Emil Blixt Hansen - Jannick Fahlbusch + Ian Mascarenhas + Dominik Brüning + Juha Mönkkönen + Ossi Lahtinen + J-P + Laurent Vitalis + Jere Kataja + Pedro Leite Ahti Hinnov @@ -29,6 +39,19 @@ Peter Füllhase Lukas Bruckenberger Stefan Süssenguth + Jürgen Bereuter + Markus Enseroth + Jacob Frostholm + Christoffer Gennerud + Samuel Lodyga + + + + Altitude change added in trip summary (experimental) + Fixed wrong units in summary diagram + Fixed wrong dates of charging sessions in summary + Improved restart notification conditions + Changed energy tracking conditions (experimental) @@ -121,6 +144,7 @@ Charge time Ambient temperature Recording of charging session has been interrupted. This value is probably incorrect. + Altitude change Settings @@ -192,6 +216,7 @@ Support the development View the GitHub-repository to learn more about how to support the development of the app. Contributors + Translators Feedback: Miscellaneous: This is the best place for bug reports and feature requests. Please read the existing issues before opening a new one.