diff --git a/GBDaoGenerator/src/nodomain/freeyourgadget/gadgetbridge/daogen/GBDaoGenerator.java b/GBDaoGenerator/src/nodomain/freeyourgadget/gadgetbridge/daogen/GBDaoGenerator.java
index 733192d08..f8e56204c 100644
--- a/GBDaoGenerator/src/nodomain/freeyourgadget/gadgetbridge/daogen/GBDaoGenerator.java
+++ b/GBDaoGenerator/src/nodomain/freeyourgadget/gadgetbridge/daogen/GBDaoGenerator.java
@@ -1041,14 +1041,14 @@ public class GBDaoGenerator {
Entity activitySample = addEntity(schema, "MoyoungActivitySample");
activitySample.implementsSerializable();
addCommonActivitySampleProperties("AbstractActivitySample", activitySample, user, device);
- activitySample.addIntProperty(SAMPLE_STEPS).notNull().codeBeforeGetterAndSetter(OVERRIDE).codeBeforeGetter("@Override\n public int getRawIntensity() {\n return getSteps();\n }\n\n");
+ activitySample.addIntProperty(SAMPLE_STEPS).notNull().codeBeforeGetterAndSetter(OVERRIDE);
activitySample.addIntProperty(SAMPLE_RAW_KIND).notNull().codeBeforeGetterAndSetter(OVERRIDE);
activitySample.addIntProperty("dataSource").notNull();
activitySample.addIntProperty("caloriesBurnt").notNull();
activitySample.addIntProperty("distanceMeters").notNull();
- addHeartRateProperties(activitySample);
- addBloodPressureProperies(activitySample);
- addBloodOxidationProperies(activitySample);
+// addHeartRateProperties(activitySample);
+// addBloodPressureProperies(activitySample);
+// addBloodOxidationProperies(activitySample);
activitySample.addIntProperty("batteryLevel").notNull();
return activitySample;
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/moyoung/MoyoungDeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/moyoung/AbstractMoyoungDeviceCoordinator.java
similarity index 80%
rename from app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/moyoung/MoyoungDeviceCoordinator.java
rename to app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/moyoung/AbstractMoyoungDeviceCoordinator.java
index 9c0a2ad40..daec1b4a8 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/moyoung/MoyoungDeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/moyoung/AbstractMoyoungDeviceCoordinator.java
@@ -17,15 +17,11 @@
package nodomain.freeyourgadget.gadgetbridge.devices.moyoung;
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;
import java.util.Collection;
import java.util.Collections;
@@ -33,7 +29,6 @@ import java.util.Collections;
import nodomain.freeyourgadget.gadgetbridge.GBException;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractDeviceCoordinator;
-import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungEnumDeviceVersion;
import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungEnumMetricSystem;
@@ -50,21 +45,11 @@ import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungSett
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
import nodomain.freeyourgadget.gadgetbridge.entities.Device;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
-import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample;
-import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
+import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport;
+import nodomain.freeyourgadget.gadgetbridge.service.devices.moyoung.MoyoungDeviceSupport;
-public class MoyoungDeviceCoordinator extends AbstractDeviceCoordinator {
-
- @Override
- public DeviceType getDeviceType() {
- return DeviceType.DAFIT;
- }
-
- @Override
- public String getManufacturer() {
- return "Media-Tech";
- }
+public abstract class AbstractMoyoungDeviceCoordinator extends AbstractDeviceCoordinator {
@NonNull
@Override
@@ -77,12 +62,8 @@ public class MoyoungDeviceCoordinator extends AbstractDeviceCoordinator {
@NonNull
@Override
- public DeviceType getSupportedType(GBDeviceCandidate candidate) {
- // TODO: It would be nice to also filter on "manufacturer" (which is used as a protocol version) being MOYOUNG-V2 or MOYOUNG but I have no idea if it's possible to do that at this point
- if (candidate.supportsService(MoyoungConstants.UUID_SERVICE_MOYOUNG)) {
- return DeviceType.DAFIT;
- }
- return DeviceType.UNKNOWN;
+ public Class extends DeviceSupport> getDeviceSupportClass() {
+ return MoyoungDeviceSupport.class;
}
@Override
@@ -90,15 +71,9 @@ public class MoyoungDeviceCoordinator extends AbstractDeviceCoordinator {
return BONDING_STYLE_NONE;
}
- @Nullable
- @Override
- public Class extends Activity> getPairingActivity() {
- return null;
- }
-
@Override
protected void deleteDevice(@NonNull GBDevice gbDevice, @NonNull Device device, @NonNull DaoSession session) throws GBException {
-
+ // TODO: remove device specific data
}
@Override
@@ -117,43 +92,18 @@ public class MoyoungDeviceCoordinator extends AbstractDeviceCoordinator {
}
@Override
- public InstallHandler findInstallHandler(Uri uri, Context context) {
- return null;
- }
-
- @Override
- public boolean supportsScreenshots() {
- return false;
- }
-
- @Override
- public int getAlarmSlotCount() {
+ public int getAlarmSlotCount(GBDevice device) {
return 3;
}
- @Override
- public boolean supportsSmartWakeup(GBDevice device) {
- return false;
- }
-
@Override
public boolean supportsHeartRateMeasurement(GBDevice device) {
return true;
}
- @Override
- public boolean supportsAppsManagement() {
- return false;
- }
-
- @Override
- public Class extends Activity> getAppsManagementActivity() {
- return null;
- }
-
@Override
public boolean supportsCalendarEvents() {
- return false;
+ return true;
}
@Override
@@ -178,28 +128,9 @@ public class MoyoungDeviceCoordinator extends AbstractDeviceCoordinator {
@Override
public boolean supportsMusicInfo() {
- return false;
+ return true;
}
- @Override
- public boolean supportsLedColor() {
- return false;
- }
-
- @Override
- public boolean supportsRgbLedColor() {
- return false;
- }
-
- @NonNull
- @Override
- public int[] getColorPresets() {
- return new int[0];
- }
-
- @Override
- public boolean supportsUnicodeEmojis() { return false; }
-
private static final MoyoungSetting[] MOYOUNG_SETTINGS = new MoyoungSetting[] {
new MoyoungSettingUserInfo("USER_INFO", MoyoungConstants.CMD_SET_USER_INFO),
new MoyoungSettingByte("STEP_LENGTH", (byte)-1, MoyoungConstants.CMD_SET_STEP_LENGTH),
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/moyoung/ColmiI28UltraCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/moyoung/ColmiI28UltraCoordinator.java
new file mode 100644
index 000000000..169e11979
--- /dev/null
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/moyoung/ColmiI28UltraCoordinator.java
@@ -0,0 +1,43 @@
+/* Copyright (C) 2024 Arjan Schrijver
+
+ This file is part of Gadgetbridge.
+
+ Gadgetbridge is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Gadgetbridge is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see . */
+package nodomain.freeyourgadget.gadgetbridge.devices.moyoung;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.regex.Pattern;
+
+import nodomain.freeyourgadget.gadgetbridge.R;
+
+public class ColmiI28UltraCoordinator extends AbstractMoyoungDeviceCoordinator {
+ private static final Logger LOG = LoggerFactory.getLogger(ColmiI28UltraCoordinator.class);
+
+ @Override
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile("i28 Ultra");
+ }
+
+ @Override
+ public int getDeviceNameResource() {
+ return R.string.devicetype_colmi_i28_ultra;
+ }
+
+ @Override
+ public String getManufacturer() {
+ return "Colmi";
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/moyoung/MoyoungSampleProvider.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/moyoung/MoyoungSampleProvider.java
index 29f96d4d4..cb00145e7 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/moyoung/MoyoungSampleProvider.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/moyoung/MoyoungSampleProvider.java
@@ -98,41 +98,41 @@ public class MoyoungSampleProvider extends AbstractSampleProvider Celcius
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 1cc63d99a..2dd953e5e 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java
@@ -221,6 +221,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.mijia_lywsd.MijiaMhoC303Coor
import nodomain.freeyourgadget.gadgetbridge.devices.miscale.MiSmartScaleCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.miscale.MiCompositionScaleCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.moondrop.MoondropSpaceTravelCoordinator;
+import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.ColmiI28UltraCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.no1f1.No1F1Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.nothing.CmfBudsPro2Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.nothing.Ear1Coordinator;
@@ -558,6 +559,7 @@ public enum DeviceType {
COLMI_R03(ColmiR03Coordinator.class),
COLMI_R06(ColmiR06Coordinator.class),
COLMI_R10(ColmiR10Coordinator.class),
+ COLMI_I28_ULTRA(ColmiI28UltraCoordinator.class),
B_AND_W_P_SERIES(BandWPSeriesDeviceCoordinator.class),
SCANNABLE(ScannableDeviceCoordinator.class),
CYCLING_SENSOR(CyclingSensorCoordinator.class),
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/moyoung/FetchDataOperation.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/moyoung/FetchDataOperation.java
index 8eb18e990..043ae2197 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/moyoung/FetchDataOperation.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/moyoung/FetchDataOperation.java
@@ -205,7 +205,7 @@ public class FetchDataOperation extends AbstractBTLEOperation T getSetting(String id) {
- MoyoungDeviceCoordinator coordinator = (MoyoungDeviceCoordinator) DeviceHelper.getInstance().getCoordinator(getDevice());
+ AbstractMoyoungDeviceCoordinator coordinator = (AbstractMoyoungDeviceCoordinator) getDevice().getDeviceCoordinator();
for(MoyoungSetting setting : coordinator.getSupportedSettings())
{
if (setting.name.equals(id))
@@ -1274,19 +1182,19 @@ public class MoyoungDeviceSupport extends AbstractBTLEDeviceSupport {
sendSetting(getSetting("TIME_SYSTEM"), timeSystem);
break;
- case DeviceSettingsPreferenceConst.PREF_MEASUREMENTSYSTEM:
- String metricSystemPref = prefs.getString(DeviceSettingsPreferenceConst.PREF_MEASUREMENTSYSTEM, getContext().getString(R.string.p_unit_metric));
-
- MoyoungEnumMetricSystem metricSystem;
- if (metricSystemPref.equals(getContext().getString(R.string.p_unit_metric)))
- metricSystem = MoyoungEnumMetricSystem.METRIC_SYSTEM;
- else if (metricSystemPref.equals(getContext().getString(R.string.p_unit_imperial)))
- metricSystem = MoyoungEnumMetricSystem.IMPERIAL_SYSTEM;
- else
- throw new IllegalArgumentException();
-
- sendSetting(getSetting("METRIC_SYSTEM"), metricSystem);
- break;
+// case DeviceSettingsPreferenceConst.PREF_MEASUREMENTSYSTEM:
+// String metricSystemPref = prefs.getString(DeviceSettingsPreferenceConst.PREF_MEASUREMENTSYSTEM, getContext().getString(R.string.p_unit_metric));
+//
+// MoyoungEnumMetricSystem metricSystem;
+// if (metricSystemPref.equals(getContext().getString(R.string.p_unit_metric)))
+// metricSystem = MoyoungEnumMetricSystem.METRIC_SYSTEM;
+// else if (metricSystemPref.equals(getContext().getString(R.string.p_unit_imperial)))
+// metricSystem = MoyoungEnumMetricSystem.IMPERIAL_SYSTEM;
+// else
+// throw new IllegalArgumentException();
+//
+// sendSetting(getSetting("METRIC_SYSTEM"), metricSystem);
+// break;
case MoyoungConstants.PREF_WATCH_FACE:
String watchFacePref = prefs.getString(MoyoungConstants.PREF_WATCH_FACE, String.valueOf(1));
@@ -1310,47 +1218,47 @@ public class MoyoungDeviceSupport extends AbstractBTLEDeviceSupport {
sendSetting(versionSetting, versionSetting.findByValue(versionNum));
break;
- case MiBandConst.PREF_DO_NOT_DISTURB:
- case MiBandConst.PREF_DO_NOT_DISTURB_START:
- case MiBandConst.PREF_DO_NOT_DISTURB_END:
- String doNotDisturbPref = prefs.getString(MiBandConst.PREF_DO_NOT_DISTURB, MiBandConst.PREF_DO_NOT_DISTURB_OFF);
- boolean doNotDisturbEnabled = !MiBandConst.PREF_DO_NOT_DISTURB_OFF.equals(doNotDisturbPref);
+// case MiBandConst.PREF_DO_NOT_DISTURB:
+// case MiBandConst.PREF_DO_NOT_DISTURB_START:
+// case MiBandConst.PREF_DO_NOT_DISTURB_END:
+// String doNotDisturbPref = prefs.getString(MiBandConst.PREF_DO_NOT_DISTURB, MiBandConst.PREF_DO_NOT_DISTURB_OFF);
+// boolean doNotDisturbEnabled = !MiBandConst.PREF_DO_NOT_DISTURB_OFF.equals(doNotDisturbPref);
+//
+// Calendar doNotDisturbStart = getTimePref(prefs, MiBandConst.PREF_DO_NOT_DISTURB_START, "01:00");
+// Calendar doNotDisturbEnd = getTimePref(prefs, MiBandConst.PREF_DO_NOT_DISTURB_END, "06:00");
+//
+// MoyoungSettingTimeRange.TimeRange doNotDisturb;
+// if (doNotDisturbEnabled)
+// doNotDisturb = new MoyoungSettingTimeRange.TimeRange(
+// (byte) doNotDisturbStart.get(Calendar.HOUR_OF_DAY), (byte) doNotDisturbStart.get(Calendar.MINUTE),
+// (byte) doNotDisturbEnd.get(Calendar.HOUR_OF_DAY), (byte) doNotDisturbEnd.get(Calendar.MINUTE));
+// else
+// doNotDisturb = new MoyoungSettingTimeRange.TimeRange((byte)0, (byte)0, (byte)0, (byte)0);
+//
+// sendSetting(getSetting("DO_NOT_DISTURB_TIME"), doNotDisturb);
+// break;
- Calendar doNotDisturbStart = getTimePref(prefs, MiBandConst.PREF_DO_NOT_DISTURB_START, "01:00");
- Calendar doNotDisturbEnd = getTimePref(prefs, MiBandConst.PREF_DO_NOT_DISTURB_END, "06:00");
-
- MoyoungSettingTimeRange.TimeRange doNotDisturb;
- if (doNotDisturbEnabled)
- doNotDisturb = new MoyoungSettingTimeRange.TimeRange(
- (byte) doNotDisturbStart.get(Calendar.HOUR_OF_DAY), (byte) doNotDisturbStart.get(Calendar.MINUTE),
- (byte) doNotDisturbEnd.get(Calendar.HOUR_OF_DAY), (byte) doNotDisturbEnd.get(Calendar.MINUTE));
- else
- doNotDisturb = new MoyoungSettingTimeRange.TimeRange((byte)0, (byte)0, (byte)0, (byte)0);
-
- sendSetting(getSetting("DO_NOT_DISTURB_TIME"), doNotDisturb);
- break;
-
- case HuamiConst.PREF_ACTIVATE_DISPLAY_ON_LIFT:
- case HuamiConst.PREF_DISPLAY_ON_LIFT_START:
- case HuamiConst.PREF_DISPLAY_ON_LIFT_END:
- String quickViewPref = prefs.getString(HuamiConst.PREF_ACTIVATE_DISPLAY_ON_LIFT, MiBandConst.PREF_DO_NOT_DISTURB_OFF);
- boolean quickViewEnabled = !quickViewPref.equals(getContext().getString(R.string.p_off));
- boolean quickViewScheduled = quickViewPref.equals(getContext().getString(R.string.p_scheduled));
-
- Calendar quickViewStart = getTimePref(prefs, HuamiConst.PREF_DISPLAY_ON_LIFT_START, "00:00");
- Calendar quickViewEnd = getTimePref(prefs, HuamiConst.PREF_DISPLAY_ON_LIFT_END, "00:00");
-
- MoyoungSettingTimeRange.TimeRange quickViewTime;
- if (quickViewEnabled && quickViewScheduled)
- quickViewTime = new MoyoungSettingTimeRange.TimeRange(
- (byte) quickViewStart.get(Calendar.HOUR_OF_DAY), (byte) quickViewStart.get(Calendar.MINUTE),
- (byte) quickViewEnd.get(Calendar.HOUR_OF_DAY), (byte) quickViewEnd.get(Calendar.MINUTE));
- else
- quickViewTime = new MoyoungSettingTimeRange.TimeRange((byte)0, (byte)0, (byte)0, (byte)0);
-
- sendSetting(getSetting("QUICK_VIEW"), quickViewEnabled);
- sendSetting(getSetting("QUICK_VIEW_TIME"), quickViewTime);
- break;
+// case HuamiConst.PREF_ACTIVATE_DISPLAY_ON_LIFT:
+// case HuamiConst.PREF_DISPLAY_ON_LIFT_START:
+// case HuamiConst.PREF_DISPLAY_ON_LIFT_END:
+// String quickViewPref = prefs.getString(HuamiConst.PREF_ACTIVATE_DISPLAY_ON_LIFT, MiBandConst.PREF_DO_NOT_DISTURB_OFF);
+// boolean quickViewEnabled = !quickViewPref.equals(getContext().getString(R.string.p_off));
+// boolean quickViewScheduled = quickViewPref.equals(getContext().getString(R.string.p_scheduled));
+//
+// Calendar quickViewStart = getTimePref(prefs, HuamiConst.PREF_DISPLAY_ON_LIFT_START, "00:00");
+// Calendar quickViewEnd = getTimePref(prefs, HuamiConst.PREF_DISPLAY_ON_LIFT_END, "00:00");
+//
+// MoyoungSettingTimeRange.TimeRange quickViewTime;
+// if (quickViewEnabled && quickViewScheduled)
+// quickViewTime = new MoyoungSettingTimeRange.TimeRange(
+// (byte) quickViewStart.get(Calendar.HOUR_OF_DAY), (byte) quickViewStart.get(Calendar.MINUTE),
+// (byte) quickViewEnd.get(Calendar.HOUR_OF_DAY), (byte) quickViewEnd.get(Calendar.MINUTE));
+// else
+// quickViewTime = new MoyoungSettingTimeRange.TimeRange((byte)0, (byte)0, (byte)0, (byte)0);
+//
+// sendSetting(getSetting("QUICK_VIEW"), quickViewEnabled);
+// sendSetting(getSetting("QUICK_VIEW_TIME"), quickViewTime);
+// break;
case MoyoungConstants.PREF_SEDENTARY_REMINDER:
String sedentaryReminderPref = prefs.getString(MoyoungConstants.PREF_SEDENTARY_REMINDER, "off");
@@ -1397,9 +1305,9 @@ public class MoyoungDeviceSupport extends AbstractBTLEDeviceSupport {
querySetting(getSetting("TIME_SYSTEM"));
break;
- case DeviceSettingsPreferenceConst.PREF_MEASUREMENTSYSTEM:
- querySetting(getSetting("METRIC_SYSTEM"));
- break;
+// case DeviceSettingsPreferenceConst.PREF_MEASUREMENTSYSTEM:
+// querySetting(getSetting("METRIC_SYSTEM"));
+// break;
case MoyoungConstants.PREF_WATCH_FACE:
querySetting(getSetting("DISPLAY_WATCH_FACE"));
@@ -1413,18 +1321,18 @@ public class MoyoungDeviceSupport extends AbstractBTLEDeviceSupport {
querySetting(getSetting("DEVICE_VERSION"));
break;
- case MiBandConst.PREF_DO_NOT_DISTURB:
- case MiBandConst.PREF_DO_NOT_DISTURB_START:
- case MiBandConst.PREF_DO_NOT_DISTURB_END:
- querySetting(getSetting("DO_NOT_DISTURB_TIME"));
- break;
+// case MiBandConst.PREF_DO_NOT_DISTURB:
+// case MiBandConst.PREF_DO_NOT_DISTURB_START:
+// case MiBandConst.PREF_DO_NOT_DISTURB_END:
+// querySetting(getSetting("DO_NOT_DISTURB_TIME"));
+// break;
- case HuamiConst.PREF_ACTIVATE_DISPLAY_ON_LIFT:
- case HuamiConst.PREF_DISPLAY_ON_LIFT_START:
- case HuamiConst.PREF_DISPLAY_ON_LIFT_END:
- querySetting(getSetting("QUICK_VIEW"));
- querySetting(getSetting("QUICK_VIEW_TIME"));
- break;
+// case HuamiConst.PREF_ACTIVATE_DISPLAY_ON_LIFT:
+// case HuamiConst.PREF_DISPLAY_ON_LIFT_START:
+// case HuamiConst.PREF_DISPLAY_ON_LIFT_END:
+// querySetting(getSetting("QUICK_VIEW"));
+// querySetting(getSetting("QUICK_VIEW_TIME"));
+// break;
case MoyoungConstants.PREF_SEDENTARY_REMINDER:
querySetting(getSetting("SEDENTARY_REMINDER"));
@@ -1440,10 +1348,10 @@ public class MoyoungDeviceSupport extends AbstractBTLEDeviceSupport {
return;
}
- GBDeviceEventConfigurationRead configReadEvent = new GBDeviceEventConfigurationRead();
- configReadEvent.config = config;
- configReadEvent.event = GBDeviceEventConfigurationRead.Event.IN_PROGRESS;
- evaluateGBDeviceEvent(configReadEvent);
+// GBDeviceEventConfigurationRead configReadEvent = new GBDeviceEventConfigurationRead();
+// configReadEvent.config = config;
+// configReadEvent.event = GBDeviceEventConfigurationRead.Event.IN_PROGRESS;
+// evaluateGBDeviceEvent(configReadEvent);
}
public void onReadConfigurationDone(MoyoungSetting setting, Object value, byte[] data)
@@ -1463,15 +1371,15 @@ public class MoyoungDeviceSupport extends AbstractBTLEDeviceSupport {
throw new IllegalArgumentException("Invalid value");
break;
- case "METRIC_SYSTEM":
- MoyoungEnumMetricSystem metricSystem = (MoyoungEnumMetricSystem) value;
- if (metricSystem == MoyoungEnumMetricSystem.METRIC_SYSTEM)
- changedProperties.put(DeviceSettingsPreferenceConst.PREF_MEASUREMENTSYSTEM, getContext().getString(R.string.p_unit_metric));
- else if (metricSystem == MoyoungEnumMetricSystem.IMPERIAL_SYSTEM)
- changedProperties.put(DeviceSettingsPreferenceConst.PREF_MEASUREMENTSYSTEM, getContext().getString(R.string.p_unit_imperial));
- else
- throw new IllegalArgumentException("Invalid value");
- break;
+// case "METRIC_SYSTEM":
+// MoyoungEnumMetricSystem metricSystem = (MoyoungEnumMetricSystem) value;
+// if (metricSystem == MoyoungEnumMetricSystem.METRIC_SYSTEM)
+// changedProperties.put(DeviceSettingsPreferenceConst.PREF_MEASUREMENTSYSTEM, getContext().getString(R.string.p_unit_metric));
+// else if (metricSystem == MoyoungEnumMetricSystem.IMPERIAL_SYSTEM)
+// changedProperties.put(DeviceSettingsPreferenceConst.PREF_MEASUREMENTSYSTEM, getContext().getString(R.string.p_unit_imperial));
+// else
+// throw new IllegalArgumentException("Invalid value");
+// break;
case "DISPLAY_WATCH_FACE":
byte watchFace = (Byte) value;
@@ -1493,37 +1401,37 @@ public class MoyoungDeviceSupport extends AbstractBTLEDeviceSupport {
changedProperties.put(MoyoungConstants.PREF_DEVICE_VERSION, String.valueOf(deviceVersion.value()));
break;
- case "DO_NOT_DISTURB_TIME":
- MoyoungSettingTimeRange.TimeRange doNotDisturb = (MoyoungSettingTimeRange.TimeRange) value;
- if (doNotDisturb.start_h == 0 && doNotDisturb.start_m == 0 &&
- doNotDisturb.end_h == 0 && doNotDisturb.end_m == 0)
- changedProperties.put(MiBandConst.PREF_DO_NOT_DISTURB, MiBandConst.PREF_DO_NOT_DISTURB_OFF);
- else
- changedProperties.put(MiBandConst.PREF_DO_NOT_DISTURB, MiBandConst.PREF_DO_NOT_DISTURB_SCHEDULED);
- changedProperties.put(MiBandConst.PREF_DO_NOT_DISTURB_START, String.format(Locale.ROOT, "%02d:%02d", doNotDisturb.start_h, doNotDisturb.start_m));
- changedProperties.put(MiBandConst.PREF_DO_NOT_DISTURB_END, String.format(Locale.ROOT, "%02d:%02d", doNotDisturb.end_h, doNotDisturb.end_m));
- break;
+// case "DO_NOT_DISTURB_TIME":
+// MoyoungSettingTimeRange.TimeRange doNotDisturb = (MoyoungSettingTimeRange.TimeRange) value;
+// if (doNotDisturb.start_h == 0 && doNotDisturb.start_m == 0 &&
+// doNotDisturb.end_h == 0 && doNotDisturb.end_m == 0)
+// changedProperties.put(MiBandConst.PREF_DO_NOT_DISTURB, MiBandConst.PREF_DO_NOT_DISTURB_OFF);
+// else
+// changedProperties.put(MiBandConst.PREF_DO_NOT_DISTURB, MiBandConst.PREF_DO_NOT_DISTURB_SCHEDULED);
+// changedProperties.put(MiBandConst.PREF_DO_NOT_DISTURB_START, String.format(Locale.ROOT, "%02d:%02d", doNotDisturb.start_h, doNotDisturb.start_m));
+// changedProperties.put(MiBandConst.PREF_DO_NOT_DISTURB_END, String.format(Locale.ROOT, "%02d:%02d", doNotDisturb.end_h, doNotDisturb.end_m));
+// break;
- case "QUICK_VIEW":
- boolean quickViewEnabled = (Boolean) value;
- boolean quickViewScheduled = prefs.getString(HuamiConst.PREF_ACTIVATE_DISPLAY_ON_LIFT, getContext().getString(R.string.p_off)).equals(getContext().getString(R.string.p_scheduled));
- changedProperties.put(HuamiConst.PREF_ACTIVATE_DISPLAY_ON_LIFT, quickViewEnabled ? (quickViewScheduled ? getContext().getString(R.string.p_scheduled) : getContext().getString(R.string.p_on)) : getContext().getString(R.string.p_off));
- break;
+// case "QUICK_VIEW":
+// boolean quickViewEnabled = (Boolean) value;
+// boolean quickViewScheduled = prefs.getString(HuamiConst.PREF_ACTIVATE_DISPLAY_ON_LIFT, getContext().getString(R.string.p_off)).equals(getContext().getString(R.string.p_scheduled));
+// changedProperties.put(HuamiConst.PREF_ACTIVATE_DISPLAY_ON_LIFT, quickViewEnabled ? (quickViewScheduled ? getContext().getString(R.string.p_scheduled) : getContext().getString(R.string.p_on)) : getContext().getString(R.string.p_off));
+// break;
- case "QUICK_VIEW_TIME":
- boolean quickViewEnabled2 = !prefs.getString(HuamiConst.PREF_ACTIVATE_DISPLAY_ON_LIFT, getContext().getString(R.string.p_off)).equals(getContext().getString(R.string.p_off));
- MoyoungSettingTimeRange.TimeRange quickViewTime = (MoyoungSettingTimeRange.TimeRange) value;
- if (quickViewEnabled2)
- {
- if (quickViewTime.start_h == 0 && quickViewTime.start_m == 0 &&
- quickViewTime.end_h == 0 && quickViewTime.end_m == 0)
- changedProperties.put(HuamiConst.PREF_ACTIVATE_DISPLAY_ON_LIFT, getContext().getString(R.string.p_on));
- else
- changedProperties.put(HuamiConst.PREF_ACTIVATE_DISPLAY_ON_LIFT, getContext().getString(R.string.p_scheduled));
- }
- changedProperties.put(HuamiConst.PREF_DISPLAY_ON_LIFT_START, String.format(Locale.ROOT, "%02d:%02d", quickViewTime.start_h, quickViewTime.start_m));
- changedProperties.put(HuamiConst.PREF_DISPLAY_ON_LIFT_END, String.format(Locale.ROOT, "%02d:%02d", quickViewTime.end_h, quickViewTime.end_m));
- break;
+// case "QUICK_VIEW_TIME":
+// boolean quickViewEnabled2 = !prefs.getString(HuamiConst.PREF_ACTIVATE_DISPLAY_ON_LIFT, getContext().getString(R.string.p_off)).equals(getContext().getString(R.string.p_off));
+// MoyoungSettingTimeRange.TimeRange quickViewTime = (MoyoungSettingTimeRange.TimeRange) value;
+// if (quickViewEnabled2)
+// {
+// if (quickViewTime.start_h == 0 && quickViewTime.start_m == 0 &&
+// quickViewTime.end_h == 0 && quickViewTime.end_m == 0)
+// changedProperties.put(HuamiConst.PREF_ACTIVATE_DISPLAY_ON_LIFT, getContext().getString(R.string.p_on));
+// else
+// changedProperties.put(HuamiConst.PREF_ACTIVATE_DISPLAY_ON_LIFT, getContext().getString(R.string.p_scheduled));
+// }
+// changedProperties.put(HuamiConst.PREF_DISPLAY_ON_LIFT_START, String.format(Locale.ROOT, "%02d:%02d", quickViewTime.start_h, quickViewTime.start_m));
+// changedProperties.put(HuamiConst.PREF_DISPLAY_ON_LIFT_END, String.format(Locale.ROOT, "%02d:%02d", quickViewTime.end_h, quickViewTime.end_m));
+// break;
case "SEDENTARY_REMINDER":
boolean sedentaryReminderEnabled = (Boolean) value;
@@ -1541,13 +1449,13 @@ public class MoyoungDeviceSupport extends AbstractBTLEDeviceSupport {
for (Map.Entry property : changedProperties.entrySet())
prefsEditor.putString(property.getKey(), property.getValue());
prefsEditor.apply();
- for (Map.Entry property : changedProperties.entrySet())
- {
- GBDeviceEventConfigurationRead configReadEvent = new GBDeviceEventConfigurationRead();
- configReadEvent.config = property.getKey();
- configReadEvent.event = GBDeviceEventConfigurationRead.Event.SUCCESS;
- evaluateGBDeviceEvent(configReadEvent);
- }
+// for (Map.Entry property : changedProperties.entrySet())
+// {
+// GBDeviceEventConfigurationRead configReadEvent = new GBDeviceEventConfigurationRead();
+// configReadEvent.config = property.getKey();
+// configReadEvent.event = GBDeviceEventConfigurationRead.Event.SUCCESS;
+// evaluateGBDeviceEvent(configReadEvent);
+// }
}
@Override
@@ -1555,13 +1463,14 @@ public class MoyoungDeviceSupport extends AbstractBTLEDeviceSupport {
try {
new QuerySettingsOperation(this).perform();
} catch (IOException e) {
- e.printStackTrace();
+ LOG.debug("Error while testing new function: ", e);
}
}
@Override
- public void onSendWeather(WeatherSpec weatherSpec) {
+ public void onSendWeather(ArrayList weatherSpecs) {
try {
+ WeatherSpec weatherSpec = weatherSpecs.get(0);
TransactionBuilder builder = performInitialized("onSendWeather");
MoyoungWeatherToday weatherToday = new MoyoungWeatherToday(weatherSpec);
@@ -1594,14 +1503,4 @@ public class MoyoungDeviceSupport extends AbstractBTLEDeviceSupport {
e.printStackTrace();
}
}
-
- @Override
- public void onSetFmFrequency(float frequency) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void onSetLedColor(int color) {
- throw new UnsupportedOperationException();
- }
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/moyoung/QuerySettingsOperation.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/moyoung/QuerySettingsOperation.java
index 5ac5e87c1..32e7a5f0d 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/moyoung/QuerySettingsOperation.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/moyoung/QuerySettingsOperation.java
@@ -27,13 +27,12 @@ import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.util.UUID;
+import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.AbstractMoyoungDeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.MoyoungConstants;
-import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.MoyoungDeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungSetting;
import nodomain.freeyourgadget.gadgetbridge.service.btle.AbstractBTLEOperation;
import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.operations.OperationStatus;
-import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper;
public class QuerySettingsOperation extends AbstractBTLEOperation {
@@ -51,7 +50,7 @@ public class QuerySettingsOperation extends AbstractBTLEOperationColmi R03
Colmi R06
Colmi R10
+ Colmi i28 Ultra
Bowers and Wilkins P series
Choose export location
General
diff --git a/app/src/main/res/xml/devicesettings_donotdisturb_no_auto_v2.xml b/app/src/main/res/xml/devicesettings_donotdisturb_no_auto_v2.xml
index 486bde81d..e6b2a4204 100644
--- a/app/src/main/res/xml/devicesettings_donotdisturb_no_auto_v2.xml
+++ b/app/src/main/res/xml/devicesettings_donotdisturb_no_auto_v2.xml
@@ -18,7 +18,6 @@
android:entryValues="@array/do_not_disturb_no_auto_values"
android:key="do_not_disturb"
android:summary="%s"
- app:dependentValue="@string/p_scheduled"
android:title="@string/mi2_prefs_do_not_disturb" />