From bad96e4f75e9e359642ae936b6ff2df0ed8a2374 Mon Sep 17 00:00:00 2001 From: Michael Plattner Date: Thu, 7 May 2026 22:48:47 +0200 Subject: [PATCH] feat: add binavi air --- .../IGPSportBiNaviAirCoordinator.java | 45 +++++++++++++++++++ .../gadgetbridge/model/DeviceType.java | 2 + app/src/main/res/values/strings.xml | 1 + 3 files changed, 48 insertions(+) create mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/igpsport/IGPSportBiNaviAirCoordinator.java diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/igpsport/IGPSportBiNaviAirCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/igpsport/IGPSportBiNaviAirCoordinator.java new file mode 100644 index 0000000000..f2c098c2fd --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/igpsport/IGPSportBiNaviAirCoordinator.java @@ -0,0 +1,45 @@ +/* Copyright (C) 2025 Vitaliy Tomin, Thomas Kuehne + + 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.igpsport; + +import java.util.regex.Pattern; + +import nodomain.freeyourgadget.gadgetbridge.R; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; + +public class IGPSportBiNaviAirCoordinator extends IGPSportAbstractCoordinator { + + @Override + public int getDeviceNameResource() { + return R.string.devicetype_igpsport_binavi_air; + } + + @Override + protected Pattern getSupportedDeviceName() { + return Pattern.compile("(?i)(?:iGPSPORT\\s*)?BiNavi[\\s_-]*Air"); + } + + @Override + public boolean supportsWeather(final GBDevice device) { + return true; + } + + @Override + public boolean supportsMusicInfo(final GBDevice device) { + return true; + } +} 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 ee7a5ed5b1..28a90d6432 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java @@ -316,6 +316,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiwatchultimate.H 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.igpsport.IGPSportBiNaviAirCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.igpsport.IGPSportBSC200Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.igpsport.IGPSportBSC200SCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.igpsport.IGPSportiGS630Coordinator; @@ -951,6 +952,7 @@ public enum DeviceType { IGPSPORT_IGS630(IGPSportiGS630Coordinator.class), IGPSPORT_IGS630S(IGPSportiGS630SCoordinator.class), IGPSPORT_IGS800(IGPSportiGS800Coordinator.class), + IGPSPORT_BINAVI_AIR(IGPSportBiNaviAirCoordinator.class), TEST(TestDeviceCoordinator.class); private DeviceCoordinator coordinator; diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 621600b70e..3e352bdcd8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2255,6 +2255,7 @@ iGPSPORT iGS630 iGPSPORT iGS630S iGPSPORT iGS800 + iGPSPORT BiNavi Air Installing route Route upload completed Route upload failed