From a917d3786fac39dc17bfc2f43e3219cf3a6636e4 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Mon, 13 Dec 2021 10:08:39 +0100 Subject: [PATCH] Amazfit GTS2 mini: Fix language selection --- .../service/devices/huami/HuamiSupport.java | 24 +++++++++++++++++++ .../huami/amazfitbipu/AmazfitBipUSupport.java | 22 +---------------- .../amazfitgts2/AmazfitGTS2MiniSupport.java | 7 ++++++ 3 files changed, 32 insertions(+), 21 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 2a5a2f398..b40ff4705 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 @@ -2907,6 +2907,30 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport { return this; } + /* + Some newer devices seem to support setting the language by id again instead of a locale string + Amazfit Bip U and GTS 2 mini tested so far + */ + protected HuamiSupport setLanguageByIdNew(TransactionBuilder builder) { + byte language_code = 0x02; // english default + + String localeString = GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()).getString("language", "auto"); + if (localeString == null || localeString.equals("auto")) { + String language = Locale.getDefault().getLanguage(); + String country = Locale.getDefault().getCountry(); + + localeString = language + "_" + country.toUpperCase(); + } + + Integer id = HuamiLanguageType.idLookup.get(localeString); + if (id != null) { + language_code = id.byteValue(); + } + + final byte[] command = new byte[]{0x06, 0x3b, 0x00, language_code, 0x03}; + writeToConfiguration(builder, command); + return this; + } private HuamiSupport setExposeHRThridParty(TransactionBuilder builder) { boolean enable = HuamiCoordinator.getExposeHRThirdParty(gbDevice.getAddress()); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbipu/AmazfitBipUSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbipu/AmazfitBipUSupport.java index f6ec6dd7d..3ffddd8e9 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbipu/AmazfitBipUSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbipu/AmazfitBipUSupport.java @@ -21,13 +21,10 @@ import android.content.Context; import android.net.Uri; import java.io.IOException; -import java.util.Locale; -import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiFWHelper; import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbipu.AmazfitBipUFWHelper; import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder; -import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiLanguageType; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbips.AmazfitBipSSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.operations.UpdateFirmwareOperation; @@ -37,24 +34,7 @@ public class AmazfitBipUSupport extends AmazfitBipSSupport { @Override protected HuamiSupport setLanguage(TransactionBuilder builder) { - byte language_code = 0x02; // english default - - String localeString = GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()).getString("language", "auto"); - if (localeString == null || localeString.equals("auto")) { - String language = Locale.getDefault().getLanguage(); - String country = Locale.getDefault().getCountry(); - - localeString = language + "_" + country.toUpperCase(); - } - - Integer id = HuamiLanguageType.idLookup.get(localeString); - if (id != null) { - language_code = id.byteValue(); - } - - final byte[] command = new byte[]{0x06, 0x3b, 0x00, language_code, 0x03}; - writeToConfiguration(builder, command); - return this; + return setLanguageByIdNew(builder); } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgts2/AmazfitGTS2MiniSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgts2/AmazfitGTS2MiniSupport.java index 6c6afd234..2730c7a99 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgts2/AmazfitGTS2MiniSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgts2/AmazfitGTS2MiniSupport.java @@ -24,9 +24,16 @@ import java.io.IOException; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiFWHelper; import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitgts2.AmazfitGTS2MiniFWHelper; +import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder; +import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiSupport; public class AmazfitGTS2MiniSupport extends AmazfitGTS2Support { + @Override + protected HuamiSupport setLanguage(TransactionBuilder builder) { + return setLanguageByIdNew(builder); + } + @Override public HuamiFWHelper createFWHelper(Uri uri, Context context) throws IOException { return new AmazfitGTS2MiniFWHelper(uri, context);