From aac1e656b139056702451d9af8f710ca31eb2a34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Rebelo?= Date: Sun, 25 Sep 2022 11:10:38 +0200 Subject: [PATCH] Mi Band 6: Add support for workout activity types --- .../service/devices/huami/HuamiSupport.java | 14 +-- .../huami/HuamiWorkoutScreenActivityType.java | 22 ++++- app/src/main/res/values/arrays.xml | 99 +++++++++++++++++++ app/src/main/res/values/strings.xml | 16 +++ .../main/res/xml/devicesettings_miband6.xml | 10 ++ 5 files changed, 148 insertions(+), 13 deletions(-) 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 9b31154da..f593aa52d 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 @@ -3479,8 +3479,7 @@ public abstract class HuamiSupport extends AbstractBTLEDeviceSupport implements protected HuamiSupport setWorkoutActivityTypes(final TransactionBuilder builder) { final SharedPreferences prefs = GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()); - final List allActivityTypes = Arrays.asList(getContext().getResources().getStringArray(R.array.pref_miband5_workout_activity_types_values)); - final List defaultActivityTypes = Arrays.asList(getContext().getResources().getStringArray(R.array.pref_miband5_workout_activity_types_default)); + final List defaultActivityTypes = Arrays.asList(HuamiWorkoutActivityType.Freestyle.name().toLowerCase(Locale.ROOT)); final String activityTypesPref = prefs.getString(HuamiConst.PREF_WORKOUT_ACTIVITY_TYPES_SORTABLE, null); final List enabledActivityTypes; @@ -3492,7 +3491,7 @@ public abstract class HuamiSupport extends AbstractBTLEDeviceSupport implements LOG.info("Setting workout types to {}", enabledActivityTypes); - final byte[] command = new byte[allActivityTypes.size() * 3 + 2]; + final byte[] command = new byte[enabledActivityTypes.size() * 3 + 2]; command[0] = 0x0b; command[1] = 0x00; @@ -3504,15 +3503,6 @@ public abstract class HuamiSupport extends AbstractBTLEDeviceSupport implements command[pos++] = 0x01; } - // Send all the remaining disabled workout types - for (final String workoutType : allActivityTypes) { - if (!enabledActivityTypes.contains(workoutType)) { - command[pos++] = HuamiWorkoutScreenActivityType.fromPrefValue(workoutType).getCode(); - command[pos++] = 0x00; - command[pos++] = 0x00; - } - } - writeToChunked(builder, 9, command); return this; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiWorkoutScreenActivityType.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiWorkoutScreenActivityType.java index a5a5906c2..5323add7c 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiWorkoutScreenActivityType.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiWorkoutScreenActivityType.java @@ -32,7 +32,27 @@ public enum HuamiWorkoutScreenActivityType { Freestyle(0x10), JumpRope(0x15), RowingMachine(0x17), - Yoga(0x3c); + Yoga(0x3c), + Dance(0x4c), + IndoorFitness(0x18), + Gymnastics(0x3b), + HIIT(0x31), + CoreTraining(0x32), + Stretching(0x35), + Stepper(0x3a), + Pilates(0x3d), + Basketball(0x55), + Volleyball(0x58), + TableTennis(0x59), + Badminton(0x5c), + Cricket(0x4e), + Bowling(0x50), + Boxing(0x61), + // TODO: Not working Kickboxing(0x72), + StreetDance(0x4a), + Zumba(0x4d), + IndoorIceSkating(0x2d), + ; private final byte code; diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 0c6f3005a..5f0ea5552 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -674,6 +674,105 @@ yoga + + outdoor_running + walking + treadmill + outdoor_cycling + indoor_cycling + elliptical + pool_swimming + freestyle + jump_rope + rowing_machine + yoga + dance + indoor_fitness + gymnastics + hiit + core_training + stretching + stepper + pilates + basketball + volleyball + table_tennis + badminton + cricket + bowling + boxing + + street_dance + zumba + indoor_ice_skating + + + + @string/activity_type_outdoor_running + @string/activity_type_walking + @string/activity_type_treadmill + @string/activity_type_outdoor_cycling + @string/activity_type_indoor_cycling + @string/activity_type_elliptical + @string/activity_type_swimming + @string/activity_type_freestyle + @string/activity_type_jump_roping + @string/activity_type_rowing_machine + @string/activity_type_yoga + @string/activity_type_dance + @string/activity_type_indoor_fitness + @string/activity_type_gymnastics + @string/activity_type_hiit + @string/activity_type_core_training + @string/activity_type_stretching + @string/activity_type_stepper + @string/activity_type_pilates + @string/activity_type_basketball + @string/activity_type_volleyball + @string/activity_type_table_tennis + @string/activity_type_badminton + @string/activity_type_cricket + @string/activity_type_bowling + @string/activity_type_boxing + + @string/activity_type_street_dance + @string/activity_type_zumba + @string/activity_type_indoor_ice_skating + + + + outdoor_running + walking + treadmill + outdoor_cycling + indoor_cycling + elliptical + pool_swimming + freestyle + jump_rope + rowing_machine + yoga + dance + indoor_fitness + gymnastics + hiit + core_training + stretching + stepper + pilates + basketball + volleyball + table_tennis + badminton + cricket + bowling + boxing + + street_dance + zumba + indoor_ice_skating + + @string/menuitem_pai @string/menuitem_dnd diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 30a4a7185..bea49a778 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1029,6 +1029,22 @@ Ping Pong Badminton Strength Training + Dance + Indoor Fitness + Gymnastics + High-intensity Interval Training + Core Training + Stretching + Stepper + Pilates + Volleyball + Table Tennis + Bowling + Boxing + Kickboxing + Street Dance + Zumba + Indoor Ice Skating Unknown activity Sport Activities Sport Activity Detail diff --git a/app/src/main/res/xml/devicesettings_miband6.xml b/app/src/main/res/xml/devicesettings_miband6.xml index 9bc1050ff..6deef2a94 100644 --- a/app/src/main/res/xml/devicesettings_miband6.xml +++ b/app/src/main/res/xml/devicesettings_miband6.xml @@ -20,4 +20,14 @@ android:persistent="true" android:summary="@string/bip_prefs_shotcuts_summary" android:title="@string/bip_prefs_shortcuts" /> +