diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/AbstractDeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/AbstractDeviceCoordinator.java
index 06fa1bdaf..d99749459 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/AbstractDeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/AbstractDeviceCoordinator.java
@@ -42,6 +42,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.EnumSet;
import java.util.List;
+import java.util.regex.Pattern;
import de.greenrobot.dao.query.QueryBuilder;
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
@@ -76,9 +77,29 @@ import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
public abstract class AbstractDeviceCoordinator implements DeviceCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AbstractDeviceCoordinator.class);
+ private Pattern supportedDeviceName = null;
+ /**
+ * This method should return a ReGexp pattern that will matched against a found device
+ * to check whether this coordinator supports that device.
+ * If more sophisticated logic is needed to determine device support, the supports(GBDeviceCandidate)
+ * should be overridden.
+ *
+ * @return Pattern
+ * */
+ protected Pattern getSupportedDeviceName(){
+ return null;
+ }
+
@Override
- public final boolean supports(GBDeviceCandidate candidate) {
- return getSupportedType(candidate).isSupported();
+ public boolean supports(GBDeviceCandidate candidate) {
+ if(supportedDeviceName == null){
+ supportedDeviceName = getSupportedDeviceName();
+ }
+ if(supportedDeviceName == null){
+ throw new RuntimeException(getClass() + " should either override getSupportedDeviceName or supports(GBDeviceCandidate)");
+ }
+
+ return supportedDeviceName.matcher(candidate.getName()).matches();
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/DeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/DeviceCoordinator.java
index 4ccaae387..e6d310550 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/DeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/DeviceCoordinator.java
@@ -112,17 +112,6 @@ public interface DeviceCoordinator {
}
}
- /**
- * Checks whether this coordinator handles the given candidate.
- * Returns the supported device type for the given candidate or
- * DeviceType.UNKNOWN
- *
- * @param candidate
- * @return the supported device type for the given candidate.
- */
- @NonNull
- DeviceType getSupportedType(GBDeviceCandidate candidate);
-
/**
* Returns the type of connection, Classic of BLE
*
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/UnknownDeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/UnknownDeviceCoordinator.java
index ba7662739..527f50879 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/UnknownDeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/UnknownDeviceCoordinator.java
@@ -108,8 +108,8 @@ public class UnknownDeviceCoordinator extends AbstractDeviceCoordinator {
@NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- return DeviceType.UNKNOWN;
+ public boolean supports(GBDeviceCandidate candidate) {
+ return false;
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/asteroidos/AsteroidOSDeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/asteroidos/AsteroidOSDeviceCoordinator.java
index 723a48f89..7330f5ee7 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/asteroidos/AsteroidOSDeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/asteroidos/AsteroidOSDeviceCoordinator.java
@@ -4,7 +4,6 @@ import android.app.Activity;
import android.bluetooth.le.ScanFilter;
import android.content.Context;
import android.net.Uri;
-import android.os.Parcel;
import android.os.ParcelUuid;
import androidx.annotation.NonNull;
@@ -67,16 +66,16 @@ public class AsteroidOSDeviceCoordinator extends AbstractDeviceCoordinator {
@NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
+ public boolean supports(GBDeviceCandidate candidate) {
if (candidate.supportsService(AsteroidOSConstants.SERVICE_UUID)) {
- return DeviceType.ASTEROIDOS;
+ return true;
}
for (String name : AsteroidOSConstants.SUPPORTED_DEVICE_CODENAMES) {
if (candidate.getName().equals(name)) {
- return DeviceType.ASTEROIDOS;
+ return true;
}
}
- return DeviceType.UNKNOWN;
+ return false;
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/banglejs/BangleJSCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/banglejs/BangleJSCoordinator.java
index ea853787d..06f674a14 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/banglejs/BangleJSCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/banglejs/BangleJSCoordinator.java
@@ -31,6 +31,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.BuildConfig;
import nodomain.freeyourgadget.gadgetbridge.R;
@@ -64,21 +65,9 @@ public class BangleJSCoordinator extends AbstractBLEDeviceCoordinator {
return Collections.singletonList(filter);
}
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- String name = candidate.getName();
- /* Filter by Espruino devices to avoid getting
- the device chooser full of spam devices. */
- if (name != null && (
- name.startsWith("Bangle.js") ||
- name.startsWith("Pixl.js") ||
- name.startsWith("Puck.js") ||
- name.startsWith("MDBT42Q") ||
- name.startsWith("Espruino")))
- return DeviceType.BANGLEJS;
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Bangle\\.js.*|Pixl\\.js.*|Puck\\.js.*|MDBT42Q.*|Espruino.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/binary_sensor/coordinator/BinarySensorCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/binary_sensor/coordinator/BinarySensorCoordinator.java
index 1e296c221..3284935ef 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/binary_sensor/coordinator/BinarySensorCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/binary_sensor/coordinator/BinarySensorCoordinator.java
@@ -46,14 +46,13 @@ public class BinarySensorCoordinator extends AbstractBLEDeviceCoordinator {
@NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- Log.d("coordinator", "candidate name: " + candidate.getName());
+ public boolean supports(GBDeviceCandidate candidate) {
for(ParcelUuid service : candidate.getServiceUuids()){
if(service.getUuid().toString().equals(BinarySensorSupport.BINARY_SENSOR_SERVICE_UUID)){
- return DeviceType.BINARY_SENSOR;
+ return true;
};
}
- return DeviceType.UNKNOWN;
+ return false;
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/gb6900/CasioGB6900DeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/gb6900/CasioGB6900DeviceCoordinator.java
index 8d9b5e1eb..ac40d2351 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/gb6900/CasioGB6900DeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/gb6900/CasioGB6900DeviceCoordinator.java
@@ -27,6 +27,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import androidx.annotation.NonNull;
+
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.GBException;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
@@ -44,18 +47,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.casio.gb6900.CasioGB
public class CasioGB6900DeviceCoordinator extends CasioDeviceCoordinator {
protected static final Logger LOG = LoggerFactory.getLogger(CasioGB6900DeviceCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- String name = candidate.getName();
- if (name != null) {
- if (name.startsWith("CASIO") && (name.contains("6900B") || name.contains("5600B") ||
- name.contains("STB-1000"))) {
- return DeviceType.CASIOGB6900;
- }
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("CASIO.*(6900B|5600B|STB-1000).*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/gbx100/CasioGBX100DeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/gbx100/CasioGBX100DeviceCoordinator.java
index c3febfb7e..52bb461d4 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/gbx100/CasioGBX100DeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/gbx100/CasioGBX100DeviceCoordinator.java
@@ -28,13 +28,14 @@ import org.slf4j.LoggerFactory;
import androidx.annotation.NonNull;
+import java.util.regex.Pattern;
+
import de.greenrobot.dao.query.QueryBuilder;
import nodomain.freeyourgadget.gadgetbridge.GBException;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
import nodomain.freeyourgadget.gadgetbridge.devices.casio.CasioDeviceCoordinator;
-import nodomain.freeyourgadget.gadgetbridge.devices.casio.gbx100.CasioGBX100SampleProvider;
import nodomain.freeyourgadget.gadgetbridge.entities.CasioGBX100ActivitySampleDao;
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
import nodomain.freeyourgadget.gadgetbridge.entities.Device;
@@ -48,19 +49,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.casio.gbx100.CasioGB
public class CasioGBX100DeviceCoordinator extends CasioDeviceCoordinator {
protected static final Logger LOG = LoggerFactory.getLogger(CasioGBX100DeviceCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- String name = candidate.getName();
- if (name != null) {
- if (name.startsWith("CASIO") && (name.endsWith("GBX-100") ||
- name.endsWith("GBD-200") || name.endsWith("GBD-100") ||
- name.endsWith("GBD-H1000"))) {
- return DeviceType.CASIOGBX100;
- }
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("CASIO.*(GBX-100|GBD-100|GBD-200|GBD-H1000)");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/gwb5600/CasioGMWB5000DeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/gwb5600/CasioGMWB5000DeviceCoordinator.java
index 135a55093..e645980eb 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/gwb5600/CasioGMWB5000DeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/gwb5600/CasioGMWB5000DeviceCoordinator.java
@@ -20,25 +20,16 @@ package nodomain.freeyourgadget.gadgetbridge.devices.casio.gwb5600;
import androidx.annotation.NonNull;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
-import nodomain.freeyourgadget.gadgetbridge.devices.casio.gwb5600.CasioGWB5600DeviceCoordinator;
-
public class CasioGMWB5000DeviceCoordinator extends CasioGWB5600DeviceCoordinator {
-
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- String name = candidate.getName();
- if (name != null) {
- if (name.equals("CASIO GMW-B5000")) {
- return DeviceType.CASIOGMWB5000;
- }
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("CASIO GMW-B5000");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/gwb5600/CasioGWB5600DeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/gwb5600/CasioGWB5600DeviceCoordinator.java
index 0114348db..5e1abf870 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/gwb5600/CasioGWB5600DeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/gwb5600/CasioGWB5600DeviceCoordinator.java
@@ -18,19 +18,15 @@
along with this program. If not, see . */
package nodomain.freeyourgadget.gadgetbridge.devices.casio.gwb5600;
-import java.util.Collection;
-import java.util.Collections;
-
import android.app.Activity;
import android.content.Context;
import android.net.Uri;
-import android.bluetooth.le.ScanFilter;
-import android.os.ParcelUuid;
import androidx.annotation.NonNull;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
-import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLEDeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
@@ -40,24 +36,14 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
-import nodomain.freeyourgadget.gadgetbridge.devices.casio.CasioConstants;
import nodomain.freeyourgadget.gadgetbridge.devices.casio.CasioDeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport;
import nodomain.freeyourgadget.gadgetbridge.service.devices.casio.gwb5600.CasioGWB5600DeviceSupport;
public class CasioGWB5600DeviceCoordinator extends CasioDeviceCoordinator {
-
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- String name = candidate.getName();
- if (name != null) {
- if (name.equals("CASIO GW-B5600")) {
- return DeviceType.CASIOGWB5600;
- }
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("CASIO GW-B5600");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/domyos/DomyosT540Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/domyos/DomyosT540Coordinator.java
index ea0a089ba..e4bcdc33e 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/domyos/DomyosT540Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/domyos/DomyosT540Coordinator.java
@@ -24,6 +24,7 @@ import android.net.Uri;
import androidx.annotation.NonNull;
import java.util.EnumSet;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLEDeviceCoordinator;
@@ -40,14 +41,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.ServiceDeviceSupport;
import nodomain.freeyourgadget.gadgetbridge.service.devices.domyos.DomyosT540Support;
public class DomyosT540Coordinator extends AbstractBLEDeviceCoordinator {
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- String name = candidate.getName();
- if (name != null && name.startsWith("Domyos-TC-9610")) {
- return DeviceType.DOMYOS_T540;
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Domyos-TC-9610.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/fitpro/FitProDeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/fitpro/FitProDeviceCoordinator.java
index 742859f0c..16ee11baa 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/fitpro/FitProDeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/fitpro/FitProDeviceCoordinator.java
@@ -20,7 +20,6 @@ package nodomain.freeyourgadget.gadgetbridge.devices.fitpro;
import android.app.Activity;
import android.content.Context;
import android.net.Uri;
-import android.os.ParcelUuid;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -29,6 +28,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.EnumSet;
+import java.util.regex.Pattern;
import de.greenrobot.dao.query.QueryBuilder;
import nodomain.freeyourgadget.gadgetbridge.GBException;
@@ -58,28 +58,9 @@ public class FitProDeviceCoordinator extends AbstractBLEDeviceCoordinator {
qb.where(FitProActivitySampleDao.Properties.DeviceId.eq(deviceId)).buildDelete().executeDeleteWithoutDetachingEntities();
}
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
-
- if (name != null && (
- name.startsWith("M6") ||
- name.startsWith("M4") ||
- name.equals("LH716") ||
- name.equals("Sunset 6") ||
- name.equals("Watch7") ||
- name.equals("Fit1900"))
- ) {
- return DeviceType.FITPRO;
- }
-
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("M6.*|M4.*|LH716|Sunset 6|Watch7|Fit1900");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/flipper/zero/FlipperZeroCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/flipper/zero/FlipperZeroCoordinator.java
index dd671f8e4..70a9cd81e 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/flipper/zero/FlipperZeroCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/flipper/zero/FlipperZeroCoordinator.java
@@ -31,11 +31,11 @@ public class FlipperZeroCoordinator extends AbstractBLEDeviceCoordinator {
@NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
+ public boolean supports(GBDeviceCandidate candidate) {
if(candidate.supportsService(UUID.fromString("00003082-0000-1000-8000-00805f9b34fb"))){
- return DeviceType.FLIPPER_ZERO; // need to filter for flipper here
+ return true; // need to filter for flipper here
}
- return DeviceType.UNKNOWN;
+ return false;
}
@Nullable
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBuds2DeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBuds2DeviceCoordinator.java
index a7d0bc696..869cbffb8 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBuds2DeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBuds2DeviceCoordinator.java
@@ -2,6 +2,8 @@ package nodomain.freeyourgadget.gadgetbridge.devices.galaxy_buds;
import androidx.annotation.NonNull;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsCustomizer;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
@@ -10,19 +12,9 @@ import nodomain.freeyourgadget.gadgetbridge.model.BatteryConfig;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
public class GalaxyBuds2DeviceCoordinator extends GalaxyBudsGenericCoordinator {
-
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
-
- String name = candidate.getName();
-
- if (name != null && (
- name.startsWith("Galaxy Buds2 (")
- )) {
- return DeviceType.GALAXY_BUDS2;
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Galaxy Buds2 \\(.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBuds2ProDeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBuds2ProDeviceCoordinator.java
index 8f4ee2d89..7d63455c9 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBuds2ProDeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBuds2ProDeviceCoordinator.java
@@ -2,6 +2,8 @@ package nodomain.freeyourgadget.gadgetbridge.devices.galaxy_buds;
import androidx.annotation.NonNull;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsCustomizer;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
@@ -10,19 +12,9 @@ import nodomain.freeyourgadget.gadgetbridge.model.BatteryConfig;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
public class GalaxyBuds2ProDeviceCoordinator extends GalaxyBudsGenericCoordinator {
-
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
-
- String name = candidate.getName();
-
- if (name != null && (
- name.startsWith("Galaxy Buds2 Pro")
- )) {
- return DeviceType.GALAXY_BUDS2_PRO;
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Galaxy Buds2 Pro.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBudsDeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBudsDeviceCoordinator.java
index f19dbfa0a..10a78a244 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBudsDeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBudsDeviceCoordinator.java
@@ -2,6 +2,8 @@ package nodomain.freeyourgadget.gadgetbridge.devices.galaxy_buds;
import androidx.annotation.NonNull;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
@@ -9,19 +11,9 @@ import nodomain.freeyourgadget.gadgetbridge.model.BatteryConfig;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
public class GalaxyBudsDeviceCoordinator extends GalaxyBudsGenericCoordinator {
-
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
-
- String name = candidate.getName();
-
- if (name != null && (
- name.startsWith("Galaxy Buds (")
- )) {
- return DeviceType.GALAXY_BUDS;
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Galaxy Buds \\(.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBudsLiveDeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBudsLiveDeviceCoordinator.java
index 666292b21..0b755fab1 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBudsLiveDeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBudsLiveDeviceCoordinator.java
@@ -2,6 +2,8 @@ package nodomain.freeyourgadget.gadgetbridge.devices.galaxy_buds;
import androidx.annotation.NonNull;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
@@ -9,19 +11,9 @@ import nodomain.freeyourgadget.gadgetbridge.model.BatteryConfig;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
public class GalaxyBudsLiveDeviceCoordinator extends GalaxyBudsGenericCoordinator {
-
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
-
- String name = candidate.getName();
-
- if (name != null && (
- name.startsWith("Galaxy Buds Live (")
- )) {
- return DeviceType.GALAXY_BUDS_LIVE;
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Galaxy Buds Live \\(.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBudsProDeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBudsProDeviceCoordinator.java
index 27c7a2ac5..334cf2ae4 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBudsProDeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBudsProDeviceCoordinator.java
@@ -2,6 +2,8 @@ package nodomain.freeyourgadget.gadgetbridge.devices.galaxy_buds;
import androidx.annotation.NonNull;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsCustomizer;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
@@ -10,19 +12,9 @@ import nodomain.freeyourgadget.gadgetbridge.model.BatteryConfig;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
public class GalaxyBudsProDeviceCoordinator extends GalaxyBudsGenericCoordinator {
-
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
-
- String name = candidate.getName();
-
- if (name != null && (
- name.startsWith("Galaxy Buds Pro (")
- )) {
- return DeviceType.GALAXY_BUDS_PRO;
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Galaxy Buds Pro \\(.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/EXRIZUK8Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/EXRIZUK8Coordinator.java
index 3e37b078e..eefc77daf 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/EXRIZUK8Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/EXRIZUK8Coordinator.java
@@ -23,6 +23,8 @@ package nodomain.freeyourgadget.gadgetbridge.devices.hplus;
import androidx.annotation.NonNull;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
@@ -31,16 +33,9 @@ import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
* Pseudo Coordinator for the EXRIZU K8, a sub type of the HPLUS devices
*/
public class EXRIZUK8Coordinator extends HPlusCoordinator {
-
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- String name = candidate.getName();
- if(name != null && name.startsWith("iRun ")){
- return DeviceType.EXRIZUK8;
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("iRun .*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/HPlusCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/HPlusCoordinator.java
index 00fab4311..41e3e6b3a 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/HPlusCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/HPlusCoordinator.java
@@ -17,13 +17,11 @@
along with this program. If not, see . */
package nodomain.freeyourgadget.gadgetbridge.devices.hplus;
-import android.annotation.TargetApi;
import android.app.Activity;
import android.bluetooth.le.ScanFilter;
import android.content.Context;
import android.content.SharedPreferences;
import android.net.Uri;
-import android.os.Build;
import android.os.ParcelUuid;
import org.slf4j.Logger;
@@ -32,6 +30,7 @@ import org.slf4j.LoggerFactory;
import java.util.Collection;
import java.util.Collections;
import java.util.Locale;
+import java.util.regex.Pattern;
import androidx.annotation.NonNull;
@@ -53,7 +52,6 @@ import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample;
import nodomain.freeyourgadget.gadgetbridge.model.ActivityUser;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport;
-import nodomain.freeyourgadget.gadgetbridge.service.ServiceDeviceSupport;
import nodomain.freeyourgadget.gadgetbridge.service.devices.hplus.HPlusSupport;
import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs;
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
@@ -72,15 +70,9 @@ public class HPlusCoordinator extends AbstractBLEDeviceCoordinator {
return Collections.singletonList(filter);
}
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- String name = candidate.getName();
- if (name != null && name.startsWith("HPLUS")) {
- return DeviceType.HPLUS;
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("HPLUS.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/MakibesF68Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/MakibesF68Coordinator.java
index 263d81a8b..ecbd61a38 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/MakibesF68Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/MakibesF68Coordinator.java
@@ -34,13 +34,13 @@ public class MakibesF68Coordinator extends HPlusCoordinator {
@NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
+ public boolean supports(GBDeviceCandidate candidate) {
String name = candidate.getName();
if(name != null && name.startsWith("SPORT") && !name.startsWith("SPORTAGE")){
- return DeviceType.MAKIBESF68;
+ return true;
}
- return DeviceType.UNKNOWN;
+ return false;
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/Q8Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/Q8Coordinator.java
index 5ac088f41..3beec9cff 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/Q8Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/Q8Coordinator.java
@@ -23,6 +23,8 @@ package nodomain.freeyourgadget.gadgetbridge.devices.hplus;
import androidx.annotation.NonNull;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
@@ -31,16 +33,9 @@ import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
* Pseudo Coordinator for the Q8, a sub type of the HPLUS devices
*/
public class Q8Coordinator extends HPlusCoordinator {
-
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- String name = candidate.getName();
- if(name != null && name.startsWith("Q8")){
- return DeviceType.Q8;
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Q8.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/SG2Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/SG2Coordinator.java
index 7ef84403b..977a42e59 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/SG2Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/SG2Coordinator.java
@@ -31,16 +31,16 @@ public class SG2Coordinator extends HPlusCoordinator {
@NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
+ public boolean supports(GBDeviceCandidate candidate) {
String name = candidate.getName();
if (name != null && name.startsWith("SG2")) {
HPlusCoordinator.setNotificationLinesNumber(candidate.getDevice().getAddress(), 9);
HPlusCoordinator.setUnicodeSupport(candidate.getDevice().getAddress(), true);
HPlusCoordinator.setDisplayIncomingMessageIcon(candidate.getDevice().getAddress(), false);
- return DeviceType.SG2;
+ return true;
}
- return DeviceType.UNKNOWN;
+ return false;
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband5/AmazfitBand5Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband5/AmazfitBand5Coordinator.java
index 1a79ea789..9c627479b 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband5/AmazfitBand5Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband5/AmazfitBand5Coordinator.java
@@ -25,6 +25,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
@@ -38,22 +40,11 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitband5.A
public class AmazfitBand5Coordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitBand5Coordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && name.equalsIgnoreCase(HuamiConst.AMAZFIT_BAND5_NAME)) {
- return DeviceType.AMAZFITBAND5;
- }
- } catch (SecurityException ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
-
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(HuamiConst.AMAZFIT_BAND5_NAME, Pattern.CASE_INSENSITIVE);
}
-
@Override
public InstallHandler findInstallHandler(Uri uri, Context context) {
AmazfitBand5FWInstallHandler handler = new AmazfitBand5FWInstallHandler(uri, context);
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband7/AmazfitBand7Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband7/AmazfitBand7Coordinator.java
index 368923f19..64d480966 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband7/AmazfitBand7Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband7/AmazfitBand7Coordinator.java
@@ -24,6 +24,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
@@ -37,21 +39,10 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitband7.A
public class AmazfitBand7Coordinator extends Huami2021Coordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitBand7Coordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
- try {
- final String name = candidate.getName();
- if (name != null && name.startsWith(HuamiConst.AMAZFIT_BAND7_NAME)) {
- return DeviceType.AMAZFITBAND7;
- }
- } catch (SecurityException e) {
- LOG.error("unable to check device support", e);
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(HuamiConst.AMAZFIT_BAND7_NAME + ".*", Pattern.CASE_INSENSITIVE);
}
-
@NonNull
@Override
public Class extends DeviceSupport> getDeviceSupportClass() {
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipCoordinator.java
index 51a259652..ad346a1fb 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipCoordinator.java
@@ -25,6 +25,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator;
@@ -37,18 +39,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip.Ama
public class AmazfitBipCoordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitBipCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && (name.equalsIgnoreCase("Amazfit Bip Watch"))) {
- return DeviceType.AMAZFITBIP;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Amazfit Bip Watch", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteCoordinator.java
index d4b5bcdf7..81913467a 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteCoordinator.java
@@ -25,6 +25,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
@@ -36,18 +38,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip.Ama
public class AmazfitBipLiteCoordinator extends AmazfitBipCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitBipLiteCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && name.equalsIgnoreCase("Amazfit Bip Lite")) {
- return DeviceType.AMAZFITBIP_LITE;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Amazfit Bip Lite", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip3pro/AmazfitBip3ProCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip3pro/AmazfitBip3ProCoordinator.java
index 76cb3b3c6..464c8617e 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip3pro/AmazfitBip3ProCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip3pro/AmazfitBip3ProCoordinator.java
@@ -24,6 +24,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator;
@@ -36,18 +38,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip3pro
public class AmazfitBip3ProCoordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitBip3ProCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
- try {
- final String name = candidate.getName();
- if (name != null && name.equalsIgnoreCase("Amazfit Bip 3 Pro")) {
- return DeviceType.AMAZFITBIP3PRO;
- }
- } catch (final Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Amazfit Bip 3 Pro", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip5/AmazfitBip5Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip5/AmazfitBip5Coordinator.java
index 0aeeb5803..838615d89 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip5/AmazfitBip5Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip5/AmazfitBip5Coordinator.java
@@ -24,6 +24,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
@@ -48,19 +50,9 @@ public class AmazfitBip5Coordinator extends Huami2021Coordinator {
return AmazfitBip5Support.class;
}
- @NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
- try {
- final String name = candidate.getName();
- if (name != null && name.startsWith(HuamiConst.AMAZFIT_BIP5_NAME)) {
- return DeviceType.AMAZFITBIP5;
- }
- } catch (final Exception e) {
- LOG.error("unable to check device support", e);
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(HuamiConst.AMAZFIT_BIP5_NAME + ".*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSCoordinator.java
index f880f6515..a66d89599 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSCoordinator.java
@@ -25,30 +25,21 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
-import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
-import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbips.AmazfitBipSSupport;
public class AmazfitBipSCoordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitBipSCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && (name.equalsIgnoreCase("Amazfit Bip S"))) {
- return DeviceType.AMAZFITBIPS;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Amazfit Bip S", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSLiteCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSLiteCoordinator.java
index 01cc2106a..3a16bfd99 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSLiteCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSLiteCoordinator.java
@@ -25,6 +25,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
@@ -35,18 +37,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbips.Am
public class AmazfitBipSLiteCoordinator extends AmazfitBipSCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitBipSLiteCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && (name.equalsIgnoreCase("Bip S Lite"))) {
- return DeviceType.AMAZFITBIPS_LITE;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Bip S Lite", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipu/AmazfitBipUCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipu/AmazfitBipUCoordinator.java
index a7d5f5c1b..a0af5cacf 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipu/AmazfitBipUCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipu/AmazfitBipUCoordinator.java
@@ -26,6 +26,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator;
@@ -38,18 +40,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbipu.Am
public class AmazfitBipUCoordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitBipUCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && (name.equalsIgnoreCase("Amazfit Bip U"))) {
- return DeviceType.AMAZFITBIPU;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Amazfit Bip U", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipupro/AmazfitBipUProCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipupro/AmazfitBipUProCoordinator.java
index d9ff1e756..4e7b77acf 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipupro/AmazfitBipUProCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipupro/AmazfitBipUProCoordinator.java
@@ -26,6 +26,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator;
@@ -38,18 +40,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbipupro
public class AmazfitBipUProCoordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitBipUProCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && (name.equalsIgnoreCase("Amazfit Bip U Pro"))) {
- return DeviceType.AMAZFITBIPUPRO;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Amazfit Bip U Pro", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcheetahpro/AmazfitCheetahProCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcheetahpro/AmazfitCheetahProCoordinator.java
index 41bd985d7..17e9f8146 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcheetahpro/AmazfitCheetahProCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcheetahpro/AmazfitCheetahProCoordinator.java
@@ -24,6 +24,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
@@ -37,19 +39,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitcheetah
public class AmazfitCheetahProCoordinator extends Huami2021Coordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitCheetahProCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
- try {
- final String name = candidate.getName();
- if (name != null && name.startsWith(HuamiConst.AMAZFIT_CHEETAH_PRO_NAME)) {
- return DeviceType.AMAZFITCHEETAHPRO;
- }
- } catch (final Exception e) {
- LOG.error("unable to check device support", e);
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(HuamiConst.AMAZFIT_CHEETAH_PRO_NAME + ".*");
}
@NonNull
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcheetahround/AmazfitCheetahRoundCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcheetahround/AmazfitCheetahRoundCoordinator.java
index 1fc3245b2..fa6848199 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcheetahround/AmazfitCheetahRoundCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcheetahround/AmazfitCheetahRoundCoordinator.java
@@ -24,6 +24,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
@@ -53,19 +55,9 @@ public class AmazfitCheetahRoundCoordinator extends Huami2021Coordinator {
return R.string.devicetype_amazfit_cheetah_round;
}
- @NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
- try {
- final String name = candidate.getName();
- if (name != null && name.startsWith(HuamiConst.AMAZFIT_CHEETAH_ROUND_NAME)) {
- return DeviceType.AMAZFITCHEETAHROUND;
- }
- } catch (final Exception e) {
- LOG.error("unable to check device support", e);
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(HuamiConst.AMAZFIT_CHEETAH_ROUND_NAME + ".*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcheetahsquare/AmazfitCheetahSquareCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcheetahsquare/AmazfitCheetahSquareCoordinator.java
index 09df8c030..3016ffa4b 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcheetahsquare/AmazfitCheetahSquareCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcheetahsquare/AmazfitCheetahSquareCoordinator.java
@@ -24,6 +24,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
@@ -48,19 +50,9 @@ public class AmazfitCheetahSquareCoordinator extends Huami2021Coordinator {
return AmazfitCheetahSquareSupport.class;
}
- @NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
- try {
- final String name = candidate.getName();
- if (name != null && name.startsWith(HuamiConst.AMAZFIT_CHEETAH_SQUARE_NAME)) {
- return DeviceType.AMAZFITCHEETAHSQUARE;
- }
- } catch (final Exception e) {
- LOG.error("unable to check device support", e);
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(HuamiConst.AMAZFIT_CHEETAH_SQUARE_NAME + ".*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor/AmazfitCorCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor/AmazfitCorCoordinator.java
index e1ff6e1f1..5c6cc5dce 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor/AmazfitCorCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor/AmazfitCorCoordinator.java
@@ -25,6 +25,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator;
@@ -37,18 +39,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitcor.Ama
public class AmazfitCorCoordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitCorCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && (name.equalsIgnoreCase("Amazfit Band") || name.equalsIgnoreCase("Amazfit Cor"))) {
- return DeviceType.AMAZFITCOR;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Amazfit Band|Amazfit Cor", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor2/AmazfitCor2Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor2/AmazfitCor2Coordinator.java
index 38037cd38..32f2a82f0 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor2/AmazfitCor2Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor2/AmazfitCor2Coordinator.java
@@ -25,6 +25,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator;
@@ -37,18 +39,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitcor2.Am
public class AmazfitCor2Coordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitCor2Coordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && (name.equalsIgnoreCase("Amazfit Band 2") || name.equalsIgnoreCase("Amazfit Cor 2"))) {
- return DeviceType.AMAZFITCOR2;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Amazfit Band 2|Amazfit Cor 2", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitfalcon/AmazfitFalconCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitfalcon/AmazfitFalconCoordinator.java
index 848bcbc1f..6abc0c7a2 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitfalcon/AmazfitFalconCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitfalcon/AmazfitFalconCoordinator.java
@@ -24,6 +24,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
@@ -53,19 +55,9 @@ public class AmazfitFalconCoordinator extends Huami2021Coordinator {
return R.string.devicetype_amazfit_falcon;
}
- @NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
- try {
- final String name = candidate.getName();
- if (name != null && name.startsWith(HuamiConst.AMAZFIT_FALCON_NAME)) {
- return DeviceType.AMAZFITFALCON;
- }
- } catch (final Exception e) {
- LOG.error("unable to check device support", e);
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(HuamiConst.AMAZFIT_FALCON_NAME + ".*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRCoordinator.java
index 63161c1fb..e0f2470d9 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRCoordinator.java
@@ -25,6 +25,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator;
@@ -37,20 +39,10 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgtr.Ama
public class AmazfitGTRCoordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTRCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && name.equalsIgnoreCase("Amazfit GTR")) {
- return DeviceType.AMAZFITGTR;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Amazfit GTR", Pattern.CASE_INSENSITIVE);
}
-
@Override
public InstallHandler findInstallHandler(Uri uri, Context context) {
AmazfitGTRFWInstallHandler handler = new AmazfitGTRFWInstallHandler(uri, context);
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRLiteCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRLiteCoordinator.java
index 2d444473c..7d7fa1176 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRLiteCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRLiteCoordinator.java
@@ -25,6 +25,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator;
@@ -37,18 +39,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgtr.Ama
public class AmazfitGTRLiteCoordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTRLiteCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && name.equalsIgnoreCase("Amazfit GTR L")) {
- return DeviceType.AMAZFITGTR_LITE;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Amazfit GTR L", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2Coordinator.java
index c3dd97f1a..cf0be46e4 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2Coordinator.java
@@ -25,6 +25,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator;
@@ -37,18 +39,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgtr2.Am
public class AmazfitGTR2Coordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTR2Coordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && name.equalsIgnoreCase("Amazfit GTR 2")) {
- return DeviceType.AMAZFITGTR2;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Amazfit GTR 2", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2eCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2eCoordinator.java
index 014b8f118..fc95ba722 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2eCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2eCoordinator.java
@@ -25,6 +25,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator;
@@ -37,18 +39,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgtr2.Am
public class AmazfitGTR2eCoordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTR2eCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && name.equalsIgnoreCase("Amazfit GTR 2e")) {
- return DeviceType.AMAZFITGTR2E;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Amazfit GTR 2e", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr3/AmazfitGTR3Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr3/AmazfitGTR3Coordinator.java
index 6ef5c165c..c8598233a 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr3/AmazfitGTR3Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr3/AmazfitGTR3Coordinator.java
@@ -39,17 +39,17 @@ public class AmazfitGTR3Coordinator extends Huami2021Coordinator {
@NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
+ public boolean supports(final GBDeviceCandidate candidate) {
try {
final String name = candidate.getName();
if (name != null && name.startsWith(HuamiConst.AMAZFIT_GTR3_NAME) && !name.contains("Pro")) {
- return DeviceType.AMAZFITGTR3;
+ return true;
}
} catch (final Exception e) {
LOG.error("unable to check device support", e);
}
- return DeviceType.UNKNOWN;
+ return false;
}
@NonNull
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr3pro/AmazfitGTR3ProCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr3pro/AmazfitGTR3ProCoordinator.java
index 3b81c06f4..0cf410ab1 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr3pro/AmazfitGTR3ProCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr3pro/AmazfitGTR3ProCoordinator.java
@@ -24,6 +24,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
@@ -37,19 +39,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgtr3pro
public class AmazfitGTR3ProCoordinator extends Huami2021Coordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTR3ProCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
- try {
- final String name = candidate.getName();
- if (name != null && name.startsWith(HuamiConst.AMAZFIT_GTR3_PRO_NAME)) {
- return DeviceType.AMAZFITGTR3PRO;
- }
- } catch (final Exception e) {
- LOG.error("unable to check device support", e);
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(HuamiConst.AMAZFIT_GTR3_PRO_NAME + ".*");
}
@NonNull
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr4/AmazfitGTR4Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr4/AmazfitGTR4Coordinator.java
index d6c7382dd..25de3a9cd 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr4/AmazfitGTR4Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr4/AmazfitGTR4Coordinator.java
@@ -24,6 +24,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
@@ -37,19 +39,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgtr4.Am
public class AmazfitGTR4Coordinator extends Huami2021Coordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTR4Coordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
- try {
- final String name = candidate.getName();
- if (name != null && name.startsWith(HuamiConst.AMAZFIT_GTR4_NAME)) {
- return DeviceType.AMAZFITGTR4;
- }
- } catch (final Exception e) {
- LOG.error("unable to check device support", e);
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(HuamiConst.AMAZFIT_GTR4_NAME + ".*");
}
@NonNull
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtrmini/AmazfitGTRMiniCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtrmini/AmazfitGTRMiniCoordinator.java
index b4bf04740..88ab8e84e 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtrmini/AmazfitGTRMiniCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtrmini/AmazfitGTRMiniCoordinator.java
@@ -24,6 +24,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
@@ -48,19 +50,9 @@ public class AmazfitGTRMiniCoordinator extends Huami2021Coordinator {
return R.string.devicetype_amazfit_gtr_mini;
}
- @NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
- try {
- final String name = candidate.getName();
- if (name != null && name.startsWith(HuamiConst.AMAZFIT_GTR_MINI_NAME)) {
- return DeviceType.AMAZFITGTRMINI;
- }
- } catch (final Exception e) {
- LOG.error("unable to check device support", e);
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(HuamiConst.AMAZFIT_GTR_MINI_NAME + ".*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts/AmazfitGTSCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts/AmazfitGTSCoordinator.java
index 7fcc7cad7..7c511b90a 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts/AmazfitGTSCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts/AmazfitGTSCoordinator.java
@@ -24,6 +24,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator;
@@ -36,18 +38,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgts.Ama
public class AmazfitGTSCoordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTSCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && name.equalsIgnoreCase("Amazfit GTS")) {
- return DeviceType.AMAZFITGTS;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Amazfit GTS", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2Coordinator.java
index 3e96f7e01..643f1dfd4 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2Coordinator.java
@@ -25,6 +25,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator;
@@ -37,18 +39,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgts2.Am
public class AmazfitGTS2Coordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTS2Coordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && name.equalsIgnoreCase("Amazfit GTS 2")) {
- return DeviceType.AMAZFITGTS2;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Amazfit GTS 2", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2MiniCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2MiniCoordinator.java
index fef5fa556..872f2277d 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2MiniCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2MiniCoordinator.java
@@ -25,6 +25,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
@@ -36,18 +38,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgts2.Am
public class AmazfitGTS2MiniCoordinator extends AmazfitGTS2Coordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTS2MiniCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && name.equalsIgnoreCase("Amazfit GTS2 mini")) {
- return DeviceType.AMAZFITGTS2_MINI;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Amazfit GTS2 mini", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2eCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2eCoordinator.java
index efe52ea1a..a76262cda 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2eCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2eCoordinator.java
@@ -25,6 +25,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator;
@@ -37,18 +39,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgts2.Am
public class AmazfitGTS2eCoordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTS2eCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && name.equalsIgnoreCase("Amazfit GTS 2e")) {
- return DeviceType.AMAZFITGTS2E;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Amazfit GTS 2e", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts3/AmazfitGTS3Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts3/AmazfitGTS3Coordinator.java
index 4e66a6672..b1408b035 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts3/AmazfitGTS3Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts3/AmazfitGTS3Coordinator.java
@@ -24,6 +24,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
@@ -37,19 +39,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgts3.Am
public class AmazfitGTS3Coordinator extends Huami2021Coordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTS3Coordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
- try {
- final String name = candidate.getName();
- if (name != null && name.startsWith(HuamiConst.AMAZFIT_GTS3_NAME)) {
- return DeviceType.AMAZFITGTS3;
- }
- } catch (final Exception e) {
- LOG.error("unable to check device support", e);
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(HuamiConst.AMAZFIT_GTS3_NAME + ".*");
}
@NonNull
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts4/AmazfitGTS4Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts4/AmazfitGTS4Coordinator.java
index 6663e6a9f..347b5ac4f 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts4/AmazfitGTS4Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts4/AmazfitGTS4Coordinator.java
@@ -39,17 +39,17 @@ public class AmazfitGTS4Coordinator extends Huami2021Coordinator {
@NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
+ public boolean supports(final GBDeviceCandidate candidate) {
try {
final String name = candidate.getName();
if (name != null && name.startsWith(HuamiConst.AMAZFIT_GTS4_NAME) && !name.contains("Mini")) {
- return DeviceType.AMAZFITGTS4;
+ return true;
}
} catch (final Exception e) {
LOG.error("unable to check device support", e);
}
- return DeviceType.UNKNOWN;
+ return false;
}
@NonNull
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts4mini/AmazfitGTS4MiniCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts4mini/AmazfitGTS4MiniCoordinator.java
index b22f38f9b..2c11e2d52 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts4mini/AmazfitGTS4MiniCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts4mini/AmazfitGTS4MiniCoordinator.java
@@ -24,6 +24,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
@@ -37,19 +39,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgts4min
public class AmazfitGTS4MiniCoordinator extends Huami2021Coordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTS4MiniCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
- try {
- final String name = candidate.getName();
- if (name != null && name.startsWith(HuamiConst.AMAZFIT_GTS4_MINI_NAME)) {
- return DeviceType.AMAZFITGTS4MINI;
- }
- } catch (final Exception e) {
- LOG.error("unable to check device support", e);
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(HuamiConst.AMAZFIT_GTS4_MINI_NAME + ".*");
}
@NonNull
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitneo/AmazfitNeoCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitneo/AmazfitNeoCoordinator.java
index 4108c2716..10e502b55 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitneo/AmazfitNeoCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitneo/AmazfitNeoCoordinator.java
@@ -26,6 +26,7 @@ import org.slf4j.LoggerFactory;
import java.util.Arrays;
import java.util.List;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.capabilities.HeartRateCapability;
@@ -41,19 +42,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitneo.Ama
public class AmazfitNeoCoordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitNeoCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && name.equalsIgnoreCase(HuamiConst.AMAZFIT_NEO_NAME)) {
- return DeviceType.AMAZFITNEO;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
-
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(HuamiConst.AMAZFIT_NEO_NAME, Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpop/AmazfitPopCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpop/AmazfitPopCoordinator.java
index c1fae8626..1d5459640 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpop/AmazfitPopCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpop/AmazfitPopCoordinator.java
@@ -24,6 +24,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbipu.AmazfitBipUCoordinator;
@@ -35,18 +37,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitpop.Ama
public class AmazfitPopCoordinator extends AmazfitBipUCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitPopCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && (name.equalsIgnoreCase("Amazfit Pop"))) {
- return DeviceType.AMAZFITPOP;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Amazfit Pop", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpoppro/AmazfitPopProCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpoppro/AmazfitPopProCoordinator.java
index 24ab47517..48ad8f02c 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpoppro/AmazfitPopProCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpoppro/AmazfitPopProCoordinator.java
@@ -24,6 +24,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbipupro.AmazfitBipUProCoordinator;
@@ -35,18 +37,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitpoppro.
public class AmazfitPopProCoordinator extends AmazfitBipUProCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitPopProCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && (name.equalsIgnoreCase("Amazfit Pop Pro"))) {
- return DeviceType.AMAZFITPOPPRO;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Amazfit Pop Pro", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrex/AmazfitTRexCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrex/AmazfitTRexCoordinator.java
index a896fb447..579685a28 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrex/AmazfitTRexCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrex/AmazfitTRexCoordinator.java
@@ -25,6 +25,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator;
@@ -37,18 +39,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfittrex.Am
public class AmazfitTRexCoordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitTRexCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && name.equalsIgnoreCase("Amazfit T-Rex")) {
- return DeviceType.AMAZFITTREX;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Amazfit T-Rex", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrex2/AmazfitTRex2Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrex2/AmazfitTRex2Coordinator.java
index ec4e600a3..fc6981046 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrex2/AmazfitTRex2Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrex2/AmazfitTRex2Coordinator.java
@@ -24,6 +24,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
@@ -37,19 +39,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfittrex2.A
public class AmazfitTRex2Coordinator extends Huami2021Coordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitTRex2Coordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
- try {
- final String name = candidate.getName();
- if (name != null && name.startsWith(HuamiConst.AMAZFIT_TREX_2_NAME)) {
- return DeviceType.AMAZFITTREX2;
- }
- } catch (final Exception e) {
- LOG.error("unable to check device support", e);
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(HuamiConst.AMAZFIT_TREX_2_NAME + ".*");
}
@NonNull
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrexpro/AmazfitTRexProCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrexpro/AmazfitTRexProCoordinator.java
index d681f703b..baf7231fa 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrexpro/AmazfitTRexProCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrexpro/AmazfitTRexProCoordinator.java
@@ -25,6 +25,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator;
@@ -37,18 +39,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfittrexpro
public class AmazfitTRexProCoordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitTRexProCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && name.equalsIgnoreCase("Amazfit T-Rex Pro")) {
- return DeviceType.AMAZFITTREXPRO;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Amazfit T-Rex Pro", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrexultra/AmazfitTRexUltraCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrexultra/AmazfitTRexUltraCoordinator.java
index 9372ab92f..fe34e0192 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrexultra/AmazfitTRexUltraCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrexultra/AmazfitTRexUltraCoordinator.java
@@ -24,6 +24,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
@@ -53,19 +55,9 @@ public class AmazfitTRexUltraCoordinator extends Huami2021Coordinator {
return R.string.devicetype_amazfit_trex_ultra;
}
- @NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
- try {
- final String name = candidate.getName();
- if (name != null && name.startsWith(HuamiConst.AMAZFIT_TREX_ULTRA)) {
- return DeviceType.AMAZFITTREXULTRA;
- }
- } catch (final Exception e) {
- LOG.error("unable to check device support", e);
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(HuamiConst.AMAZFIT_TREX_ULTRA + ".*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitvergel/AmazfitVergeLCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitvergel/AmazfitVergeLCoordinator.java
index a69d47a43..c8745b63b 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitvergel/AmazfitVergeLCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitvergel/AmazfitVergeLCoordinator.java
@@ -16,7 +16,6 @@
along with this program. If not, see . */
package nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitvergel;
-import android.bluetooth.BluetoothDevice;
import android.content.Context;
import android.net.Uri;
@@ -25,6 +24,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator;
@@ -37,18 +38,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitvergel.
public class AmazfitVergeLCoordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitVergeLCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && name.equalsIgnoreCase("Amazfit Verge L")) {
- return DeviceType.AMAZFITVERGEL;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Amazfit Verge L", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitx/AmazfitXCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitx/AmazfitXCoordinator.java
index 32e98c0a6..739d25445 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitx/AmazfitXCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitx/AmazfitXCoordinator.java
@@ -25,11 +25,12 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator;
-import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitx.AmazfitXFWInstallHandler;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
@@ -39,22 +40,11 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitx.Amazf
public class AmazfitXCoordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitXCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && name.equalsIgnoreCase(HuamiConst.AMAZFIT_X)) {
- return DeviceType.AMAZFITX;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
-
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(HuamiConst.AMAZFIT_X, Pattern.CASE_INSENSITIVE);
}
-
@Override
public InstallHandler findInstallHandler(Uri uri, Context context) {
// TOOD Need to be checked first
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2Coordinator.java
index 0af6558af..75113860b 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2Coordinator.java
@@ -26,6 +26,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.EnumSet;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
@@ -41,21 +42,10 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband2.MiBand
public class MiBand2Coordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(MiBand2Coordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && name.equalsIgnoreCase(HuamiConst.MI_BAND2_NAME)) {
- return DeviceType.MIBAND2;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
-
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(HuamiConst.MI_BAND2_NAME, Pattern.CASE_INSENSITIVE);
}
-
@Override
public InstallHandler findInstallHandler(Uri uri, Context context) {
MiBand2FWInstallHandler handler = new MiBand2FWInstallHandler(uri, context);
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2HRXCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2HRXCoordinator.java
index f1775bae8..c29186caf 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2HRXCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2HRXCoordinator.java
@@ -26,6 +26,7 @@ import org.slf4j.LoggerFactory;
import androidx.annotation.NonNull;
import java.util.EnumSet;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
@@ -41,18 +42,12 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband2.MiBand
public class MiBand2HRXCoordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(MiBand2HRXCoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (HuamiConst.MI_BAND2_NAME_HRX.equalsIgnoreCase(name) || "Mi Band 2i".equalsIgnoreCase(name)) {
- return DeviceType.MIBAND2_HRX;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(
+ HuamiConst.MI_BAND2_NAME_HRX + "|Mi Band 2i",
+ Pattern.CASE_INSENSITIVE
+ );
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3Coordinator.java
index 4d49a8b76..48364887f 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3Coordinator.java
@@ -26,6 +26,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Date;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.R;
@@ -43,19 +44,12 @@ import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
public class MiBand3Coordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(MiBand3Coordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && (name.equalsIgnoreCase(HuamiConst.MI_BAND3_NAME) || name.equalsIgnoreCase(HuamiConst.MI_BAND3_NAME_2))) {
- return DeviceType.MIBAND3;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
-
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(
+ HuamiConst.MI_BAND3_NAME + "|" + HuamiConst.MI_BAND3_NAME_2,
+ Pattern.CASE_INSENSITIVE
+ );
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband4/MiBand4Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband4/MiBand4Coordinator.java
index 9c994dfd8..50bbe0530 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband4/MiBand4Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband4/MiBand4Coordinator.java
@@ -27,6 +27,7 @@ import org.slf4j.LoggerFactory;
import java.util.Arrays;
import java.util.List;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.capabilities.HeartRateCapability;
@@ -43,22 +44,11 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband4.MiBand
public class MiBand4Coordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(MiBand4Coordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && name.equalsIgnoreCase(HuamiConst.MI_BAND4_NAME)) {
- return DeviceType.MIBAND4;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
-
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(HuamiConst.MI_BAND4_NAME, Pattern.CASE_INSENSITIVE);
}
-
@Override
public InstallHandler findInstallHandler(Uri uri, Context context) {
MiBand4FWInstallHandler handler = new MiBand4FWInstallHandler(uri, context);
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband5/MiBand5Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband5/MiBand5Coordinator.java
index 680340589..5c5ebc85a 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband5/MiBand5Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband5/MiBand5Coordinator.java
@@ -27,6 +27,7 @@ import org.slf4j.LoggerFactory;
import java.util.Arrays;
import java.util.List;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.capabilities.HeartRateCapability;
@@ -42,19 +43,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband5.MiBand
public class MiBand5Coordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(MiBand5Coordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && name.equalsIgnoreCase(HuamiConst.MI_BAND5_NAME)) {
- return DeviceType.MIBAND5;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
-
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(HuamiConst.MI_BAND5_NAME, Pattern.CASE_INSENSITIVE);
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6Coordinator.java
index f3553eaa1..bd2c6d23c 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6Coordinator.java
@@ -10,6 +10,7 @@ import org.slf4j.LoggerFactory;
import java.util.Arrays;
import java.util.List;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.capabilities.HeartRateCapability;
@@ -25,18 +26,10 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband6.MiBand
public class MiBand6Coordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(MiBand6Coordinator.class);
- @NonNull
+
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && name.equalsIgnoreCase(HuamiConst.MI_BAND6_NAME)) {
- return DeviceType.MIBAND6;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(HuamiConst.MI_BAND6_NAME, Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband7/MiBand7Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband7/MiBand7Coordinator.java
index 9f861b49f..7f4d18279 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband7/MiBand7Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband7/MiBand7Coordinator.java
@@ -24,6 +24,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
@@ -37,19 +39,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband7.MiBand
public class MiBand7Coordinator extends Huami2021Coordinator {
private static final Logger LOG = LoggerFactory.getLogger(MiBand7Coordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
- try {
- final String name = candidate.getName();
- if (name != null && name.startsWith(HuamiConst.XIAOMI_SMART_BAND7_NAME)) {
- return DeviceType.MIBAND7;
- }
- } catch (final Exception e) {
- LOG.error("unable to check device support", e);
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(HuamiConst.XIAOMI_SMART_BAND7_NAME + ".*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppe/ZeppECoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppe/ZeppECoordinator.java
index 9d7677038..f0a38483d 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppe/ZeppECoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppe/ZeppECoordinator.java
@@ -25,6 +25,8 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator;
@@ -37,18 +39,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.zeppe.ZeppESup
public class ZeppECoordinator extends HuamiCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(ZeppECoordinator.class);
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && name.equalsIgnoreCase("Zepp E")) {
- return DeviceType.ZEPP_E;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Zepp E", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/id115/ID115Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/id115/ID115Coordinator.java
index 49cb6a2a8..0ef30d266 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/id115/ID115Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/id115/ID115Coordinator.java
@@ -17,12 +17,10 @@
along with this program. If not, see . */
package nodomain.freeyourgadget.gadgetbridge.devices.id115;
-import android.annotation.TargetApi;
import android.app.Activity;
import android.bluetooth.le.ScanFilter;
import android.content.Context;
import android.net.Uri;
-import android.os.Build;
import android.os.ParcelUuid;
import java.util.Collection;
@@ -59,11 +57,11 @@ public class ID115Coordinator extends AbstractBLEDeviceCoordinator {
@NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
+ public boolean supports(GBDeviceCandidate candidate) {
if (candidate.supportsService(ID115Constants.UUID_SERVICE_ID115)) {
- return DeviceType.ID115;
+ return true;
}
- return DeviceType.UNKNOWN;
+ return false;
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/itag/ITagCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/itag/ITagCoordinator.java
index 0ce3cd077..166e74603 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/itag/ITagCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/itag/ITagCoordinator.java
@@ -17,17 +17,16 @@
along with this program. If not, see . */
package nodomain.freeyourgadget.gadgetbridge.devices.itag;
-import android.annotation.TargetApi;
import android.app.Activity;
import android.bluetooth.le.ScanFilter;
import android.content.Context;
import android.net.Uri;
-import android.os.Build;
import androidx.annotation.NonNull;
import java.util.Collection;
import java.util.Collections;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLEDeviceCoordinator;
@@ -44,13 +43,8 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.itag.ITagSupport;
public class ITagCoordinator extends AbstractBLEDeviceCoordinator {
@Override
- @NonNull
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- String name = candidate.getName();
- if (name != null && name.toLowerCase().startsWith("itag")) { // All four: iTAG, iTag, ITAG and ITag exist
- return DeviceType.ITAG;
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("itag.*", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/jyou/BFH16DeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/jyou/BFH16DeviceCoordinator.java
index 55b8d6134..f175928b4 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/jyou/BFH16DeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/jyou/BFH16DeviceCoordinator.java
@@ -28,6 +28,7 @@ import org.slf4j.LoggerFactory;
import java.util.Collection;
import java.util.Collections;
+import java.util.regex.Pattern;
import androidx.annotation.NonNull;
import nodomain.freeyourgadget.gadgetbridge.GBException;
@@ -67,19 +68,9 @@ public class BFH16DeviceCoordinator extends AbstractBLEDeviceCoordinator
return Collections.singletonList(filter);
}
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
-
- String name = candidate.getName();
- if (name != null) {
- if (name.startsWith("BFH-16")) {
- return DeviceType.BFH16;
- }
- }
-
- return DeviceType.UNKNOWN;
-
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("BFH-16.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/jyou/TeclastH30/TeclastH30Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/jyou/TeclastH30/TeclastH30Coordinator.java
index 505515d0d..eab3455a7 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/jyou/TeclastH30/TeclastH30Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/jyou/TeclastH30/TeclastH30Coordinator.java
@@ -17,12 +17,10 @@
along with this program. If not, see . */
package nodomain.freeyourgadget.gadgetbridge.devices.jyou.TeclastH30;
-import android.annotation.TargetApi;
import android.app.Activity;
import android.bluetooth.le.ScanFilter;
import android.content.Context;
import android.net.Uri;
-import android.os.Build;
import android.os.ParcelUuid;
import org.slf4j.Logger;
@@ -53,9 +51,6 @@ public class TeclastH30Coordinator extends AbstractBLEDeviceCoordinator {
protected static final Logger LOG = LoggerFactory.getLogger(TeclastH30Coordinator.class);
- // e.g. H3-B20F
- private Pattern deviceNamePattern = Pattern.compile("^H[13]-[ABCDEF0123456789]{4}$");
-
@NonNull
@Override
public Collection extends ScanFilter> createBLEScanFilters() {
@@ -66,22 +61,17 @@ public class TeclastH30Coordinator extends AbstractBLEDeviceCoordinator {
@NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
+ public boolean supports(GBDeviceCandidate candidate) {
if (candidate.supportsService(JYouConstants.UUID_SERVICE_JYOU)) {
- return DeviceType.TECLASTH30;
+ return true;
}
- String name = candidate.getName();
- if (name != null) {
- if (name.startsWith("TECLAST_H30") || name.startsWith("TECLAST_H10")) {
- return DeviceType.TECLASTH30;
- }
- Matcher deviceNameMatcher = deviceNamePattern.matcher(name);
- if (deviceNameMatcher.matches()) {
- return DeviceType.TECLASTH30;
- }
- }
- return DeviceType.UNKNOWN;
+ return super.supports(candidate);
+ }
+
+ @Override
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("TECLAST_H[13]0.*|H[13]-[ABCDEF0123456789]{4}");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/jyou/y5/Y5Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/jyou/y5/Y5Coordinator.java
index 972a148d9..808e199eb 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/jyou/y5/Y5Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/jyou/y5/Y5Coordinator.java
@@ -23,6 +23,8 @@ import android.net.Uri;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import java.util.regex.Pattern;
+
import de.greenrobot.dao.query.QueryBuilder;
import nodomain.freeyourgadget.gadgetbridge.GBException;
import nodomain.freeyourgadget.gadgetbridge.R;
@@ -48,20 +50,9 @@ public class Y5Coordinator extends AbstractBLEDeviceCoordinator {
qb.where(JYouActivitySampleDao.Properties.DeviceId.eq(deviceId)).buildDelete().executeDeleteWithoutDetachingEntities();
}
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null) {
- if (name.contains("Y5")) {
- return DeviceType.Y5;
- }
- }
- } catch (Exception ex) {
- ex.getLocalizedMessage();
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(".*Y5.*");
}
@Nullable
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/lefun/BohemicSmartBraceletDeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/lefun/BohemicSmartBraceletDeviceCoordinator.java
index a98de65cf..caea3e6f3 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/lefun/BohemicSmartBraceletDeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/lefun/BohemicSmartBraceletDeviceCoordinator.java
@@ -19,20 +19,17 @@ package nodomain.freeyourgadget.gadgetbridge.devices.lefun;
import androidx.annotation.NonNull;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
public class BohemicSmartBraceletDeviceCoordinator extends LefunDeviceCoordinator {
- @NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
- if (".bohemic".equals(candidate.getName())) {
- return DeviceType.BOHEMIC_SMART_BRACELET;
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("\\.bohemic");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/lefun/LefunDeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/lefun/LefunDeviceCoordinator.java
index 06c82ba69..d5f8f474c 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/lefun/LefunDeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/lefun/LefunDeviceCoordinator.java
@@ -58,7 +58,7 @@ public class LefunDeviceCoordinator extends AbstractBLEDeviceCoordinator {
@NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
+ public boolean supports(GBDeviceCandidate candidate) {
// There's a bunch of other names other than "Lefun", but let's just focus on one for now.
if (ADVERTISEMENT_NAME.equals(candidate.getName())) {
// The device does not advertise service UUIDs, so can't check whether it supports
@@ -67,11 +67,11 @@ public class LefunDeviceCoordinator extends AbstractBLEDeviceCoordinator {
// manufacturer specific data, which consists of the device's MAC address and said
// string. But we're not being given it, so *shrug*.
if (candidate.getServiceUuids().length == 0) {
- return DeviceType.LEFUN;
+ return true;
}
}
- return DeviceType.UNKNOWN;
+ return false;
}
@Nullable
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/lenovo/watchxplus/WatchXPlusDeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/lenovo/watchxplus/WatchXPlusDeviceCoordinator.java
index 4ee6efacf..e58d80aad 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/lenovo/watchxplus/WatchXPlusDeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/lenovo/watchxplus/WatchXPlusDeviceCoordinator.java
@@ -18,13 +18,11 @@
along with this program. If not, see . */
package nodomain.freeyourgadget.gadgetbridge.devices.lenovo.watchxplus;
-import android.annotation.TargetApi;
import android.app.Activity;
import android.bluetooth.le.ScanFilter;
import android.content.Context;
import android.content.SharedPreferences;
import android.net.Uri;
-import android.os.Build;
import android.os.ParcelUuid;
import androidx.annotation.NonNull;
@@ -90,21 +88,21 @@ public class WatchXPlusDeviceCoordinator extends AbstractBLEDeviceCoordinator {
@NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
+ public boolean supports(GBDeviceCandidate candidate) {
String macAddress = candidate.getMacAddress().toUpperCase();
String deviceName = candidate.getName().toUpperCase();
if (candidate.supportsService(WatchXPlusConstants.UUID_SERVICE_WATCHXPLUS)) {
- return DeviceType.WATCHXPLUS;
+ return true;
} else if (macAddress.startsWith("DC:41:E5")) {
- return DeviceType.WATCHXPLUS;
+ return true;
} else if (deviceName.equalsIgnoreCase("WATCH XPLUS")) {
- return DeviceType.WATCHXPLUS;
+ return true;
// add initial support for Watch X non-plus (forces Watch X to be recognized as Watch XPlus)
// Watch X non-plus have same MAC address as Watch 9 (starts with "1C:87:79")
} else if (deviceName.equalsIgnoreCase("WATCH X")) {
- return DeviceType.WATCHXPLUS;
+ return true;
}
- return DeviceType.UNKNOWN;
+ return false;
}
@Nullable
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/liveview/LiveviewCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/liveview/LiveviewCoordinator.java
index 9aa081c65..f57461185 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/liveview/LiveviewCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/liveview/LiveviewCoordinator.java
@@ -22,6 +22,9 @@ import android.content.Context;
import android.net.Uri;
import androidx.annotation.NonNull;
+
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.GBException;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLClassicDeviceCoordinator;
@@ -37,14 +40,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport;
import nodomain.freeyourgadget.gadgetbridge.service.devices.liveview.LiveviewSupport;
public class LiveviewCoordinator extends AbstractBLClassicDeviceCoordinator {
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- String name = candidate.getName();
- if (name != null && name.startsWith("LiveView")) {
- return DeviceType.LIVEVIEW;
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("LiveView.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/makibeshr3/MakibesHR3Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/makibeshr3/MakibesHR3Coordinator.java
index 3476af12e..ce1a890fc 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/makibeshr3/MakibesHR3Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/makibeshr3/MakibesHR3Coordinator.java
@@ -22,6 +22,7 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
+import java.util.regex.Pattern;
import android.app.Activity;
import android.content.Context;
@@ -35,7 +36,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.greenrobot.dao.query.QueryBuilder;
-import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.GBException;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst;
@@ -150,23 +150,9 @@ public class MakibesHR3Coordinator extends AbstractBLEDeviceCoordinator {
}
}
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- String name = candidate.getName();
-
- List deviceNames = new ArrayList(){{
- add("Y808"); // Chinese version
- add("MAKIBES HR3"); // English version
- }};
-
- if (name != null) {
- if (deviceNames.contains(name)) {
- return DeviceType.MAKIBESHR3;
- }
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Y808|MAKIBES HR3");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandCoordinator.java
index 6b04913ac..f8147cb45 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandCoordinator.java
@@ -17,13 +17,11 @@
along with this program. If not, see . */
package nodomain.freeyourgadget.gadgetbridge.devices.miband;
-import android.annotation.TargetApi;
import android.app.Activity;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.le.ScanFilter;
import android.content.Context;
import android.net.Uri;
-import android.os.Build;
import android.os.ParcelUuid;
import androidx.annotation.DrawableRes;
@@ -76,15 +74,15 @@ public class MiBandCoordinator extends AbstractBLEDeviceCoordinator {
@NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
+ public boolean supports(GBDeviceCandidate candidate) {
String macAddress = candidate.getMacAddress().toUpperCase();
if (macAddress.startsWith(MiBandService.MAC_ADDRESS_FILTER_1_1A)
|| macAddress.startsWith(MiBandService.MAC_ADDRESS_FILTER_1S)) {
- return DeviceType.MIBAND;
+ return true;
}
if (candidate.supportsService(MiBandService.UUID_SERVICE_MIBAND_SERVICE)
&& !candidate.supportsService(MiBandService.UUID_SERVICE_MIBAND2_SERVICE)) {
- return DeviceType.MIBAND;
+ return true;
}
// and a heuristic
try {
@@ -92,13 +90,13 @@ public class MiBandCoordinator extends AbstractBLEDeviceCoordinator {
if (isHealthWearable(device)) {
String name = candidate.getName();
if (name != null && name.toUpperCase().startsWith(MiBandConst.MI_GENERAL_NAME_PREFIX.toUpperCase())) {
- return DeviceType.MIBAND;
+ return true;
}
}
} catch (Exception ex) {
LOG.error("unable to check device support", ex);
}
- return DeviceType.UNKNOWN;
+ return false;
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/mijia_lywsd02/MijiaLywsd02Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/mijia_lywsd02/MijiaLywsd02Coordinator.java
index ebbf1df8f..cad6d1c1f 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/mijia_lywsd02/MijiaLywsd02Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/mijia_lywsd02/MijiaLywsd02Coordinator.java
@@ -23,6 +23,8 @@ import android.net.Uri;
import androidx.annotation.NonNull;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLEDeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
@@ -37,14 +39,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport;
import nodomain.freeyourgadget.gadgetbridge.service.devices.mijia_lywsd02.MijiaLywsd02Support;
public class MijiaLywsd02Coordinator extends AbstractBLEDeviceCoordinator {
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- String name = candidate.getName();
- if (name != null && (name.equals("LYWSD02") || name.equals("LYWSD02MMC"))) {
- return DeviceType.MIJIA_LYWSD02;
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("LYWSD02|LYWSD02MMC");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miscale2/MiScale2DeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miscale2/MiScale2DeviceCoordinator.java
index 8e0bd6d34..922daba70 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miscale2/MiScale2DeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miscale2/MiScale2DeviceCoordinator.java
@@ -17,12 +17,10 @@
along with this program. If not, see . */
package nodomain.freeyourgadget.gadgetbridge.devices.miscale2;
-import android.annotation.TargetApi;
import android.app.Activity;
import android.bluetooth.le.ScanFilter;
import android.content.Context;
import android.net.Uri;
-import android.os.Build;
import android.os.ParcelUuid;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -32,6 +30,7 @@ import org.slf4j.LoggerFactory;
import java.util.Collection;
import java.util.Collections;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.GBException;
import nodomain.freeyourgadget.gadgetbridge.R;
@@ -56,18 +55,9 @@ public class MiScale2DeviceCoordinator extends AbstractBLEDeviceCoordinator {
}
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && name.equalsIgnoreCase("MIBCS")) {
- return DeviceType.MISCALE2;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("MIBCS", Pattern.CASE_INSENSITIVE);
}
@NonNull
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/no1f1/No1F1Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/no1f1/No1F1Coordinator.java
index 0788c0523..119fb57d5 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/no1f1/No1F1Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/no1f1/No1F1Coordinator.java
@@ -17,16 +17,15 @@
along with this program. If not, see . */
package nodomain.freeyourgadget.gadgetbridge.devices.no1f1;
-import android.annotation.TargetApi;
import android.app.Activity;
import android.bluetooth.le.ScanFilter;
import android.content.Context;
import android.net.Uri;
-import android.os.Build;
import android.os.ParcelUuid;
import java.util.Collection;
import java.util.Collections;
+import java.util.regex.Pattern;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -56,17 +55,10 @@ public class No1F1Coordinator extends AbstractBLEDeviceCoordinator {
return Collections.singletonList(filter);
}
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- String name = candidate.getName();
- if (name != null && (name.startsWith("X-RUN") || name.startsWith("MH30"))) {
- return DeviceType.NO1F1;
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("X-RUN.*|MH30.*");
}
-
@Override
public int getBondingStyle() {
return BONDING_STYLE_NONE;
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/nothing/Ear1Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/nothing/Ear1Coordinator.java
index e4b1a94ba..678538951 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/nothing/Ear1Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/nothing/Ear1Coordinator.java
@@ -7,6 +7,8 @@ import android.net.Uri;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.GBException;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLClassicDeviceCoordinator;
@@ -23,13 +25,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport;
import nodomain.freeyourgadget.gadgetbridge.service.devices.nothing.Ear1Support;
public class Ear1Coordinator extends AbstractBLClassicDeviceCoordinator {
-
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- if(candidate.getName().equals("Nothing ear (1)"))
- return DeviceType.NOTHING_EAR1;
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Nothing ear (1)", Pattern.LITERAL);
}
@Nullable
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/nut/NutCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/nut/NutCoordinator.java
index 4c742ea96..9b42fff76 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/nut/NutCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/nut/NutCoordinator.java
@@ -17,17 +17,16 @@
along with this program. If not, see . */
package nodomain.freeyourgadget.gadgetbridge.devices.nut;
-import android.annotation.TargetApi;
import android.app.Activity;
import android.bluetooth.le.ScanFilter;
import android.content.Context;
import android.net.Uri;
-import android.os.Build;
import androidx.annotation.NonNull;
import java.util.Collection;
import java.util.Collections;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLEDeviceCoordinator;
@@ -44,13 +43,8 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.nut.NutSupport;
public class NutCoordinator extends AbstractBLEDeviceCoordinator {
@Override
- @NonNull
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- String name = candidate.getName();
- if (name != null && name.toLowerCase().startsWith("nut")) {
- return DeviceType.NUTMINI;
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("nut.*", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pebble/PebbleCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pebble/PebbleCoordinator.java
index d68118a62..4c4493a21 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pebble/PebbleCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pebble/PebbleCoordinator.java
@@ -28,6 +28,7 @@ import androidx.annotation.StringRes;
import java.io.File;
import java.io.IOException;
import java.util.List;
+import java.util.regex.Pattern;
import de.greenrobot.dao.query.QueryBuilder;
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
@@ -56,14 +57,9 @@ public class PebbleCoordinator extends AbstractBLClassicDeviceCoordinator {
public PebbleCoordinator() {
}
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- String name = candidate.getName();
- if (name != null && name.startsWith("Pebble")) {
- return DeviceType.PEBBLE;
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Pebble.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pinetime/PineTimeJFCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pinetime/PineTimeJFCoordinator.java
index 1541d600c..716795d51 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pinetime/PineTimeJFCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pinetime/PineTimeJFCoordinator.java
@@ -23,6 +23,8 @@ import android.net.Uri;
import androidx.annotation.NonNull;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLEDeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
@@ -37,14 +39,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport;
import nodomain.freeyourgadget.gadgetbridge.service.devices.pinetime.PineTimeJFSupport;
public class PineTimeJFCoordinator extends AbstractBLEDeviceCoordinator {
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- String name = candidate.getName();
- if (name != null && (name.startsWith("Pinetime-JF") || name.startsWith("InfiniTime"))) {
- return DeviceType.PINETIME_JF;
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Pinetime-JF.*|InfiniTime.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qc35/QC35Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qc35/QC35Coordinator.java
index d7b4beddb..27877bf21 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qc35/QC35Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qc35/QC35Coordinator.java
@@ -23,6 +23,8 @@ import android.net.Uri;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.GBException;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLClassicDeviceCoordinator;
@@ -43,13 +45,9 @@ public class QC35Coordinator extends AbstractBLClassicDeviceCoordinator {
}
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- if (candidate.getName().startsWith("Bose QC 35")) {
- return DeviceType.BOSE_QC35;
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Bose QC 35.*");
}
@Nullable
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java
index fde35d0bf..99a7a0145 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java
@@ -17,12 +17,10 @@
along with this program. If not, see . */
package nodomain.freeyourgadget.gadgetbridge.devices.qhybrid;
-import android.annotation.TargetApi;
import android.app.Activity;
import android.bluetooth.le.ScanFilter;
import android.content.Context;
import android.net.Uri;
-import android.os.Build;
import android.os.ParcelUuid;
import androidx.annotation.NonNull;
@@ -37,8 +35,6 @@ import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.GBException;
@@ -63,13 +59,13 @@ public class QHybridCoordinator extends AbstractBLEDeviceCoordinator {
@NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
+ public boolean supports(GBDeviceCandidate candidate) {
for(ParcelUuid uuid : candidate.getServiceUuids()){
if(uuid.getUuid().toString().equals("3dda0001-957f-7d4a-34a6-74696673696d")){
- return DeviceType.FOSSILQHYBRID;
+ return true;
}
}
- return DeviceType.UNKNOWN;
+ return false;
}
@NonNull
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/roidmi/Roidmi1Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/roidmi/Roidmi1Coordinator.java
index bf20ecd5b..cc954973c 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/roidmi/Roidmi1Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/roidmi/Roidmi1Coordinator.java
@@ -33,18 +33,18 @@ public class Roidmi1Coordinator extends RoidmiCoordinator {
@NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
+ public boolean supports(final GBDeviceCandidate candidate) {
try {
final String name = candidate.getName();
if (name != null && name.contains("睿米车载蓝牙播放器")) {
- return DeviceType.ROIDMI;
+ return true;
}
} catch (final Exception ex) {
LOG.error("unable to check device support", ex);
}
- return DeviceType.UNKNOWN;
+ return false;
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/roidmi/Roidmi3Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/roidmi/Roidmi3Coordinator.java
index 9aa590465..972d441ce 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/roidmi/Roidmi3Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/roidmi/Roidmi3Coordinator.java
@@ -33,22 +33,22 @@ public class Roidmi3Coordinator extends RoidmiCoordinator {
@NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
+ public boolean supports(final GBDeviceCandidate candidate) {
try {
final String name = candidate.getName();
if (name == null) {
- return DeviceType.UNKNOWN;
+ return false;
}
if (name.contains("Roidmi Music Blue C") || name.contains("Roidmi C BLE") || name.contains("Mojietu Music Blue C")) {
- return DeviceType.ROIDMI3;
+ return true;
}
} catch (Exception ex) {
LOG.error("unable to check device support", ex);
}
- return DeviceType.UNKNOWN;
+ return false;
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/smaq2oss/SMAQ2OSSCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/smaq2oss/SMAQ2OSSCoordinator.java
index e7547e5dc..bdb79902f 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/smaq2oss/SMAQ2OSSCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/smaq2oss/SMAQ2OSSCoordinator.java
@@ -14,6 +14,7 @@ import org.slf4j.LoggerFactory;
import java.util.Collection;
import java.util.Collections;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.GBException;
import nodomain.freeyourgadget.gadgetbridge.R;
@@ -43,19 +44,9 @@ public class SMAQ2OSSCoordinator extends AbstractBLEDeviceCoordinator {
protected void deleteDevice(@NonNull GBDevice gbDevice, @NonNull Device device, @NonNull DaoSession session) throws GBException {
}
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- // TODO still match for "SMA-Q2-OSS" because of backward firmware compatibility - remove eventually
- if (name != null && (name.startsWith("SMAQ2-") || name.equalsIgnoreCase("SMA-Q2-OSS"))) {
- return DeviceType.SMAQ2OSS;
- }
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("SMAQ2-.*|SMA-Q2-OSS", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/soflow/SoFlowCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/soflow/SoFlowCoordinator.java
index 14db5b76f..da456c33a 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/soflow/SoFlowCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/soflow/SoFlowCoordinator.java
@@ -22,6 +22,8 @@ import android.net.Uri;
import androidx.annotation.NonNull;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLEDeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
@@ -36,14 +38,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport;
import nodomain.freeyourgadget.gadgetbridge.service.devices.soflow.SoFlowSupport;
public class SoFlowCoordinator extends AbstractBLEDeviceCoordinator {
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- String name = candidate.getName();
- if (name != null && name.startsWith("SoFlow-")) {
- return DeviceType.SOFLOW_SO6;
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("SoFlow-.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyLinkBudsSCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyLinkBudsSCoordinator.java
index f65a020c8..f95d9392e 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyLinkBudsSCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyLinkBudsSCoordinator.java
@@ -20,6 +20,7 @@ import androidx.annotation.NonNull;
import java.util.Arrays;
import java.util.List;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.sony.headphones.SonyHeadphonesCapabilities;
@@ -28,14 +29,9 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
public class SonyLinkBudsSCoordinator extends SonyHeadphonesCoordinator {
- @NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
- if (candidate.getName().contains("LinkBuds S")) {
- return DeviceType.SONY_LINKBUDS_S;
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(".*LinkBuds S.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWF1000XM3Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWF1000XM3Coordinator.java
index edad860af..6c0f618db 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWF1000XM3Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWF1000XM3Coordinator.java
@@ -20,6 +20,7 @@ import androidx.annotation.NonNull;
import java.util.Arrays;
import java.util.List;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.sony.headphones.SonyHeadphonesCapabilities;
@@ -29,15 +30,9 @@ import nodomain.freeyourgadget.gadgetbridge.model.BatteryConfig;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
public class SonyWF1000XM3Coordinator extends SonyHeadphonesCoordinator {
-
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- if (candidate.getName().contains("WF-1000XM3")) {
- return DeviceType.SONY_WF_1000XM3;
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(".*WF-1000XM3.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWF1000XM4Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWF1000XM4Coordinator.java
index 47d7c94c5..f07789c72 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWF1000XM4Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWF1000XM4Coordinator.java
@@ -20,6 +20,7 @@ import androidx.annotation.NonNull;
import java.util.Arrays;
import java.util.List;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.sony.headphones.SonyHeadphonesCapabilities;
@@ -29,15 +30,9 @@ import nodomain.freeyourgadget.gadgetbridge.model.BatteryConfig;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
public class SonyWF1000XM4Coordinator extends SonyHeadphonesCoordinator {
-
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- if (candidate.getName().contains("WF-1000XM4")) {
- return DeviceType.SONY_WF_1000XM4;
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(".*WF-1000XM4.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWF1000XM5Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWF1000XM5Coordinator.java
index 23d757408..6c6d8a719 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWF1000XM5Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWF1000XM5Coordinator.java
@@ -20,6 +20,7 @@ import androidx.annotation.NonNull;
import java.util.Arrays;
import java.util.List;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.sony.headphones.SonyHeadphonesCapabilities;
@@ -29,15 +30,9 @@ import nodomain.freeyourgadget.gadgetbridge.model.BatteryConfig;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
public class SonyWF1000XM5Coordinator extends SonyHeadphonesCoordinator {
-
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- if (candidate.getName().contains("WF-1000XM5")) {
- return DeviceType.SONY_WF_1000XM5;
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(".*WF-1000XM5.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWFSP800NCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWFSP800NCoordinator.java
index 1b543cf8f..4b6d9dc11 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWFSP800NCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWFSP800NCoordinator.java
@@ -20,6 +20,7 @@ import androidx.annotation.NonNull;
import java.util.Arrays;
import java.util.List;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.sony.headphones.SonyHeadphonesCapabilities;
@@ -29,14 +30,9 @@ import nodomain.freeyourgadget.gadgetbridge.model.BatteryConfig;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
public class SonyWFSP800NCoordinator extends SonyHeadphonesCoordinator {
- @NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
- if (candidate.getName().contains("WF-SP800N")) {
- return DeviceType.SONY_WF_SP800N;
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(".*WF-SP800N.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWH1000XM2Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWH1000XM2Coordinator.java
index a0f1f2f67..27c99b958 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWH1000XM2Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWH1000XM2Coordinator.java
@@ -20,6 +20,7 @@ import androidx.annotation.NonNull;
import java.util.Arrays;
import java.util.List;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.sony.headphones.SonyHeadphonesCapabilities;
@@ -28,14 +29,9 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
public class SonyWH1000XM2Coordinator extends SonyHeadphonesCoordinator {
- @NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
- if (candidate.getName().contains("WH-1000XM2")) {
- return DeviceType.SONY_WH_1000XM2;
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(".*WH-1000XM2.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWH1000XM3Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWH1000XM3Coordinator.java
index a76a41b14..8220dd9bf 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWH1000XM3Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWH1000XM3Coordinator.java
@@ -20,6 +20,7 @@ import androidx.annotation.NonNull;
import java.util.Arrays;
import java.util.List;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.sony.headphones.SonyHeadphonesCapabilities;
@@ -28,16 +29,10 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
public class SonyWH1000XM3Coordinator extends SonyHeadphonesCoordinator {
- @NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
- if (candidate.getName().contains("WH-1000XM3")) {
- return DeviceType.SONY_WH_1000XM3;
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(".*WH-1000XM3.*");
}
-
@Override
public int getDeviceNameResource() {
return R.string.devicetype_sony_wh_1000xm3;
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWH1000XM4Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWH1000XM4Coordinator.java
index 0609ab44b..08f1ff618 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWH1000XM4Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWH1000XM4Coordinator.java
@@ -20,23 +20,18 @@ import androidx.annotation.NonNull;
import java.util.Arrays;
import java.util.List;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.sony.headphones.SonyHeadphonesCapabilities;
import nodomain.freeyourgadget.gadgetbridge.devices.sony.headphones.SonyHeadphonesCoordinator;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
-import nodomain.freeyourgadget.gadgetbridge.service.devices.sony.headphones.SonyHeadphonesSupport;
public class SonyWH1000XM4Coordinator extends SonyHeadphonesCoordinator {
- @NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
- if (candidate.getName().contains("WH-1000XM4")) {
- return DeviceType.SONY_WH_1000XM4;
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(".*WH-1000XM4.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWH1000XM5Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWH1000XM5Coordinator.java
index 92ed9170f..e77ecd604 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWH1000XM5Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/coordinators/SonyWH1000XM5Coordinator.java
@@ -20,6 +20,7 @@ import androidx.annotation.NonNull;
import java.util.Arrays;
import java.util.List;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.sony.headphones.SonyHeadphonesCapabilities;
@@ -28,14 +29,9 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
public class SonyWH1000XM5Coordinator extends SonyHeadphonesCoordinator {
- @NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
- if (candidate.getName().contains("WH-1000XM5")) {
- return DeviceType.SONY_WH_1000XM5;
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(".*WH-1000XM5.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/wena3/SonyWena3Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/wena3/SonyWena3Coordinator.java
index 08af75e1b..5cd5bff7d 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/wena3/SonyWena3Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/wena3/SonyWena3Coordinator.java
@@ -27,6 +27,7 @@ import androidx.annotation.Nullable;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.regex.Pattern;
import de.greenrobot.dao.query.QueryBuilder;
import nodomain.freeyourgadget.gadgetbridge.R;
@@ -126,15 +127,10 @@ public class SonyWena3Coordinator extends AbstractBLEDeviceCoordinator {
qb.where(Wena3StressSampleDao.Properties.DeviceId.eq(deviceId)).buildDelete().executeDeleteWithoutDetachingEntities();
}
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- if(SonyWena3Constants.BT_DEVICE_NAME.equals(candidate.getName())) {
- return DeviceType.SONY_WENA_3;
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(SonyWena3Constants.BT_DEVICE_NAME);
}
-
@Override
public int getBondingStyle() {
return BONDING_STYLE_BOND;
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sonyswr12/SonySWR12DeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sonyswr12/SonySWR12DeviceCoordinator.java
index ec898f899..4e9de4bfc 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sonyswr12/SonySWR12DeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sonyswr12/SonySWR12DeviceCoordinator.java
@@ -24,6 +24,8 @@ import android.net.Uri;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.GBException;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLEDeviceCoordinator;
@@ -39,16 +41,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport;
import nodomain.freeyourgadget.gadgetbridge.service.devices.sonyswr12.SonySWR12DeviceSupport;
public class SonySWR12DeviceCoordinator extends AbstractBLEDeviceCoordinator {
-
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
- if (name != null && !name.isEmpty() && name.toLowerCase().contains("swr12"))
- return DeviceType.SONY_SWR12;
- } catch (Exception exc){}
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(".*swr12.*", Pattern.CASE_INSENSITIVE);
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/supercars/SuperCarsCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/supercars/SuperCarsCoordinator.java
index f4c424f75..14fd2a456 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/supercars/SuperCarsCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/supercars/SuperCarsCoordinator.java
@@ -10,6 +10,8 @@ import androidx.annotation.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.GBException;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractDeviceCoordinator;
@@ -32,21 +34,9 @@ public class SuperCarsCoordinator extends AbstractDeviceCoordinator {
}
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- try {
- String name = candidate.getName();
-
- if (name != null && name.startsWith("QCAR-")) {
- return DeviceType.SUPER_CARS;
- }
-
- } catch (Exception ex) {
- LOG.error("unable to check device support", ex);
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("QCAR-.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/test/TestDeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/test/TestDeviceCoordinator.java
index d0df667a9..fa2ea7cdf 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/test/TestDeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/test/TestDeviceCoordinator.java
@@ -29,8 +29,8 @@ public class TestDeviceCoordinator extends AbstractDeviceCoordinator {
@NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- return DeviceType.UNKNOWN;
+ public boolean supports(GBDeviceCandidate candidate) {
+ return false;
}
@Nullable
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/tlw64/TLW64Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/tlw64/TLW64Coordinator.java
index aea0fd5b2..5ba2e73f7 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/tlw64/TLW64Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/tlw64/TLW64Coordinator.java
@@ -25,6 +25,8 @@ import android.net.Uri;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.GBException;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLEDeviceCoordinator;
@@ -45,15 +47,9 @@ public class TLW64Coordinator extends AbstractBLEDeviceCoordinator {
protected void deleteDevice(@NonNull GBDevice gbDevice, @NonNull Device device, @NonNull DaoSession session) throws GBException {
}
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- String name = candidate.getName();
- if (name != null && name.startsWith("Smart Bee")) {
- return DeviceType.TLW64;
- }
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Smart Bee.*");
}
@Nullable
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/um25/Coordinator/UM25Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/um25/Coordinator/UM25Coordinator.java
index 2a6ec0e19..78a38e37e 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/um25/Coordinator/UM25Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/um25/Coordinator/UM25Coordinator.java
@@ -45,12 +45,12 @@ public class UM25Coordinator extends AbstractBLEDeviceCoordinator {
@NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- if(!"UM25C".equals(candidate.getName())) return DeviceType.UNKNOWN;
+ public boolean supports(GBDeviceCandidate candidate) {
+ if(!"UM25C".equals(candidate.getName())) return false;
for(ParcelUuid service : candidate.getServiceUuids()){
- if(service.getUuid().toString().equals(UM25Support.UUID_SERVICE)) return DeviceType.UM25;
+ if(service.getUuid().toString().equals(UM25Support.UUID_SERVICE)) return true;
}
- return DeviceType.UNKNOWN;
+ return false;
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/vesc/VescCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/vesc/VescCoordinator.java
index 45f15d75c..f5ccb0896 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/vesc/VescCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/vesc/VescCoordinator.java
@@ -69,20 +69,16 @@ public class VescCoordinator extends AbstractBLEDeviceCoordinator {
}
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
+ public boolean supports(GBDeviceCandidate candidate) {
ParcelUuid[] uuids = candidate.getServiceUuids();
- Logger logger = LoggerFactory.getLogger(getClass());
- for(ParcelUuid uuid: uuids){
- logger.debug("service: {}", uuid.toString());
- }
for(ParcelUuid uuid : uuids){
if(uuid.getUuid().toString().equals(UUID_SERVICE_SERIAL_NRF)){
- return DeviceType.VESC_NRF;
+ return true;
}else if(uuid.getUuid().toString().equals(UUID_SERVICE_SERIAL_HM10)){
- return DeviceType.VESC_HM10;
+ return true;
}
}
- return DeviceType.UNKNOWN;
+ return false;
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/vibratissimo/VibratissimoCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/vibratissimo/VibratissimoCoordinator.java
index d29b77d1e..8be69d1f6 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/vibratissimo/VibratissimoCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/vibratissimo/VibratissimoCoordinator.java
@@ -24,6 +24,7 @@ import android.net.Uri;
import androidx.annotation.NonNull;
import java.util.EnumSet;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLEDeviceCoordinator;
@@ -40,14 +41,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.ServiceDeviceSupport;
import nodomain.freeyourgadget.gadgetbridge.service.devices.vibratissimo.VibratissimoSupport;
public class VibratissimoCoordinator extends AbstractBLEDeviceCoordinator {
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- String name = candidate.getName();
- if (name != null && name.startsWith("Vibratissimo")) {
- return DeviceType.VIBRATISSIMO;
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("Vibratissimo.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/vivomovehr/VivomoveHrCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/vivomovehr/VivomoveHrCoordinator.java
index b4e1bd887..9e4eee176 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/vivomovehr/VivomoveHrCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/vivomovehr/VivomoveHrCoordinator.java
@@ -26,7 +26,6 @@ import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.GBException;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLEDeviceCoordinator;
-import nodomain.freeyourgadget.gadgetbridge.devices.AbstractDeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
@@ -44,11 +43,11 @@ import java.util.Collections;
public class VivomoveHrCoordinator extends AbstractBLEDeviceCoordinator {
@NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- if ("vívomove HR".equals(candidate.getName())) return DeviceType.VIVOMOVE_HR;
+ public boolean supports(GBDeviceCandidate candidate) {
+ if ("vívomove HR".equals(candidate.getName())) return true;
final boolean hasServiceUuids = candidate.getServiceUuids().length > 0;
- return hasServiceUuids && candidate.supportsService(VivomoveConstants.UUID_SERVICE_GARMIN_GFDI) ? DeviceType.VIVOMOVE_HR : DeviceType.UNKNOWN;
+ return hasServiceUuids && candidate.supportsService(VivomoveConstants.UUID_SERVICE_GARMIN_GFDI);
}
@NonNull
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/waspos/WaspOSCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/waspos/WaspOSCoordinator.java
index 68d66e9b1..3827f3e7b 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/waspos/WaspOSCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/waspos/WaspOSCoordinator.java
@@ -17,24 +17,22 @@
along with this program. If not, see . */
package nodomain.freeyourgadget.gadgetbridge.devices.waspos;
-import android.annotation.TargetApi;
import android.app.Activity;
import android.bluetooth.le.ScanFilter;
import android.content.Context;
import android.net.Uri;
-import android.os.Build;
import android.os.ParcelUuid;
import androidx.annotation.NonNull;
import java.util.Collection;
import java.util.Collections;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLEDeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
-import nodomain.freeyourgadget.gadgetbridge.devices.waspos.WaspOSConstants;
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
import nodomain.freeyourgadget.gadgetbridge.entities.Device;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
@@ -61,20 +59,9 @@ public class WaspOSCoordinator extends AbstractBLEDeviceCoordinator {
return Collections.singletonList(filter);
}
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- String name = candidate.getName();
- /* Filter by Espruino devices to avoid getting
- the device chooser full of spam devices. */
- if (name != null && (
- name.startsWith("DS-D6") ||
- name.startsWith("K9") ||
- name.startsWith("PineTime") ||
- name.startsWith("P8")))
- return DeviceType.WASPOS;
-
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("DS-D6.*|K9.*|PineTime.*|P8.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/watch9/Watch9DeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/watch9/Watch9DeviceCoordinator.java
index eb01fd46c..061790ba1 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/watch9/Watch9DeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/watch9/Watch9DeviceCoordinator.java
@@ -17,12 +17,10 @@
along with this program. If not, see . */
package nodomain.freeyourgadget.gadgetbridge.devices.watch9;
-import android.annotation.TargetApi;
import android.app.Activity;
import android.bluetooth.le.ScanFilter;
import android.content.Context;
import android.net.Uri;
-import android.os.Build;
import android.os.ParcelUuid;
import java.util.Collection;
@@ -62,19 +60,19 @@ public class Watch9DeviceCoordinator extends AbstractBLEDeviceCoordinator {
@NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
+ public boolean supports(GBDeviceCandidate candidate) {
String macAddress = candidate.getMacAddress().toUpperCase();
String deviceName = candidate.getName().toUpperCase();
if (candidate.supportsService(Watch9Constants.UUID_SERVICE_WATCH9)) {
- return DeviceType.WATCH9;
+ return true;
// add support for Watch X non-plus (same MAC address)
// add support for Watch X Plus (same MAC address)
} else if ((macAddress.startsWith("1C:87:79")) && ((!deviceName.equalsIgnoreCase("WATCH X")) && (!deviceName.equalsIgnoreCase("WATCH XPLUS")))) {
- return DeviceType.WATCH9;
+ return true;
} else if (deviceName.equals("WATCH 9")) {
- return DeviceType.WATCH9;
+ return true;
}
- return DeviceType.UNKNOWN;
+ return false;
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/withingssteelhr/WithingsSteelHRDeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/withingssteelhr/WithingsSteelHRDeviceCoordinator.java
index d24327e08..6a42414db 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/withingssteelhr/WithingsSteelHRDeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/withingssteelhr/WithingsSteelHRDeviceCoordinator.java
@@ -52,13 +52,13 @@ public class WithingsSteelHRDeviceCoordinator extends AbstractDeviceCoordinator
@NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
+ public boolean supports(GBDeviceCandidate candidate) {
String name = candidate.getName();
if (name != null && (name.toLowerCase(Locale.ROOT).startsWith("steel") || name.toLowerCase(Locale.ROOT).startsWith("activite"))) {
- return DeviceType.WITHINGS_STEEL_HR;
+ return true;
}
- return DeviceType.UNKNOWN;
+ return false;
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/xwatch/XWatchCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/xwatch/XWatchCoordinator.java
index bb102ef0b..8cb4fb2c7 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/xwatch/XWatchCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/xwatch/XWatchCoordinator.java
@@ -23,6 +23,9 @@ import android.net.Uri;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+
+import java.util.regex.Pattern;
+
import nodomain.freeyourgadget.gadgetbridge.GBException;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLEDeviceCoordinator;
@@ -38,14 +41,9 @@ import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport;
import nodomain.freeyourgadget.gadgetbridge.service.devices.xwatch.XWatchSupport;
public class XWatchCoordinator extends AbstractBLEDeviceCoordinator {
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- String name = candidate.getName();
- if (name != null && name.startsWith("XWatch")) {
- return DeviceType.XWATCH;
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("XWatch.*");
}
@Override
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimeCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimeCoordinator.java
index ea7798819..771235bd2 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimeCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimeCoordinator.java
@@ -26,6 +26,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.util.Collection;
+import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLEDeviceCoordinator;
@@ -48,16 +49,10 @@ public class ZeTimeCoordinator extends AbstractBLEDeviceCoordinator {
return super.createBLEScanFilters();
}
- @NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- String name = candidate.getName();
- if (name != null && name.startsWith("ZeTime")) {
- return DeviceType.ZETIME;
- }
- return DeviceType.UNKNOWN;
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("ZeTime.*");
}
-
@Nullable
@Override
public Class extends Activity> getPairingActivity() {
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 a7651a9b8..5250555c6 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java
@@ -257,8 +257,7 @@ public enum DeviceType {
SONY_WH_1000XM5(437, SonyWH1000XM5Coordinator.class),
SONY_WF_1000XM5(438, SonyWF1000XM5Coordinator.class),
BOSE_QC35(440, QC35Coordinator.class),
- VESC_NRF(500, VescCoordinator.class),
- VESC_HM10(501, VescCoordinator.class),
+ VESC(500, VescCoordinator.class),
BINARY_SENSOR(510, BinarySensorCoordinator.class),
FLIPPER_ZERO(520, FlipperZeroCoordinator.class),
SUPER_CARS(530, SuperCarsCoordinator.class),
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/vesc/VescDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/vesc/VescDeviceSupport.java
index 2007b6f1d..f6ef830da 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/vesc/VescDeviceSupport.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/vesc/VescDeviceSupport.java
@@ -67,12 +67,8 @@ public class VescDeviceSupport extends VescBaseDeviceSupport {
responseBuffer.order(ByteOrder.BIG_ENDIAN);
deviceType = type;
-
- if (type == DeviceType.VESC_NRF) {
- addSupportedService(UUID.fromString(VescCoordinator.UUID_SERVICE_SERIAL_NRF));
- } else if (type == DeviceType.VESC_HM10) {
- addSupportedService(UUID.fromString(VescCoordinator.UUID_SERVICE_SERIAL_HM10));
- }
+ addSupportedService(UUID.fromString(VescCoordinator.UUID_SERVICE_SERIAL_NRF));
+ addSupportedService(UUID.fromString(VescCoordinator.UUID_SERVICE_SERIAL_HM10));
}
@Override
@@ -89,10 +85,10 @@ public class VescDeviceSupport extends VescBaseDeviceSupport {
initBroadcast();
- if (deviceType == DeviceType.VESC_NRF) {
- this.serialWriteCharacteristic = getCharacteristic(UUID.fromString(VescCoordinator.UUID_CHARACTERISTIC_SERIAL_TX_NRF));
- this.serialReadCharacteristic = getCharacteristic(UUID.fromString(VescCoordinator.UUID_CHARACTERISTIC_SERIAL_RX_NRF));
- } else if (deviceType == DeviceType.VESC_HM10) {
+
+ this.serialWriteCharacteristic = getCharacteristic(UUID.fromString(VescCoordinator.UUID_CHARACTERISTIC_SERIAL_TX_NRF));
+ this.serialReadCharacteristic = getCharacteristic(UUID.fromString(VescCoordinator.UUID_CHARACTERISTIC_SERIAL_RX_NRF));
+ if(this.serialWriteCharacteristic == null || this.serialReadCharacteristic == null){
this.serialWriteCharacteristic = getCharacteristic(UUID.fromString(VescCoordinator.UUID_CHARACTERISTIC_SERIAL_TX_HM10));
this.serialReadCharacteristic = getCharacteristic(UUID.fromString(VescCoordinator.UUID_CHARACTERISTIC_SERIAL_RX_HM10));
}
diff --git a/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/service/devices/sony/headphones/protocol/impl/MockSonyCoordinator.java b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/service/devices/sony/headphones/protocol/impl/MockSonyCoordinator.java
index b2991e926..4ef079914 100644
--- a/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/service/devices/sony/headphones/protocol/impl/MockSonyCoordinator.java
+++ b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/service/devices/sony/headphones/protocol/impl/MockSonyCoordinator.java
@@ -34,8 +34,8 @@ public class MockSonyCoordinator extends SonyHeadphonesCoordinator {
@NonNull
@Override
- public DeviceType getSupportedType(final GBDeviceCandidate candidate) {
- return deviceType;
+ public boolean supports(final GBDeviceCandidate candidate) {
+ return true;
}
@Override