diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/MiBandSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/MiBandSupport.java index bd3d4519d7..6e24915ee9 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/MiBandSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/MiBandSupport.java @@ -107,8 +107,6 @@ protected TransactionBuilder initializeDevice(TransactionBuilder builder) { .setCurrentTime(builder) .requestBatteryInfo(builder) .setInitialized(builder); - // heartrate(builder) - // .requestHRInfo(builder); return builder; } @@ -138,8 +136,10 @@ private MiBandSupport enableFurtherNotifications(TransactionBuilder builder, boo builder.notify(getCharacteristic(MiBandService.UUID_CHARACTERISTIC_REALTIME_STEPS), enable) .notify(getCharacteristic(MiBandService.UUID_CHARACTERISTIC_ACTIVITY_DATA), enable) .notify(getCharacteristic(MiBandService.UUID_CHARACTERISTIC_BATTERY), enable) - .notify(getCharacteristic(MiBandService.UUID_CHARACTERISTIC_SENSOR_DATA), enable) - .notify(getCharacteristic(MiBandService.UUID_CHARACTERISTIC_HEART_RATE_MEASUREMENT), enable); + .notify(getCharacteristic(MiBandService.UUID_CHARACTERISTIC_SENSOR_DATA), enable); + if (supportsHeartRate()) { + builder.notify(getCharacteristic(MiBandService.UUID_CHARACTERISTIC_HEART_RATE_MEASUREMENT), enable); + } return this; } @@ -530,14 +530,23 @@ public void onReboot() { } @Override public void onHearRateTest() { - try { - TransactionBuilder builder = performInitialized("HeartRateTest"); - builder.write(getCharacteristic(MiBandService.UUID_CHARACTERISTIC_HEART_RATE_CONTROL_POINT), startHeartMeasurementManual); - builder.queue(getQueue()); - } catch (IOException ex) { - LOG.error("Unable to read HearRate in MI1S", ex); + if (supportsHeartRate()) { + try { + TransactionBuilder builder = performInitialized("HeartRateTest"); + builder.write(getCharacteristic(MiBandService.UUID_CHARACTERISTIC_HEART_RATE_CONTROL_POINT), startHeartMeasurementManual); + builder.queue(getQueue()); + } catch (IOException ex) { + LOG.error("Unable to read HearRate in MI1S", ex); + } + } else { + GB.toast(getContext(), "Heart rate is not supported on this device", Toast.LENGTH_LONG, GB.ERROR); } } + + public boolean supportsHeartRate() { + return getDeviceInfo() != null && getDeviceInfo().isMilli1S(); + } + @Override public void onFindDevice(boolean start) { isLocatingDevice = start;