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 @@ + + + +