mirror of
https://codeberg.org/OpenTracksApp/OpenTracks.git
synced 2026-10-23 10:45:18 +02:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3105afed4e | |||
| eda1815393 | |||
| ae237bdddc | |||
| 47705b9b99 | |||
| c49e66cd88 | |||
| 8c017cf942 | |||
| 39e38ead44 | |||
| baf078870f |
+2
-2
@@ -64,8 +64,8 @@ android {
|
||||
|
||||
defaultConfig {
|
||||
applicationId 'de.dennisguse.opentracks'
|
||||
versionCode 6022
|
||||
versionName "v4.17.6"
|
||||
versionCode 6030
|
||||
versionName "v4.17.8"
|
||||
|
||||
buildConfigField "String", "VERSION_NAME_FULL", "\"${getVersionName()}\""
|
||||
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
v4.17.7: OpenTracks
|
||||
|
||||
Release for reproducible build.
|
||||
@@ -0,0 +1,5 @@
|
||||
v4.17.8: OpenTracks
|
||||
|
||||
Changes:
|
||||
- Charts: shown data can be configured
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
v3.2.0: OpenTracks
|
||||
|
||||
Muutokset:
|
||||
- Vimpain poistettu
|
||||
- Otettiin käyttöön materiaalisuunnittelun kuvakkeet
|
||||
- Lumilautailu ja hiihto poistettu (tarvitaan uudet kuvakkeet)
|
||||
|
||||
Viankorjaus:
|
||||
- Kiinteä hakutoiminto
|
||||
|
||||
Kehittäjä:
|
||||
- Korjatut (jotkut) testitapaukset
|
||||
- Käyttämätön parcel-toiminto poistettu
|
||||
- Suuri puhdistus ja alustaminen
|
||||
- Älä käytä lähetystä sovelluksen ja vimpaimen väliseen viestintään
|
||||
- stats_content.xml ei sisällä muita tiedostoja
|
||||
@@ -0,0 +1,4 @@
|
||||
v3.6.1: OpenTracks
|
||||
|
||||
Buggfix:
|
||||
- KMZ-importering: lagra korrekt genväg för bild
|
||||
@@ -0,0 +1,4 @@
|
||||
v3.6.2: OpenTracks
|
||||
|
||||
Buggfix:
|
||||
- Diagrammen visades inte korrekt (introducerades i v3.6.0)
|
||||
@@ -0,0 +1,4 @@
|
||||
v3.11.1: OpenTracks
|
||||
|
||||
Buggfix:
|
||||
- Röstmeddelanden rapporterade fel statistik
|
||||
@@ -0,0 +1,4 @@
|
||||
v3.13.2: OpenTracks
|
||||
|
||||
Buggfix:
|
||||
- Krasch i liggande läge
|
||||
@@ -0,0 +1,4 @@
|
||||
v3.14.3: OpenTracks
|
||||
|
||||
Buggfix:
|
||||
- Nedgraderar databasen från nästkommande utgåva v3.15.0
|
||||
@@ -0,0 +1,7 @@
|
||||
v3.15.2: OpenTracks
|
||||
|
||||
Ändringar:
|
||||
- Uppdaterade översättningar
|
||||
|
||||
Buggfix:
|
||||
- Krasch vid GPX-exportering
|
||||
@@ -0,0 +1,4 @@
|
||||
v4.4.0: OpenTracks
|
||||
|
||||
Ändringar:
|
||||
- Exportera alla spår som en fil
|
||||
@@ -0,0 +1,4 @@
|
||||
v4.9.5: OpenTracks
|
||||
|
||||
Buggfix:
|
||||
- inställningen för tomgångsmeddelande fungerar igen
|
||||
@@ -0,0 +1,4 @@
|
||||
v4.12.2.: OpenTracks
|
||||
|
||||
Buggfix:
|
||||
- Tillåt att sensorerna startas före inspelningen
|
||||
@@ -0,0 +1,10 @@
|
||||
(versionName): OpenTracks
|
||||
|
||||
Ändringar:
|
||||
-
|
||||
|
||||
Buggfix:
|
||||
-
|
||||
|
||||
Utvecklare:
|
||||
-
|
||||
@@ -86,6 +86,7 @@ public class ChartFragment extends Fragment implements TrackDataHub.Listener {
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (PreferencesUtils.isKey(R.string.stats_rate_key, key)) {
|
||||
boolean reportSpeed = PreferencesUtils.isReportSpeed(activityTypeLocalized);
|
||||
if (reportSpeed != viewBinding.chartView.getReportSpeed()) {
|
||||
@@ -99,6 +100,21 @@ public class ChartFragment extends Fragment implements TrackDataHub.Listener {
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (PreferencesUtils.isKey(R.string.chart_display_elevation_key, key)) {
|
||||
viewBinding.chartView.setShowElevation(PreferencesUtils.shouldShowElevation());
|
||||
refreshChart();
|
||||
}
|
||||
|
||||
if (PreferencesUtils.isKey(R.string.chart_display_pace_or_speed_key, key)) {
|
||||
viewBinding.chartView.setShowPaceOrSpeed(PreferencesUtils.shouldShowPaceOrSpeed());
|
||||
refreshChart();
|
||||
}
|
||||
|
||||
if (PreferencesUtils.isKey(R.string.chart_display_heart_rate_key, key)) {
|
||||
viewBinding.chartView.setShowHeartRate(PreferencesUtils.shouldShowHeartRate());
|
||||
refreshChart();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -273,4 +289,13 @@ public class ChartFragment extends Fragment implements TrackDataHub.Listener {
|
||||
fragmentActivity.runOnUiThread(runnable);
|
||||
}
|
||||
}
|
||||
|
||||
private void refreshChart() {
|
||||
runOnUiThread(() -> {
|
||||
if (isResumed()) {
|
||||
viewBinding.chartView.invalidate();
|
||||
viewBinding.chartView.requestLayout();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -86,8 +86,10 @@ public class ChartView extends View {
|
||||
}
|
||||
|
||||
private final List<ChartValueSeries> seriesList = new LinkedList<>();
|
||||
private final ChartValueSeries elevationSeries;
|
||||
private final ChartValueSeries speedSeries;
|
||||
private final ChartValueSeries paceSeries;
|
||||
private final ChartValueSeries heartRateSeries;
|
||||
|
||||
private final LinkedList<ChartPoint> chartPoints = new LinkedList<>();
|
||||
private final List<Marker> markers = new LinkedList<>();
|
||||
@@ -123,6 +125,7 @@ public class ChartView extends View {
|
||||
private boolean chartByDistance = false;
|
||||
private UnitSystem unitSystem = UnitSystem.defaultUnitSystem();
|
||||
private boolean reportSpeed = true;
|
||||
private boolean showPaceOrSpeed = true;
|
||||
private boolean showPointer = false;
|
||||
|
||||
private final GestureDetectorCompat detectorScrollFlingTab = new GestureDetectorCompat(getContext(), new GestureDetector.SimpleOnGestureListener() {
|
||||
@@ -176,17 +179,17 @@ public class ChartView extends View {
|
||||
int fontSizeSmall = ThemeUtils.getFontSizeSmallInPx(context);
|
||||
int fontSizeMedium = ThemeUtils.getFontSizeMediumInPx(context);
|
||||
|
||||
seriesList.add(new ChartValueSeries(context,
|
||||
Integer.MIN_VALUE,
|
||||
Integer.MAX_VALUE,
|
||||
new int[]{5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000},
|
||||
R.string.description_altitude_metric,
|
||||
R.string.description_altitude_imperial,
|
||||
R.string.description_altitude_imperial,
|
||||
R.color.chart_altitude_fill,
|
||||
R.color.chart_altitude_border,
|
||||
fontSizeSmall,
|
||||
fontSizeMedium) {
|
||||
elevationSeries = new ChartValueSeries(context,
|
||||
Integer.MIN_VALUE,
|
||||
Integer.MAX_VALUE,
|
||||
new int[]{5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000},
|
||||
R.string.description_altitude_metric,
|
||||
R.string.description_altitude_imperial,
|
||||
R.string.description_altitude_imperial,
|
||||
R.color.chart_altitude_fill,
|
||||
R.color.chart_altitude_border,
|
||||
fontSizeSmall,
|
||||
fontSizeMedium) {
|
||||
@Override
|
||||
protected Double extractDataFromChartPoint(@NonNull ChartPoint chartPoint) {
|
||||
return chartPoint.altitude();
|
||||
@@ -196,7 +199,8 @@ public class ChartView extends View {
|
||||
protected boolean drawIfChartPointHasNoData() {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
};
|
||||
seriesList.add(elevationSeries);
|
||||
|
||||
speedSeries = new ChartValueSeries(context,
|
||||
0,
|
||||
@@ -244,10 +248,15 @@ public class ChartView extends View {
|
||||
};
|
||||
seriesList.add(paceSeries);
|
||||
|
||||
seriesList.add(new ChartValueSeries(context,
|
||||
heartRateSeries = new ChartValueSeries(context,
|
||||
0,
|
||||
Integer.MAX_VALUE,
|
||||
new int[]{25, 50},
|
||||
// For Zone 5 cardio, the 25 value should result in nice visuals, as the values
|
||||
// will range from ~70 - ~180 (around 4.5 intervals).
|
||||
// For Zone 1 cardio, the 15 value should result in nice visuals, as the values
|
||||
// will range from ~70 - ~120 (around 3.5 intervals)
|
||||
// The fallback of 50 should give appropriate visuals for values outside this range.
|
||||
new int[]{15, 25, 50},
|
||||
R.string.description_sensor_heart_rate,
|
||||
R.string.description_sensor_heart_rate,
|
||||
R.string.description_sensor_heart_rate,
|
||||
@@ -264,7 +273,8 @@ public class ChartView extends View {
|
||||
protected boolean drawIfChartPointHasNoData() {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
};
|
||||
seriesList.add(heartRateSeries);
|
||||
|
||||
seriesList.add(new ChartValueSeries(context,
|
||||
0,
|
||||
@@ -343,9 +353,15 @@ public class ChartView extends View {
|
||||
setClickable(true);
|
||||
updateDimensions();
|
||||
|
||||
// either speedSeries or paceSeries should be enabled.
|
||||
speedSeries.setEnabled(reportSpeed);
|
||||
paceSeries.setEnabled(!reportSpeed);
|
||||
// Either speedSeries or paceSeries should be enabled, if one is shown.
|
||||
if (showPaceOrSpeed) {
|
||||
speedSeries.setEnabled(reportSpeed);
|
||||
paceSeries.setEnabled(!reportSpeed);
|
||||
}
|
||||
|
||||
// Defaults for our chart series.
|
||||
heartRateSeries.setEnabled(true);
|
||||
elevationSeries.setEnabled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -379,6 +395,12 @@ public class ChartView extends View {
|
||||
}
|
||||
|
||||
public boolean applyReportSpeed() {
|
||||
if (!showPaceOrSpeed) {
|
||||
paceSeries.setEnabled(false);
|
||||
speedSeries.setEnabled(false);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (reportSpeed) {
|
||||
if (!speedSeries.isEnabled()) {
|
||||
speedSeries.setEnabled(true);
|
||||
@@ -396,6 +418,20 @@ public class ChartView extends View {
|
||||
return false;
|
||||
}
|
||||
|
||||
void setShowElevation(boolean value) {
|
||||
elevationSeries.setEnabled(value);
|
||||
}
|
||||
void setShowPaceOrSpeed(boolean value) {
|
||||
showPaceOrSpeed = value;
|
||||
|
||||
// we want to make sure we show whatever version the user has
|
||||
// selected when we turn this back on.
|
||||
applyReportSpeed();
|
||||
}
|
||||
void setShowHeartRate(boolean value) {
|
||||
heartRateSeries.setEnabled(value);
|
||||
}
|
||||
|
||||
public void setShowPointer(boolean value) {
|
||||
showPointer = value;
|
||||
}
|
||||
@@ -644,10 +680,18 @@ public class ChartView extends View {
|
||||
*/
|
||||
private void drawSeriesTitles(Canvas canvas) {
|
||||
Iterator<TitlePosition> tpI = titleDimensions.titlePositions.iterator();
|
||||
|
||||
for (ChartValueSeries chartValueSeries : seriesList) {
|
||||
if (chartValueSeries.isEnabled() && chartValueSeries.hasData() || allowIfEmpty(chartValueSeries)) {
|
||||
String title = getContext().getString(chartValueSeries.getTitleId(unitSystem));
|
||||
Paint paint = chartValueSeries.getTitlePaint();
|
||||
|
||||
// It is possible for the titlePositions to become empty temporarily, while switching between
|
||||
// chart screens quickly.
|
||||
if (!tpI.hasNext()) {
|
||||
return;
|
||||
}
|
||||
|
||||
TitlePosition tp = tpI.next();
|
||||
int y = topBorder - spacer - (titleDimensions.lineCount - tp.line) * (titleDimensions.lineHeight + spacer);
|
||||
canvas.drawText(title, tp.xPos + getScrollX(), y, paint);
|
||||
@@ -774,7 +818,7 @@ public class ChartView extends View {
|
||||
|
||||
//TODO
|
||||
int markerXPosition = x - spacer;
|
||||
int index = titleDimensions.titlePositions.size() - 1; // index only onver the visible chart series
|
||||
int index = titleDimensions.titlePositions.size() - 1; // index only over the visible chart series
|
||||
final int lastDrawn2ndLineMarkerIndex = getYmarkerCountOn1stLine();
|
||||
for (int i = seriesList.size()-1; i>=0 ;--i) { // draw markers from the last series to achieve right alignment
|
||||
ChartValueSeries chartValueSeries = seriesList.get(i);
|
||||
|
||||
@@ -318,6 +318,21 @@ public class PreferencesUtils {
|
||||
return getBoolean(R.string.stats_fullscreen_while_recording_key, DEFAULT);
|
||||
}
|
||||
|
||||
public static boolean shouldShowElevation() {
|
||||
final boolean DEFAULT = resources.getBoolean(R.bool.chart_display_elevation_default);
|
||||
return getBoolean(R.string.chart_display_elevation_key, DEFAULT);
|
||||
}
|
||||
|
||||
public static boolean shouldShowPaceOrSpeed() {
|
||||
final boolean DEFAULT = resources.getBoolean(R.bool.chart_display_pace_or_speed_default);
|
||||
return getBoolean(R.string.chart_display_pace_or_speed_key, DEFAULT);
|
||||
}
|
||||
|
||||
public static boolean shouldShowHeartRate() {
|
||||
final boolean DEFAULT = resources.getBoolean(R.bool.chart_display_heart_rate_default);
|
||||
return getBoolean(R.string.chart_display_heart_rate_key, DEFAULT);
|
||||
}
|
||||
|
||||
public static boolean shouldUseDynamicColors() {
|
||||
final boolean DEFAULT = resources.getBoolean(R.bool.settings_ui_dynamic_colors_default);
|
||||
return getBoolean(R.string.settings_ui_dynamic_colors_key, DEFAULT);
|
||||
|
||||
@@ -594,4 +594,5 @@ Se o GPS informa sobre datos pouco precisos (ex.: localización, velocidade, ele
|
||||
<string name="settings_locale_title">Idioma</string>
|
||||
<string name="settings_locale_system_default">Predeterminado no sistema</string>
|
||||
<string name="stats_gain_loss">Ganancia e Perda</string>
|
||||
<string name="lap_heart_rate">Pulso medio na volta</string>
|
||||
</resources>
|
||||
@@ -578,4 +578,5 @@ limitations under the License.
|
||||
<string name="settings_locale_title">Språk</string>
|
||||
<string name="settings_locale_system_default">Systemstandard</string>
|
||||
<string name="stats_gain_loss">Total stigning og nedstigning</string>
|
||||
<string name="lap_heart_rate">Runde-puls</string>
|
||||
</resources>
|
||||
@@ -175,7 +175,7 @@ limitations under the License.
|
||||
<string name="settings_chart_by_distance">Дистанція</string>
|
||||
<string name="settings_chart_by_time">Час</string>
|
||||
<string name="settings_recording_default_activity_title">Тип за умовчанням</string>
|
||||
<string name="settings_recording_location_frequency_summary">Записувати відрізок через кожні %1$s</string>
|
||||
<string name="settings_recording_location_frequency_summary">%1$s між перевірками місцезнаходження</string>
|
||||
<string name="settings_recording_max_recording_distance_summary">Кожні %1$s шляху відміряється новий відрізок</string>
|
||||
<string name="settings_recording_max_recording_distance_title">Максимальна відстань</string>
|
||||
<string name="settings_recording_min_recording_distance_title">Відстань відрізка</string>
|
||||
@@ -326,8 +326,8 @@ limitations under the License.
|
||||
\n d) вимкніть енергоощадження.
|
||||
\n
|
||||
\n Якщо нічого не допомагає, будь ласка, повідомте нам про помилку. </string>
|
||||
<string name="about_preference_title">Про OpenTracks</string>
|
||||
<string name="about_url">Веб-сторінка проєкту: <a href="%1$s">%1$s</a></string>
|
||||
<string name="about_preference_title">Про</string>
|
||||
<string name="about_url">Веб-сторінка проекту: <a href="%1$s">%1$s</a></string>
|
||||
<string name="about_version_name">Версія: %1$s</string>
|
||||
<string name="about_version_code">Код версії: %1$d</string>
|
||||
<string name="about_libraries">Бібліотеки</string>
|
||||
@@ -459,14 +459,14 @@ limitations under the License.
|
||||
<string name="settings_units_category">Одиниця</string>
|
||||
<string name="settings_import_export_summary">Імпорт, Експорт, Автоэкспорт</string>
|
||||
<string name="settings_announcements_summary">Час, відстань, швидкість передачі голосу</string>
|
||||
<string name="settings_import_export_title">Імпорт/Експорт</string>
|
||||
<string name="settings_import_export_title">Імпорт та експорт</string>
|
||||
<string name="settings_recording_customize_layout_title">Налаштуйте свій макет запису</string>
|
||||
<string name="stats_custom_layout_default_layout">Макет за замовчуванням</string>
|
||||
<string name="custom_layout_select_layout">Виберіть макет</string>
|
||||
<string name="custom_layout_list_layout_removed">Макет був видалений</string>
|
||||
<string name="custom_layout_list_edit_already_exists">Ім\'я макета вже існує</string>
|
||||
<string name="custom_layout_list_edit_name">Введіть ім\'я макета для додавання</string>
|
||||
<string name="settings_announcements_distance_frequency">Інтервал відстаней</string>
|
||||
<string name="settings_announcements_distance_frequency">Довжина кола</string>
|
||||
<string name="settings_announcements_totaltime_frequency">Часовий інтервал</string>
|
||||
<string name="settings_running_sensor">Рухомий</string>
|
||||
<string name="settings_generic_sensor">Загальний</string>
|
||||
@@ -567,4 +567,5 @@ limitations under the License.
|
||||
<string name="show_on_dashboard_not_installed">Не встановлено програму, що підтримує OpenTracks Dashboard API.</string>
|
||||
<string name="value_float_knots_recommended">%1$.1f вузлів (рекомендовано)</string>
|
||||
<string name="sensor_state_power_max">Макс. потужність</string>
|
||||
<string name="power">Сила</string>
|
||||
</resources>
|
||||
@@ -1,14 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- Do not translate anything in this file directly. -->
|
||||
<string name="stats_show_on_lockscreen_while_recording_key" translatable="false">trackdetail_show_on_lockscreen_while_recording</string>
|
||||
<bool name="stats_show_on_lockscreen_while_recording_default" translatable="false">false</bool>
|
||||
|
||||
<string name="stats_keep_screen_on_while_recording_key" translatable="false">trackdetail_keep_screen_on_while_recording</string>
|
||||
<bool name="stats_keep_screen_on_while_recording_default" translatable="false">false</bool>
|
||||
|
||||
<string name="stats_fullscreen_while_recording_key" translatable="false">trackdetail_fullscreen_while_recording</string>
|
||||
<bool name="stats_fullscreen_while_recording_default" translatable="false">false</bool>
|
||||
|
||||
<!-- Main settings -->
|
||||
<string name="settings_defaults_key" translatable="false">settingsDefaults</string>
|
||||
@@ -279,9 +271,32 @@
|
||||
<string name="show_introduction_screen_key" translatable="false">showIntroduction</string>
|
||||
<bool name="show_introduction_screen_default">true</bool>
|
||||
|
||||
<!-- User Interface Settings -->
|
||||
|
||||
<string name="settings_ui_dynamic_colors_key" translatable="false">uiDynamicColors</string>
|
||||
<bool name="settings_ui_dynamic_colors_default" translatable="false">false</bool>
|
||||
|
||||
<!-- Recording Settings -->
|
||||
<string name="stats_show_on_lockscreen_while_recording_key" translatable="false">trackdetail_show_on_lockscreen_while_recording</string>
|
||||
<bool name="stats_show_on_lockscreen_while_recording_default" translatable="false">false</bool>
|
||||
|
||||
<string name="stats_keep_screen_on_while_recording_key" translatable="false">trackdetail_keep_screen_on_while_recording</string>
|
||||
<bool name="stats_keep_screen_on_while_recording_default" translatable="false">false</bool>
|
||||
|
||||
<string name="stats_fullscreen_while_recording_key" translatable="false">trackdetail_fullscreen_while_recording</string>
|
||||
<bool name="stats_fullscreen_while_recording_default" translatable="false">false</bool>
|
||||
|
||||
<!-- Chart Settings -->
|
||||
<string name="chart_display_elevation_key" translatable="false">chart_display_elevation</string>
|
||||
<bool name="chart_display_elevation_default" translatable="false">true</bool>
|
||||
|
||||
<string name="chart_display_pace_or_speed_key" translatable="false">chart_display_pace_or_speed</string>
|
||||
<bool name="chart_display_pace_or_speed_default" translatable="false">true</bool>
|
||||
|
||||
<string name="chart_display_heart_rate_key" translatable="false">chart_display_heart_rate</string>
|
||||
<bool name="chart_display_heart_rate_default" translatable="false">true</bool>
|
||||
|
||||
|
||||
<!-- androidx.appcompat.app.AppCompatDelegate.setDefaultNightMode() -->
|
||||
<string name="locale_key" translatable="false">localeKey</string>
|
||||
|
||||
|
||||
@@ -344,6 +344,11 @@ limitations under the License.
|
||||
<!-- Settings Chart -->
|
||||
<string name="settings_chart_by_distance">By distance</string>
|
||||
<string name="settings_chart_by_time">By time</string>
|
||||
<string name="settings_charts_title">Charts</string>
|
||||
<string name="settings_chart_display_elevation_title">Display elevation</string>
|
||||
<string name="settings_chart_display_pace_or_speed_title">Display pace or speed</string>
|
||||
<string name="settings_chart_display_heart_rate_title">Display heart rate</string>
|
||||
|
||||
<!-- Settings Recording -->
|
||||
<string name="settings_recording_title">Recording</string>
|
||||
<string name="settings_theme_switch_restart">Theme changes may require a manual restart.</string>
|
||||
|
||||
@@ -58,4 +58,23 @@
|
||||
android:title="@string/settings_recording_fullscreen_on_while_recording_title" />
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory app:title="@string/settings_charts_title">
|
||||
<SwitchPreferenceCompat
|
||||
android:icon="@drawable/ic_activity_climbing_24dp"
|
||||
android:defaultValue="@bool/chart_display_elevation_default"
|
||||
android:key="@string/chart_display_elevation_key"
|
||||
android:title="@string/settings_chart_display_elevation_title" />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
android:icon="@drawable/ic_activity_snowboarding_24dp"
|
||||
android:defaultValue="@bool/chart_display_pace_or_speed_default"
|
||||
android:key="@string/chart_display_pace_or_speed_key"
|
||||
android:title="@string/settings_chart_display_pace_or_speed_title" />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
android:icon="@drawable/ic_activity_workout_24dp"
|
||||
android:defaultValue="@bool/chart_display_heart_rate_default"
|
||||
android:key="@string/chart_display_heart_rate_key"
|
||||
android:title="@string/settings_chart_display_heart_rate_title" />
|
||||
</PreferenceCategory>
|
||||
</PreferenceScreen>
|
||||
Reference in New Issue
Block a user