From ac8d7bee5fef8d3d18c2953916be3f25c915a00b Mon Sep 17 00:00:00 2001 From: cpfeiffer Date: Sat, 27 Feb 2016 11:23:55 +0100 Subject: [PATCH] Only do heart rate stuff when supported #178 --- .../service/devices/miband/MiBandSupport.java | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) 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 bd3d4519d..6e24915ee 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 @@ public class MiBandSupport extends AbstractBTLEDeviceSupport { .setCurrentTime(builder) .requestBatteryInfo(builder) .setInitialized(builder); - // heartrate(builder) - // .requestHRInfo(builder); return builder; } @@ -138,8 +136,10 @@ public class MiBandSupport extends AbstractBTLEDeviceSupport { 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 class MiBandSupport extends AbstractBTLEDeviceSupport { } @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;