diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java
index 01dace564..3dd558dc3 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java
@@ -116,6 +116,7 @@ public class DeviceSettingsPreferenceConst {
public static final String PREF_DO_NOT_DISTURB_AUTOMATIC = "automatic";
public static final String PREF_DO_NOT_DISTURB_SCHEDULED = "scheduled";
+ public static final String PREF_WORKOUT_START_ON_PHONE = "workout_start_on_phone";
public static final String PREF_WORKOUT_SEND_GPS_TO_BAND = "workout_send_gps_to_band";
public static final String PREF_FIND_PHONE = "prefs_find_phone";
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiCoordinator.java
index f6adb031e..cc517c788 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiCoordinator.java
@@ -363,6 +363,12 @@ public abstract class HuamiCoordinator extends AbstractDeviceCoordinator {
return prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_LIFT_WRIST, false);
}
+ public static boolean getWorkoutStartOnPhone(String deviceAddress) {
+ SharedPreferences prefs = GBApplication.getDeviceSpecificSharedPrefs(deviceAddress);
+
+ return prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_WORKOUT_START_ON_PHONE, false);
+ }
+
public static boolean getWorkoutSendGpsToBand(String deviceAddress) {
SharedPreferences prefs = GBApplication.getDeviceSpecificSharedPrefs(deviceAddress);
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband5/MiBand5Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband5/MiBand5Coordinator.java
index 00e5c8b4b..5eff096c1 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband5/MiBand5Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband5/MiBand5Coordinator.java
@@ -115,6 +115,7 @@ public class MiBand5Coordinator extends HuamiCoordinator {
R.xml.devicesettings_nightmode,
R.xml.devicesettings_liftwrist_display_sensitivity,
R.xml.devicesettings_inactivity_dnd,
+ R.xml.devicesettings_workout_start_on_phone,
R.xml.devicesettings_workout_send_gps_to_band,
R.xml.devicesettings_swipeunlock,
R.xml.devicesettings_sync_calendar,
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java
index 2ad05be79..e7e42341e 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java
@@ -1907,13 +1907,27 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport {
LOG.info("Got workout status {}", status);
final boolean sendGpsToBand = HuamiCoordinator.getWorkoutSendGpsToBand(getDevice().getAddress());
+ final boolean startOnPhone = HuamiCoordinator.getWorkoutStartOnPhone(getDevice().getAddress());
switch (status) {
case Start:
+ if (workoutNeedsGps && startOnPhone) {
+ LOG.info("Starting OpenTracks recording");
+
+ OpenTracksController.startRecording(getContext());
+ }
+
break;
case End:
GBLocationManager.stop(getContext(), this);
+ if (startOnPhone) {
+ if (GBApplication.app().getOpenTracksObserver() != null) {
+ LOG.info("Stopping OpenTracks recording");
+ OpenTracksController.stopRecording(getContext());
+ }
+ }
+
break;
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 4cf2add5f..8c6a361c0 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -370,6 +370,8 @@
Heart rate alarm during sports activity
Low limit
High limit
+ Fitness app tracking
+ Start/stop fitness app tracking on phone when a GPS workout is started on the band
Send GPS during workout
Send the current GPS location to the band during a workout
diff --git a/app/src/main/res/xml/devicesettings_workout_start_on_phone.xml b/app/src/main/res/xml/devicesettings_workout_start_on_phone.xml
new file mode 100644
index 000000000..fb9054d8f
--- /dev/null
+++ b/app/src/main/res/xml/devicesettings_workout_start_on_phone.xml
@@ -0,0 +1,9 @@
+
+
+
+