From ba7d13fa5da455519f246ace667f133fb335050a Mon Sep 17 00:00:00 2001 From: cpfeiffer Date: Thu, 26 Jan 2017 20:55:00 +0100 Subject: [PATCH] Disable smart alarms for Mi2 Closes #471 --- .../gadgetbridge/activities/AlarmDetails.java | 24 ++++++++++++++++--- .../activities/ConfigureAlarms.java | 12 ++++++++-- .../activities/ControlCenter.java | 1 + .../devices/DeviceCoordinator.java | 6 +++++ .../devices/UnknownDeviceCoordinator.java | 5 ++++ .../devices/hplus/HPlusCoordinator.java | 5 ++++ .../devices/liveview/LiveviewCoordinator.java | 5 ++++ .../devices/miband/MiBand2Coordinator.java | 5 ++++ .../devices/miband/MiBandCoordinator.java | 5 ++++ .../devices/pebble/PebbleCoordinator.java | 5 ++++ .../vibratissimo/VibratissimoCoordinator.java | 5 ++++ 11 files changed, 73 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AlarmDetails.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AlarmDetails.java index 7b3342ae..c9f2b09d 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AlarmDetails.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AlarmDetails.java @@ -1,15 +1,19 @@ package nodomain.freeyourgadget.gadgetbridge.activities; import android.os.Bundle; -import android.os.Parcelable; import android.text.format.DateFormat; import android.view.MenuItem; +import android.view.View; import android.widget.CheckBox; +import android.widget.TextView; import android.widget.TimePicker; import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.R; +import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBAlarm; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; +import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper; public class AlarmDetails extends GBActivity { @@ -23,16 +27,19 @@ public class AlarmDetails extends GBActivity { private CheckBox cbFriday; private CheckBox cbSaturday; private CheckBox cbSunday; + private GBDevice device; + private TextView smartAlarmLabel; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_alarm_details); - Parcelable p = getIntent().getExtras().getParcelable("alarm"); - alarm = (GBAlarm) p; + alarm = getIntent().getParcelableExtra("alarm"); + device = getIntent().getParcelableExtra(GBDevice.EXTRA_DEVICE); timePicker = (TimePicker) findViewById(R.id.alarm_time_picker); + smartAlarmLabel = (TextView) findViewById(R.id.alarm_label_smart_wakeup); cbSmartWakeup = (CheckBox) findViewById(R.id.alarm_cb_smart_wakeup); cbMonday = (CheckBox) findViewById(R.id.alarm_cb_mon); cbTuesday = (CheckBox) findViewById(R.id.alarm_cb_tue); @@ -47,6 +54,9 @@ public class AlarmDetails extends GBActivity { timePicker.setCurrentMinute(alarm.getMinute()); cbSmartWakeup.setChecked(alarm.isSmartWakeup()); + int smartAlarmVisibility = supportsSmartWakeup() ? View.VISIBLE : View.GONE; + cbSmartWakeup.setVisibility(smartAlarmVisibility); + smartAlarmLabel.setVisibility(smartAlarmVisibility); cbMonday.setChecked(alarm.getRepetition(GBAlarm.ALARM_MON)); cbTuesday.setChecked(alarm.getRepetition(GBAlarm.ALARM_TUE)); @@ -58,6 +68,14 @@ public class AlarmDetails extends GBActivity { } + private boolean supportsSmartWakeup() { + if (device != null) { + DeviceCoordinator coordinator = DeviceHelper.getInstance().getCoordinator(device); + return coordinator.supportsSmartWakeup(device); + } + return false; + } + @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ConfigureAlarms.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ConfigureAlarms.java index 0a978d5d..420112b3 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ConfigureAlarms.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ConfigureAlarms.java @@ -14,6 +14,7 @@ import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.adapter.GBAlarmListAdapter; import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst; import nodomain.freeyourgadget.gadgetbridge.impl.GBAlarm; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.util.Prefs; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MIBAND_ALARMS; @@ -26,6 +27,7 @@ public class ConfigureAlarms extends GBActivity { private GBAlarmListAdapter mGBAlarmListAdapter; private Set preferencesAlarmListSet; private boolean avoidSendAlarmsToDevice; + private GBDevice device; @Override protected void onCreate(Bundle savedInstanceState) { @@ -33,6 +35,8 @@ public class ConfigureAlarms extends GBActivity { setContentView(R.layout.activity_configure_alarms); + device = getIntent().getParcelableExtra(GBDevice.EXTRA_DEVICE); + Prefs prefs = GBApplication.getPrefs(); preferencesAlarmListSet = prefs.getStringSet(PREF_MIBAND_ALARMS, new HashSet()); if (preferencesAlarmListSet.isEmpty()) { @@ -86,12 +90,16 @@ public class ConfigureAlarms extends GBActivity { public void configureAlarm(GBAlarm alarm) { avoidSendAlarmsToDevice = true; - Intent startIntent; - startIntent = new Intent(getApplicationContext(), AlarmDetails.class); + Intent startIntent = new Intent(getApplicationContext(), AlarmDetails.class); startIntent.putExtra("alarm", alarm); + startIntent.putExtra(GBDevice.EXTRA_DEVICE, getDevice()); startActivityForResult(startIntent, REQ_CONFIGURE_ALARM); } + private GBDevice getDevice() { + return device; + } + private void sendAlarmsToDevice() { GBApplication.deviceService().onSetAlarms(mGBAlarmListAdapter.getAlarmList()); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenter.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenter.java index 6b9178fb..35f0009e 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenter.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenter.java @@ -278,6 +278,7 @@ public class ControlCenter extends GBActivity { if (selectedDevice != null) { Intent startIntent; startIntent = new Intent(ControlCenter.this, ConfigureAlarms.class); + startIntent.putExtra(GBDevice.EXTRA_DEVICE, selectedDevice); startActivity(startIntent); } return true; 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 ef872cf3..346446da 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/DeviceCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/DeviceCoordinator.java @@ -154,6 +154,12 @@ public interface DeviceCoordinator { */ boolean supportsAlarmConfiguration(); + /** + * Returns true if this device/coordinator supports alarms with smart wakeup + * @return + */ + boolean supportsSmartWakeup(GBDevice device); + /** * Returns true if the given device supports heart rate measurements. * @return 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 6a50ba0f..4d3cf3c3 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/UnknownDeviceCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/UnknownDeviceCoordinator.java @@ -135,6 +135,11 @@ public class UnknownDeviceCoordinator extends AbstractDeviceCoordinator { return false; } + @Override + public boolean supportsSmartWakeup(GBDevice device) { + return false; + } + @Override public boolean supportsHeartRateMeasurement(GBDevice device) { return false; 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 8495e664..8224a107 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 @@ -106,6 +106,11 @@ public class HPlusCoordinator extends AbstractDeviceCoordinator { return true; } + @Override + public boolean supportsSmartWakeup(GBDevice device) { + return false; + } + @Override public boolean supportsHeartRateMeasurement(GBDevice device) { return true; 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 338137ce..d68341f4 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 @@ -72,6 +72,11 @@ public class LiveviewCoordinator extends AbstractDeviceCoordinator { return false; } + @Override + public boolean supportsSmartWakeup(GBDevice device) { + return false; + } + @Override public boolean supportsHeartRateMeasurement(GBDevice device) { return false; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBand2Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBand2Coordinator.java index 01538e09..3ba9e543 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBand2Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBand2Coordinator.java @@ -106,4 +106,9 @@ public class MiBand2Coordinator extends MiBandCoordinator { MiBand2FWInstallHandler handler = new MiBand2FWInstallHandler(uri, context); return handler.isValid() ? handler : null; } + + @Override + public boolean supportsSmartWakeup(GBDevice device) { + return false; + } } 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 abff3bc1..bf534a35 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 @@ -124,6 +124,11 @@ public class MiBandCoordinator extends AbstractDeviceCoordinator { return true; } + @Override + public boolean supportsSmartWakeup(GBDevice device) { + return true; + } + @Override public boolean supportsActivityTracking() { return true; 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 5953113d..316967cb 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 @@ -108,6 +108,11 @@ public class PebbleCoordinator extends AbstractDeviceCoordinator { return false; } + @Override + public boolean supportsSmartWakeup(GBDevice device) { + return false; + } + @Override public boolean supportsHeartRateMeasurement(GBDevice device) { return PebbleUtils.hasHRM(device.getModel()); 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 8f71f234..0c06672d 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 @@ -73,6 +73,11 @@ public class VibratissimoCoordinator extends AbstractDeviceCoordinator { return false; } + @Override + public boolean supportsSmartWakeup(GBDevice device) { + return false; + } + @Override public boolean supportsHeartRateMeasurement(GBDevice device) { return false;