diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/xiaomi/redmiwatch4/RedmiWatch4Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/xiaomi/redmiwatch4/RedmiWatch4Coordinator.java new file mode 100644 index 000000000..7d438b071 --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/xiaomi/redmiwatch4/RedmiWatch4Coordinator.java @@ -0,0 +1,77 @@ +/* Copyright (C) 2024 Yoran Vulker + + 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.xiaomi.redmiwatch4; + +import android.content.Context; +import android.net.Uri; + +import androidx.annotation.Nullable; + +import java.util.regex.Pattern; + +import nodomain.freeyourgadget.gadgetbridge.R; +import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; +import nodomain.freeyourgadget.gadgetbridge.devices.xiaomi.XiaomiCoordinator; +import nodomain.freeyourgadget.gadgetbridge.devices.xiaomi.XiaomiInstallHandler; + +public class RedmiWatch4Coordinator extends XiaomiCoordinator { + + @Override + public int getDeviceNameResource() { + return R.string.devicetype_redmi_watch_4; + } + + @Override + protected Pattern getSupportedDeviceName() { + return Pattern.compile("^Redmi Watch 4 [0-9A-F]{4}$"); + } + + @Override + public boolean isExperimental() { + return true; + } + + @Override + public ConnectionType getConnectionType() { + // this device likely supports both connection types if we indicate + // that we are an iOS device in the final auth step + return ConnectionType.BT_CLASSIC; + } + + @Nullable + @Override + public InstallHandler findInstallHandler(Uri uri, Context context) { + final XiaomiInstallHandler handler = new XiaomiInstallHandler(uri, context); + + return handler.isValid() ? handler : null; + } + + @Override + public int getDefaultIconResource() { + return R.drawable.ic_device_amazfit_bip; + } + + @Override + public int getDisabledIconResource() { + return R.drawable.ic_device_amazfit_bip_disabled; + } + + @Override + public int getWorldClocksSlotCount() { + return 20; + } +} 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 33b098bbe..5f8f2b2f8 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java @@ -187,6 +187,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.xiaomi.redmismartbandpro.Red import nodomain.freeyourgadget.gadgetbridge.devices.xiaomi.redmiwatch2.RedmiWatch2Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.xiaomi.redmiwatch2lite.RedmiWatch2LiteCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.xiaomi.redmiwatch3.RedmiWatch3Coordinator; +import nodomain.freeyourgadget.gadgetbridge.devices.xiaomi.redmiwatch4.RedmiWatch4Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.xiaomi.watchs1.XiaomiWatchS1Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.xiaomi.watchs1active.XiaomiWatchS1ActiveCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.xiaomi.watchs1pro.XiaomiWatchS1ProCoordinator; @@ -257,6 +258,7 @@ public enum DeviceType { REDMIWATCH2(RedmiWatch2Coordinator.class), REDMIWATCH2LITE(RedmiWatch2LiteCoordinator.class), REDMISMARTBANDPRO(RedmiSmartBandProCoordinator.class), + REDMIWATCH4(RedmiWatch4Coordinator.class), XIAOMI_WATCH_S1_ACTIVE(XiaomiWatchS1ActiveCoordinator.class), XIAOMI_WATCH_S1_PRO(XiaomiWatchS1ProCoordinator.class), XIAOMI_WATCH_S1(XiaomiWatchS1Coordinator.class), diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 45110e573..fa5a87498 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1559,6 +1559,7 @@ Redmi Watch 2 Redmi Watch 2 Lite Redmi Smart Band Pro + Redmi Watch 4 Choose export location General High-priority