mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
Add support for nautical units
This commit is contained in:
+26
-1
@@ -1,8 +1,11 @@
|
||||
package nodomain.freeyourgadget.gadgetbridge.activities.workouts;
|
||||
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.DISTANCE_METERS;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_CM;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_KG;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_KILOMETERS;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_KMPH;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_KNOTS;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_LB;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_METERS;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_METERS_PER_HOUR;
|
||||
@@ -10,6 +13,7 @@ import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_MINUTES_PER_100_METERS;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_MINUTES_PER_100_YARDS;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_MM;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_NAUTICAL_MILES;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_SECONDS_PER_100_METERS;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_SECONDS_PER_100_YARDS;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_SECONDS_PER_KM;
|
||||
@@ -26,6 +30,7 @@ import nodomain.freeyourgadget.gadgetbridge.BuildConfig;
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.SettingsActivity;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.DateTimeUtils;
|
||||
|
||||
@@ -34,15 +39,23 @@ public class WorkoutValueFormatter {
|
||||
|
||||
private boolean show_raw_data = false;
|
||||
|
||||
private final ActivityKind activityKind;
|
||||
private final String units;
|
||||
private final String UNIT_IMPERIAL;
|
||||
private final String UNIT_METRIC;
|
||||
private final boolean useNauticalUnits;
|
||||
private final DecimalFormat df = new DecimalFormat("#.##");
|
||||
|
||||
public WorkoutValueFormatter() {
|
||||
this(ActivityKind.UNKNOWN);
|
||||
}
|
||||
|
||||
public WorkoutValueFormatter(final ActivityKind activityKind) {
|
||||
this.activityKind = activityKind;
|
||||
this.units = GBApplication.getPrefs().getString(SettingsActivity.PREF_MEASUREMENT_SYSTEM, GBApplication.getContext().getString(R.string.p_unit_metric));
|
||||
this.UNIT_IMPERIAL = GBApplication.getContext().getString(R.string.p_unit_imperial);
|
||||
this.UNIT_METRIC = GBApplication.getContext().getString(R.string.p_unit_metric);
|
||||
this.useNauticalUnits = ActivityKind.isNauticalActivity(activityKind) && GBApplication.getPrefs().getBoolean("units_nautical", true);
|
||||
}
|
||||
|
||||
public void toggleRawData() {
|
||||
@@ -146,7 +159,10 @@ public class WorkoutValueFormatter {
|
||||
}
|
||||
break;
|
||||
case UNIT_METERS:
|
||||
if (units.equals(UNIT_IMPERIAL)) {
|
||||
if (useNauticalUnits) {
|
||||
value = value / 1852D;
|
||||
unit = UNIT_NAUTICAL_MILES;
|
||||
} else if (units.equals(UNIT_IMPERIAL)) {
|
||||
value = value * 3.28084D;
|
||||
unit = "ft";
|
||||
if (value > 6000) {
|
||||
@@ -160,6 +176,15 @@ public class WorkoutValueFormatter {
|
||||
}
|
||||
}
|
||||
break;
|
||||
case UNIT_KMPH:
|
||||
if (useNauticalUnits) {
|
||||
value = value / 1.852D;
|
||||
unit = UNIT_KNOTS;
|
||||
} else if (units.equals(UNIT_IMPERIAL)) {
|
||||
value = value * 0.621371D;
|
||||
unit = "mi_h";
|
||||
}
|
||||
break;
|
||||
case UNIT_SECONDS_PER_100_METERS:
|
||||
if (units.equals(UNIT_IMPERIAL)) {
|
||||
value = (value * 0.9144) / 60D;
|
||||
|
||||
@@ -403,6 +403,18 @@ public enum ActivityKind {
|
||||
activityKind.name().contains("TREADMILL") || activityKind.name().contains("WALK");
|
||||
}
|
||||
|
||||
public static boolean isNauticalActivity(final ActivityKind activityKind) {
|
||||
return activityKind == SAILING
|
||||
|| activityKind == SAIL_RACE
|
||||
|| activityKind == SAIL_EXPEDITION
|
||||
|| activityKind == BOATING
|
||||
|| activityKind == POWERBOATING
|
||||
|| activityKind == MARINE
|
||||
|| activityKind == ANCHOR
|
||||
|| activityKind == TROLLING_MOTOR
|
||||
|| activityKind == WINDSURFING;
|
||||
}
|
||||
|
||||
public static boolean isSwimActivity(final ActivityKind activityKind) {
|
||||
return activityKind.name().contains("SWIM");
|
||||
}
|
||||
|
||||
+2
@@ -254,6 +254,8 @@ public class ActivitySummaryEntries {
|
||||
public static final String UNIT_SECONDS_PER_100_METERS = "seconds_100m";
|
||||
public static final String UNIT_MINUTES_PER_100_YARDS = "minutes_100yd";
|
||||
public static final String UNIT_SECONDS_PER_100_YARDS = "seconds_100yd";
|
||||
public static final String UNIT_NAUTICAL_MILES = "nautical_miles";
|
||||
public static final String UNIT_KNOTS = "knots";
|
||||
public static final String UNIT_CELSIUS = "unit_celsius";
|
||||
|
||||
public static final String GROUP_PACE = "Pace";
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M11,13.5V2L3,13.5H11zM21,13.5C21,6.5 14.5,1 12.5,1c0,0 1,3 1,6.5s-1,6 -1,6H21zM22,15H2c0.31,1.53 1.16,2.84 2.33,3.73C4.98,18.46 5.55,18.01 6,17.5C6.73,18.34 7.8,19 9,19s2.27,-0.66 3,-1.5c0.73,0.84 1.8,1.5 3,1.5s2.26,-0.66 3,-1.5c0.45,0.51 1.02,0.96 1.67,1.23C20.84,17.84 21.69,16.53 22,15zM22,23v-2h-1c-1.04,0 -2.08,-0.35 -3,-1c-1.83,1.3 -4.17,1.3 -6,0c-1.83,1.3 -4.17,1.3 -6,0c-0.91,0.65 -1.96,1 -3,1H2l0,2h1c1.03,0 2.05,-0.25 3,-0.75c1.89,1 4.11,1 6,0c1.89,1 4.11,1 6,0h0c0.95,0.5 1.97,0.75 3,0.75H22z" />
|
||||
|
||||
</vector>
|
||||
@@ -479,6 +479,8 @@
|
||||
<string name="pref_device_version">Device version</string>
|
||||
<!-- HPlus Preferences -->
|
||||
<string name="pref_title_unit_system">Units</string>
|
||||
<string name="pref_title_nautical_units">Nautical units</string>
|
||||
<string name="pref_summary_nautical_units">Display speed and distance units in knots / miles for nautical activities</string>
|
||||
<string name="pref_title_timeformat">Time format</string>
|
||||
<string name="pref_title_screentime">Screen on duration</string>
|
||||
<string name="pref_title_goal_secondary">Secondary goal</string>
|
||||
@@ -2780,6 +2782,8 @@
|
||||
<string name="centimeters_second">cm/s</string>
|
||||
<string name="km_h">km/h</string>
|
||||
<string name="mi_h">mi/h</string>
|
||||
<string name="nautical_miles">M</string>
|
||||
<string name="knots">kn</string>
|
||||
<string name="meters_per_hour">m/h</string>
|
||||
<string name="foot_per_hour">ft/h</string>
|
||||
<string name="minutes_mi">min/mi</string>
|
||||
|
||||
@@ -79,6 +79,13 @@
|
||||
android:title="@string/pref_title_unit_system"
|
||||
android:icon="@drawable/ic_straighten"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
<SwitchPreferenceCompat
|
||||
android:defaultValue="true"
|
||||
android:key="units_nautical"
|
||||
android:layout="@layout/preference_checkbox"
|
||||
android:summary="@string/pref_summary_nautical_units"
|
||||
android:icon="@drawable/ic_sailing"
|
||||
android:title="@string/pref_title_nautical_units" />
|
||||
<PreferenceScreen
|
||||
android:key="pref_screen_rtl"
|
||||
android:title="@string/preferences_rtl_settings"
|
||||
|
||||
Reference in New Issue
Block a user