From 58d3eaaa9f58572802a9d3cda9b616fde47e0e03 Mon Sep 17 00:00:00 2001 From: jhey Date: Sun, 9 May 2021 22:52:36 +0200 Subject: [PATCH] WIP initial Miband 6 support (#2277) Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/2277 Co-authored-by: jhey Co-committed-by: jhey --- .../devices/huami/HuamiConst.java | 1 + .../huami/miband6/MiBand6Coordinator.java | 92 +++++++++++++ .../huami/miband6/MiBand6FWHelper.java | 37 ++++++ .../miband6/MiBand6FWInstallHandler.java | 50 +++++++ .../gadgetbridge/model/DeviceType.java | 1 + .../service/DeviceSupportFactory.java | 4 + .../huami/miband6/MiBand6FirmwareInfo.java | 51 +++++++ .../devices/huami/miband6/MiBand6Support.java | 64 +++++++++ .../gadgetbridge/util/DeviceHelper.java | 2 + app/src/main/res/values/arrays.xml | 124 ++++++++++++++++++ app/src/main/res/values/strings.xml | 2 + .../main/res/xml/devicesettings_miband6.xml | 30 +++++ 12 files changed, 458 insertions(+) create mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6Coordinator.java create mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6FWHelper.java create mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6FWInstallHandler.java create mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband6/MiBand6FirmwareInfo.java create mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband6/MiBand6Support.java create mode 100644 app/src/main/res/xml/devicesettings_miband6.xml diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiConst.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiConst.java index c48663e2c..d57ae3816 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiConst.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiConst.java @@ -51,6 +51,7 @@ public class HuamiConst { public static final String MI_BAND3_NAME_2 = "Xiaomi Band 3"; public static final String MI_BAND4_NAME = "Mi Smart Band 4"; public static final String MI_BAND5_NAME = "Mi Smart Band 5"; + public static final String MI_BAND6_NAME = "Mi Smart Band 6"; public static final String AMAZFIT_BAND5_NAME = "Amazfit Band 5"; public static final String AMAZFIT_NEO_NAME = "Amazfit Neo"; public static final String AMAZFIT_X = "Amazfit X"; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6Coordinator.java new file mode 100644 index 000000000..a107014c8 --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6Coordinator.java @@ -0,0 +1,92 @@ +package nodomain.freeyourgadget.gadgetbridge.devices.huami.miband6; + +import android.bluetooth.BluetoothDevice; +import android.content.Context; +import android.net.Uri; + +import androidx.annotation.NonNull; + +import org.slf4j.LoggerFactory; + +import org.slf4j.Logger; + +import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; +import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst; +import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; +import nodomain.freeyourgadget.gadgetbridge.devices.huami.miband5.MiBand5Coordinator; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; +import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; +import nodomain.freeyourgadget.gadgetbridge.R; +public class MiBand6Coordinator extends HuamiCoordinator { + private static final Logger LOG = LoggerFactory.getLogger(MiBand6Coordinator.class); + @NonNull + @Override + public DeviceType getSupportedType(GBDeviceCandidate candidate) { + try { + BluetoothDevice device = candidate.getDevice(); + String name = device.getName(); + if (name != null && name.equalsIgnoreCase(HuamiConst.MI_BAND6_NAME)) { + return DeviceType.MIBAND6; + } + } catch (Exception ex) { + LOG.error("unable to check device support", ex); + } + return DeviceType.UNKNOWN; + } + + @Override + public DeviceType getDeviceType() { + return DeviceType.MIBAND6; + } + + @Override + public InstallHandler findInstallHandler(Uri uri, Context context) { + // TODO! + return null; + } + + @Override + public boolean supportsHeartRateMeasurement(GBDevice device) { + return true; + } + + @Override + public boolean supportsWeather() { + return true; + } + + + @Override + public boolean supportsActivityTracks() { + return true; + } + + @Override + public boolean supportsMusicInfo() { + return true; + } + + @Override + public int[] getSupportedDeviceSpecificSettings(GBDevice device) { + return new int[]{ + R.xml.devicesettings_miband6, + R.xml.devicesettings_wearlocation, + R.xml.devicesettings_custom_emoji_font, + R.xml.devicesettings_timeformat, + R.xml.devicesettings_dateformat, + R.xml.devicesettings_nightmode, + R.xml.devicesettings_liftwrist_display, + R.xml.devicesettings_swipeunlock, + R.xml.devicesettings_sync_calendar, + R.xml.devicesettings_expose_hr_thirdparty, + R.xml.devicesettings_pairingkey, + R.xml.devicesettings_high_mtu + }; + } + + @Override + public int getBondingStyle() { + return BONDING_STYLE_REQUIRE_KEY; + } +} diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6FWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6FWHelper.java new file mode 100644 index 000000000..954395747 --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6FWHelper.java @@ -0,0 +1,37 @@ +/* Copyright (C) 2017-2021 Andreas Shimokawa, Carsten Pfeiffer, odavo32nof + + This file is part of Gadgetbridge. + + Gadgetbridge is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Gadgetbridge is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . */ +package nodomain.freeyourgadget.gadgetbridge.devices.huami.miband6; + +import android.content.Context; +import android.net.Uri; + +import java.io.IOException; + +import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiFWHelper; +import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband5.MiBand5FirmwareInfo; + +public class MiBand6FWHelper extends HuamiFWHelper { + + public MiBand6FWHelper(Uri uri, Context context) throws IOException { + super(uri, context); + } + + @Override + protected void determineFirmwareInfo(byte[] wholeFirmwareBytes) { + throw new IllegalArgumentException("Not implemented."); + } +} diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6FWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6FWInstallHandler.java new file mode 100644 index 000000000..616a50a4f --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6FWInstallHandler.java @@ -0,0 +1,50 @@ +/* Copyright (C) 2015-2021 Andreas Shimokawa, Carsten Pfeiffer, odavo32nof + + This file is part of Gadgetbridge. + + Gadgetbridge is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Gadgetbridge is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . */ +package nodomain.freeyourgadget.gadgetbridge.devices.huami.miband6; + +import android.content.Context; +import android.net.Uri; + +import java.io.IOException; + +import nodomain.freeyourgadget.gadgetbridge.R; +import nodomain.freeyourgadget.gadgetbridge.devices.huami.miband5.MiBand5FWHelper; +import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWHelper; +import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWInstallHandler; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; +import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; + +class MiBand6FWInstallHandler extends AbstractMiBandFWInstallHandler { + MiBand6FWInstallHandler(Uri uri, Context context) { + super(uri, context); + } + + @Override + protected String getFwUpgradeNotice() { + return mContext.getString(R.string.fw_upgrade_notice_miband6, helper.getHumanFirmwareVersion()); + } + + @Override + protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + return new MiBand6FWHelper(uri, context); + } + + @Override + protected boolean isSupportedDeviceType(GBDevice device) { + return device.getType() == DeviceType.MIBAND6; + } +} diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java index 23f4edfa1..d72812036 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java @@ -61,6 +61,7 @@ public enum DeviceType { AMAZFITGTR2E(34, R.drawable.ic_device_zetime, R.drawable.ic_device_zetime_disabled, R.string.devicetype_amazfit_gtr2e), AMAZFITGTS2E(35, R.drawable.ic_device_amazfit_bip, R.drawable.ic_device_amazfit_bip_disabled,R.string .devicetype_amazfit_gts2e), AMAZFITX(36, R.drawable.ic_device_miband2, R.drawable.ic_device_miband2_disabled, R.string.devicetype_amazfit_x), + MIBAND6(37, R.drawable.ic_device_miband2, R.drawable.ic_device_miband2_disabled, R.string.devicetype_miband6), HPLUS(40, R.drawable.ic_device_hplus, R.drawable.ic_device_hplus_disabled, R.string.devicetype_hplus), MAKIBESF68(41, R.drawable.ic_device_hplus, R.drawable.ic_device_hplus_disabled, R.string.devicetype_makibes_f68), EXRIZUK8(42, R.drawable.ic_device_hplus, R.drawable.ic_device_hplus_disabled, R.string.devicetype_exrizu_k8), diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceSupportFactory.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceSupportFactory.java index dfebe5d44..c676e27a9 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceSupportFactory.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceSupportFactory.java @@ -62,6 +62,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitx.Amazf import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband3.MiBand3Support; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband4.MiBand4Support; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband5.MiBand5Support; +import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband6.MiBand6Support; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.zeppe.ZeppESupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.id115.ID115Support; import nodomain.freeyourgadget.gadgetbridge.service.devices.itag.ITagSupport; @@ -173,6 +174,9 @@ public class DeviceSupportFactory { case MIBAND5: deviceSupport = new ServiceDeviceSupport(new MiBand5Support(), EnumSet.of(ServiceDeviceSupport.Flags.BUSY_CHECKING)); break; + case MIBAND6: + deviceSupport = new ServiceDeviceSupport(new MiBand6Support(), EnumSet.of(ServiceDeviceSupport.Flags.BUSY_CHECKING)); + break; case AMAZFITBIP: deviceSupport = new ServiceDeviceSupport(new AmazfitBipSupport(), EnumSet.of(ServiceDeviceSupport.Flags.BUSY_CHECKING)); break; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband6/MiBand6FirmwareInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband6/MiBand6FirmwareInfo.java new file mode 100644 index 000000000..0a0ed1ccd --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband6/MiBand6FirmwareInfo.java @@ -0,0 +1,51 @@ +/* Copyright (C) 2017-2021 Andreas Shimokawa, Cristian Alfano, Daniele + Gobbetti, odavo32nof + + This file is part of Gadgetbridge. + + Gadgetbridge is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Gadgetbridge is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . */ +package nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband6; + +import java.util.HashMap; +import java.util.Map; + +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; +import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiFirmwareInfo; +import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiFirmwareType; + +public class MiBand6FirmwareInfo extends HuamiFirmwareInfo { + + private static final Map crcToVersion = new HashMap<>(); + + public MiBand6FirmwareInfo(byte[] bytes) { + super(bytes); + } + + @Override + protected HuamiFirmwareType determineFirmwareType(byte[] bytes) { + return HuamiFirmwareType.INVALID; + } + + + @Override + public boolean isGenerallyCompatibleWith(GBDevice device) { +// return isHeaderValid() && device.getType() == DeviceType.MIBAND5; + return false; + } + + @Override + protected Map getCrcMap() { + return crcToVersion; + } +} diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband6/MiBand6Support.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband6/MiBand6Support.java new file mode 100644 index 000000000..b1104bbe3 --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband6/MiBand6Support.java @@ -0,0 +1,64 @@ +/* Copyright (C) 2019-2021 Andreas Shimokawa, Manuel Ruß, odavo32nof + + This file is part of Gadgetbridge. + + Gadgetbridge is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Gadgetbridge is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . */ +package nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband6; + +import android.content.Context; +import android.net.Uri; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; + +import nodomain.freeyourgadget.gadgetbridge.R; +import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiFWHelper; +import nodomain.freeyourgadget.gadgetbridge.devices.huami.miband5.MiBand5FWHelper; +import nodomain.freeyourgadget.gadgetbridge.devices.huami.miband6.MiBand6FWHelper; +import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder; +import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband5.MiBand5Support; + +public class MiBand6Support extends MiBand5Support { + private static final Logger LOG = LoggerFactory.getLogger(MiBand6Support.class); + + @Override + protected MiBand6Support setDisplayItems(TransactionBuilder builder) { + setDisplayItemsNew(builder, false, true, R.array.pref_miband6_display_items_default); + return this; + } + + @Override + protected MiBand6Support setShortcuts(TransactionBuilder builder) { + setDisplayItemsNew(builder, true, true, R.array.pref_miband6_shortcuts_default); + return this; + } + + @Override + public HuamiFWHelper createFWHelper(Uri uri, Context context) throws IOException { + return new MiBand6FWHelper(uri, context); + } + + + @Override + public boolean supportsSunriseSunsetWindHumidity() { + return true; + } + + @Override + public int getActivitySampleSize() { + return 8; + } +} diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/DeviceHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/DeviceHelper.java index 68380f548..20b0ca7a6 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/DeviceHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/DeviceHelper.java @@ -68,6 +68,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitgtr.AmazfitGTRC import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitgtr.AmazfitGTRLiteCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitgtr2.AmazfitGTR2Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitx.AmazfitXCoordinator; +import nodomain.freeyourgadget.gadgetbridge.devices.huami.miband6.MiBand6Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huami.zeppe.ZeppECoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitgtr2.AmazfitGTR2eCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitgts.AmazfitGTSCoordinator; @@ -260,6 +261,7 @@ public class DeviceHelper { result.add(new MiBand3Coordinator()); result.add(new MiBand4Coordinator()); result.add(new MiBand5Coordinator()); + result.add(new MiBand6Coordinator()); result.add(new MiBand2HRXCoordinator()); result.add(new MiBand2Coordinator()); // Note: MiBand2 and all of the above must come before MiBand because detection is hacky, atm result.add(new MiBandCoordinator()); diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index c74a1266d..7c1bf4f37 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -408,6 +408,130 @@ @string/p_menuitem_music + + @string/menuitem_status + @string/menuitem_hr + @string/menuitem_workout + @string/menuitem_weather + @string/menuitem_notifications + @string/menuitem_alarm + @string/menuitem_takephoto + @string/menuitem_music + @string/menuitem_stopwatch + @string/menuitem_timer + @string/menuitem_findphone + @string/menuitem_mutephone + @string/menuitem_settings + @string/menuitem_activity + @string/menuitem_eventreminder + @string/menuitem_pai + @string/menuitem_worldclock + @string/menuitem_stress + @string/menuitem_cycles + @string/menuitem_spo2 + @string/menuitem_breathing + + + + @string/p_menuitem_status + @string/p_menuitem_hr + @string/p_menuitem_workout + @string/p_menuitem_weather + @string/p_menuitem_notifications + @string/p_menuitem_alarm + @string/p_menuitem_takephoto + @string/p_menuitem_music + @string/p_menuitem_stopwatch + @string/p_menuitem_timer + @string/p_menuitem_findphone + @string/p_menuitem_mutephone + @string/p_menuitem_settings + @string/p_menuitem_activity + @string/p_menuitem_eventreminder + @string/p_menuitem_pai + @string/p_menuitem_worldclock + @string/p_menuitem_stress + @string/p_menuitem_cycles + @string/p_menuitem_spo2 + @string/p_menuitem_breathing + + + + @string/menuitem_status + @string/menuitem_hr + @string/menuitem_workout + @string/menuitem_weather + @string/menuitem_notifications + @string/menuitem_alarm + @string/menuitem_takephoto + @string/menuitem_music + @string/menuitem_stopwatch + @string/menuitem_timer + @string/menuitem_findphone + @string/menuitem_mutephone + @string/menuitem_settings + @string/menuitem_activity + @string/menuitem_eventreminder + @string/menuitem_pai + @string/menuitem_worldclock + @string/menuitem_stress + @string/menuitem_cycles + @string/menuitem_spo2 + @string/menuitem_breathing + + + + @string/menuitem_status + @string/menuitem_hr + @string/menuitem_workout + @string/menuitem_weather + @string/menuitem_notifications + @string/menuitem_dnd + @string/menuitem_alarm + @string/menuitem_takephoto + @string/menuitem_music + @string/menuitem_stopwatch + @string/menuitem_timer + @string/menuitem_findphone + @string/menuitem_mutephone + @string/menuitem_eventreminder + @string/menuitem_pai + @string/menuitem_worldclock + @string/menuitem_stress + @string/menuitem_cycles + @string/menuitem_spo2 + @string/menuitem_breathing + + + + @string/p_menuitem_status + @string/p_menuitem_hr + @string/p_menuitem_workout + @string/p_menuitem_weather + @string/p_menuitem_notifications + @string/p_menuitem_dnd + @string/p_menuitem_alarm + @string/p_menuitem_takephoto + @string/p_menuitem_music + @string/p_menuitem_stopwatch + @string/p_menuitem_timer + @string/p_menuitem_findphone + @string/p_menuitem_mutephone + @string/p_menuitem_eventreminder + @string/p_menuitem_pai + @string/p_menuitem_worldclock + @string/p_menuitem_stress + @string/p_menuitem_cycles + @string/p_menuitem_spo2 + @string/p_menuitem_breathing + + + + @string/p_menuitem_notifications + @string/p_menuitem_weather + @string/p_menuitem_music + + @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 a5c6fb331..e4644774a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -85,6 +85,7 @@ You are about to install the %s firmware on your Mi Band 3.\n\nPlease make sure to install the .fw file, and after that the .res file. Your band will reboot after installing the .fw file.\n\nNote: You do not have to install .res if it is exactly the same as the one previously installed.\n\nPROCEED AT YOUR OWN RISK! You are about to install the %s firmware on your Mi Band 4.\n\nPlease make sure to install the .fw file, and after that the .res file. Your band will reboot after installing the .fw file.\n\nNote: You do not have to install .res if it is exactly the same as the one previously installed.\n\nPROCEED AT YOUR OWN RISK! You are about to install the %s firmware on your Mi Band 5.\n\nPlease make sure to install the .fw file, and after that the .res file. Your band will reboot after installing the .fw file.\n\nNote: You do not have to install .res if it is exactly the same as the one previously installed.\n\nPROCEED AT YOUR OWN RISK! + You are about to install the %s firmware on your Mi Band 6.\n\nPlease make sure to install the .fw file, and after that the .res file. Your band will reboot after installing the .fw file.\n\nNote: You do not have to install .res if it is exactly the same as the one previously installed.\n\nPROCEED AT YOUR OWN RISK! You are about to install the %s firmware on your Amazfit X.\n\nPlease make sure to install the .fw file, and after that the .res file. Your band will reboot after installing the .fw file.\n\nNote: You do not have to install .res if it is exactly the same as the one previously installed.\n\nPROCEED AT YOUR OWN RISK! You are about to install the %s firmware on your Amazfit Neo. \n @@ -811,6 +812,7 @@ Mi Band 3 Mi Band 4 Mi Band 5 + Mi Band 6 Amazfit Band 5 Amazfit Neo Amazfit Bip diff --git a/app/src/main/res/xml/devicesettings_miband6.xml b/app/src/main/res/xml/devicesettings_miband6.xml new file mode 100644 index 000000000..cb2efc038 --- /dev/null +++ b/app/src/main/res/xml/devicesettings_miband6.xml @@ -0,0 +1,30 @@ + + + + + +