From 8644a69d0a62b81b0903b97af2c03936e1e18edc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Rebelo?= Date: Fri, 23 Jan 2026 20:30:27 +0000 Subject: [PATCH] Amazfit Balance 2 XT: Experimental support --- .../watches/AmazfitBalance2XTCoordinator.java | 96 +++++++++++++++++++ .../gadgetbridge/model/DeviceType.java | 2 + app/src/main/res/values/strings.xml | 1 + 3 files changed, 99 insertions(+) create mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/watches/AmazfitBalance2XTCoordinator.java diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/watches/AmazfitBalance2XTCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/watches/AmazfitBalance2XTCoordinator.java new file mode 100644 index 0000000000..4e7cfb3276 --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/watches/AmazfitBalance2XTCoordinator.java @@ -0,0 +1,96 @@ +/* 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.huami.zeppos.watches; + +import androidx.annotation.NonNull; + +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import nodomain.freeyourgadget.gadgetbridge.R; +import nodomain.freeyourgadget.gadgetbridge.devices.huami.zeppos.ZeppOsCoordinator; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; + +public class AmazfitBalance2XTCoordinator extends ZeppOsCoordinator { + @Override + public boolean isExperimental() { + // untested + return true; + } + + @Override + public List getDeviceBluetoothNames() { + return Collections.singletonList("Amazfit Balance 2 XT"); + } + + @Override + public Set getDeviceSources() { + return new HashSet<>(Arrays.asList( + 10486016, + 10486017, + 10486019 + )); + } + + @Override + public int getDeviceNameResource() { + return R.string.devicetype_amazfit_balance_2_xt; + } + + @Override + public boolean mainMenuHasMoreSection() { + return true; + } + + @Override + public boolean supportsGpxUploads(final GBDevice device) { + return true; + } + + @Override + public boolean supportsControlCenter() { + return true; + } + + @Override + public boolean supportsToDoList() { + return true; + } + + @Override + public boolean supportsWifiHotspot(final GBDevice device) { + return true; + } + + @Override + public boolean supportsFtpServer(final GBDevice device) { + return true; + } + + @Override + public boolean supportsBluetoothPhoneCalls(final GBDevice device) { + 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 3ea3418527..39dd836573 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java @@ -230,6 +230,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.huami.zeppos.watches.Amazfit import nodomain.freeyourgadget.gadgetbridge.devices.huami.zeppos.watches.AmazfitActiveEdgeCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huami.zeppos.watches.AmazfitActiveMaxCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huami.zeppos.watches.AmazfitBalance2Coordinator; +import nodomain.freeyourgadget.gadgetbridge.devices.huami.zeppos.watches.AmazfitBalance2XTCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huami.zeppos.watches.AmazfitBalanceCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huami.zeppos.watches.AmazfitBand7Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huami.zeppos.watches.AmazfitBip5Coordinator; @@ -556,6 +557,7 @@ public enum DeviceType { AMAZFITFALCON(AmazfitFalconCoordinator.class), AMAZFITBALANCE(AmazfitBalanceCoordinator.class), AMAZFITBALANCE2(AmazfitBalance2Coordinator.class), + AMAZFITBALANCE2XT(AmazfitBalance2XTCoordinator.class), AMAZFITACTIVE(AmazfitActiveCoordinator.class), AMAZFITACTIVE2(AmazfitActive2RoundCoordinator.class), AMAZFITACTIVE2NFC(AmazfitActive2NfcCoordinator.class), diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ce009aa7f9..80342c98b2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1859,6 +1859,7 @@ Xiaomi Smart Band 10 Amazfit Balance Amazfit Balance 2 + Amazfit Balance 2 XT Amazfit Active Amazfit Active 2 Amazfit Active 2 (Round)