diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/evenrealities/G1DeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/evenrealities/G1DeviceCoordinator.java index 19755ecbcd..77b1e93b24 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/evenrealities/G1DeviceCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/evenrealities/G1DeviceCoordinator.java @@ -53,10 +53,10 @@ public class G1DeviceCoordinator extends AbstractBLEDeviceCoordinator { @Override protected Pattern getSupportedDeviceName() { - // eg. G1_45_L_F2333, G1_63_R_04935. + // eg. G1_45_L_F2333, G1_63_R_04935, G1_2_R_B7D35. // Note that the G1_XX_L_YYYYY will have a corresponding G1_XX_R_ZZZZZ. The XX will match, // but the trailing 5 characters will not. - return Pattern.compile("Even G1_\\d\\d_[L|R]_\\w+"); + return Pattern.compile("Even G1_\\d+_[L|R]_\\w+"); } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/evenrealities/G1Constants.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/evenrealities/G1Constants.java index f7a1c23f70..6fd45083d5 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/evenrealities/G1Constants.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/evenrealities/G1Constants.java @@ -35,14 +35,13 @@ public class G1Constants { // Extract the L or R at the end of the device prefix. public static Side getSideFromFullName(String deviceName) { - int prefixSize = "Even G1_XX_X".length(); + // Name will be "G1_XX_[L|R]_YYYYY" + int firstUnderScore = deviceName.indexOf('_'); + if (firstUnderScore < 0) return null; + int prefixSize = deviceName.indexOf('_', firstUnderScore); + if (prefixSize < 0) return null; - if (deviceName.length() < prefixSize) { - return null; - } - - String prefix = deviceName.substring(0, prefixSize); - char side = prefix.charAt(prefix.length() - 1); + char side = deviceName.charAt(prefixSize+1); if (side == 'L' || side == 'R') { return side == 'L' ? Side.LEFT : Side.RIGHT; } @@ -51,13 +50,13 @@ public class G1Constants { } public static String getNameFromFullName(String deviceName) { - int prefixSize = "Even G1_XX".length(); + // Name will be "G1_XX_[L|R]_YYYYY" + int firstUnderScore = deviceName.indexOf('_'); + if (firstUnderScore < 0) return null; + int prefixSize = deviceName.indexOf('_', firstUnderScore); + if (prefixSize < 0) return null; - if (deviceName.length() < prefixSize) { - return null; - } - - return deviceName.substring(0, prefixSize); + return deviceName.substring(0, prefixSize-1); } public enum Side {