diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiConstants.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiConstants.java index 4fe8b57d71..5dcddb4519 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiConstants.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiConstants.java @@ -96,6 +96,7 @@ public final class HuaweiConstants { public static final String HU_WATCHFIT4_NAME = "huawei watch fit 4-"; public static final String HU_WATCHFIT4PRO_NAME = "huawei watch fit 4 pro-"; public static final String HU_WATCHULTIMATE_NAME = "huawei watch ultimate-"; + public static final String HU_WATCHULTIMATE2_NAME = "watch ultimate 2-"; public static final String HU_WATCH4_NAME = "huawei watch 4-"; public static final String HU_WATCH4PRO_NAME = "huawei watch 4 pro-"; public static final String HU_WATCH5_NAME = "huawei watch 5-"; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchultimate2/HuaweiWatchUltimate2Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchultimate2/HuaweiWatchUltimate2Coordinator.java new file mode 100644 index 0000000000..31c28643ea --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchultimate2/HuaweiWatchUltimate2Coordinator.java @@ -0,0 +1,54 @@ +/* Copyright (C) 2026 José Rebelo + + 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.huawei.huaweiwatchultimate2; + +import androidx.annotation.NonNull; + +import java.util.regex.Pattern; + +import nodomain.freeyourgadget.gadgetbridge.R; +import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiBRCoordinator; +import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; + +public class HuaweiWatchUltimate2Coordinator extends HuaweiBRCoordinator { + @Override + public boolean isExperimental() { + return true; + } + + @Override + protected Pattern getSupportedDeviceName() { + return Pattern.compile("(" + HuaweiConstants.HU_WATCHULTIMATE2_NAME + ").*", Pattern.CASE_INSENSITIVE); + } + + @Override + public int getDeviceNameResource() { + return R.string.devicetype_huawei_watchultimate2; + } + + @Override + public boolean supportsUnicodeEmojis(@NonNull GBDevice device) { + // HarmonyOS watch + return true; + } + + @Override + public DeviceKind getDeviceKind(@NonNull GBDevice device) { + return DeviceKind.WATCH; + } +} 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 ec37b1a6bd..caa82c9e24 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java @@ -310,6 +310,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiwatchgtcyber.Hu import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiwatchgtrunner.HuaweiWatchGTRunnerCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiwatchgtrunner2.HuaweiWatchGTRunner2Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiwatchultimate.HuaweiWatchUltimateCoordinator; +import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiwatchultimate2.HuaweiWatchUltimate2Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.id115.ID115Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.idasen.IdasenCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.itag.ITagCoordinator; @@ -842,6 +843,7 @@ public enum DeviceType { HUAWEIWATCHFIT3(HuaweiWatchFit3Coordinator.class), HUAWEIWATCHFIT4PRO(HuaweiWatchFit4ProCoordinator.class), HUAWEIWATCHULTIMATE(HuaweiWatchUltimateCoordinator.class), + HUAWEIWATCHULTIMATE2(HuaweiWatchUltimate2Coordinator.class), HUAWEIWATCH3(HuaweiWatch3Coordinator.class), HUAWEIWATCH4PRO(HuaweiWatch4ProCoordinator.class), HUAWEIWATCH5(HuaweiWatch5Coordinator.class), diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index be9c4d96b8..d695aed871 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2182,6 +2182,7 @@ Huawei Watch Fit 3 Huawei Watch Fit 4 (Pro) Huawei Watch Ultimate + Huawei Watch Ultimate 2 Huawei Watch 3 (Pro) Huawei Watch 4 (Pro) Huawei Watch 5 diff --git a/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/devices/AbstractDeviceCoordinatorTest.java b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/devices/AbstractDeviceCoordinatorTest.java index 234f693fb8..5e9e38b9e7 100644 --- a/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/devices/AbstractDeviceCoordinatorTest.java +++ b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/devices/AbstractDeviceCoordinatorTest.java @@ -180,6 +180,7 @@ public class AbstractDeviceCoordinatorTest extends TestBase { put("Redmi Watch 2 Lite 31A5", DeviceType.REDMIWATCH2LITE); // #2637 put("honor Watch-7EE", DeviceType.HONORMAGICWATCH); // #5816 put("HUAWEI Band 6-A47", DeviceType.HUAWEIBAND6); // #2569 + put("WATCH Ultimate 2-D96", DeviceType.HUAWEIWATCHULTIMATE2); // matrix put("716", DeviceType.FITPRO); put("LH716", DeviceType.FITPRO); put("Sunset 6", DeviceType.FITPRO);