diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java index 6a4c0df2e2..411c3507f0 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java @@ -264,12 +264,16 @@ public class QHybridCoordinator extends AbstractBLEDeviceCoordinator { @Override public DeviceSpecificSettings getDeviceSpecificSettings(final GBDevice device) { final DeviceSpecificSettings deviceSpecificSettings = new DeviceSpecificSettings(); + // Q Hybrid watches, without eInk screen if (!isHybridHR(device)) { deviceSpecificSettings.addRootScreen(R.xml.devicesettings_fossilqhybrid_legacy); deviceSpecificSettings.addRootScreen(R.xml.devicesettings_fossilhybridhr_vibration); // deviceSpecificSettings.addRootScreen(R.xml.devicesettings_fossilhybridhr_calibration); // TODO + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_fossilhybrids_dev); return deviceSpecificSettings; } + // Gen 1 and Gen 6 HR Hybrid watches, with eInk screen final List generic = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.GENERIC); // Firmware version specific settings final Version firmwareVersion = getFirmwareVersion(device); @@ -296,6 +300,7 @@ public class QHybridCoordinator extends AbstractBLEDeviceCoordinator { notifications.add(R.xml.devicesettings_transliteration); notifications.add(R.xml.devicesettings_custom_deviceicon); final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_fossilhybrids_dev); developer.add(R.xml.devicesettings_fossilhybridhr_dev); return deviceSpecificSettings; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil/FossilWatchAdapter.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil/FossilWatchAdapter.java index 8889200193..910e380a31 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil/FossilWatchAdapter.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil/FossilWatchAdapter.java @@ -36,6 +36,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.text.DateFormat; @@ -111,6 +113,7 @@ public class FossilWatchAdapter extends WatchAdapter { public final String CONFIG_ITEM_BUTTONS = "buttons"; private int lastButtonIndex = -1; + protected boolean saveRawActivityFiles = false; protected final Logger LOG = LoggerFactory.getLogger(getClass().getSimpleName()); @@ -151,6 +154,8 @@ public class FossilWatchAdapter extends WatchAdapter { public void initialize() { timeoutThread.start(); + saveRawActivityFiles = getDeviceSpecificPreferences().getBoolean("save_raw_activity_files", false); + playPairingAnimation(); queueWrite(new RequestMtuRequest(512), false); @@ -393,6 +398,8 @@ public class FossilWatchAdapter extends WatchAdapter { @Override public void setStepGoal(int stepGoal) { + LOG.info("setStepGoal called with value: {}", stepGoal); + queueWrite(new ConfigurationPutRequest(new ConfigurationPutRequest.DailyStepGoalConfigItem(stepGoal), this) { @Override public void onFilePut(boolean success) { @@ -403,7 +410,7 @@ public class FossilWatchAdapter extends WatchAdapter { }, false); } - private void setVibrationStrengthFromConfig() { + protected void setVibrationStrengthFromConfig() { Prefs prefs = new Prefs(getDeviceSpecificPreferences()); int vibrationStrengh = prefs.getInt(DeviceSettingsPreferenceConst.PREF_VIBRATION_STRENGH_PERCENTAGE, 2); if (vibrationStrengh > 0) { @@ -539,6 +546,21 @@ public class FossilWatchAdapter extends WatchAdapter { throw new UnsupportedOperationException("Model " + modelNumber + " not supported"); } + protected void writeFile(String dirname, String fileName, byte[] value) { + File activityDir = new File(getContext().getExternalFilesDir(null), dirname); + activityDir.mkdir(); + File f = new File(activityDir, fileName); + try { + f.createNewFile(); + FileOutputStream fos = new FileOutputStream(f); + fos.write(value); + fos.close(); + LOG.debug("Saved raw activity file: " + f.getName()); + } catch (IOException e) { + LOG.error("file error", e); + } + } + @Override public void onFetchActivityData() { queueWrite(new FileLookupAndGetRequest(FileHandle.ACTIVITY_FILE, this) { @@ -560,6 +582,10 @@ public class FossilWatchAdapter extends WatchAdapter { provider.addGBActivitySamples(samples); + if (saveRawActivityFiles) { + writeFile("activity_qhybrid", String.valueOf(System.currentTimeMillis()), fileData); + } + queueWrite(new FileDeleteRequest(getHandle())); GB.updateTransferNotification(null, "", false, 100, getContext()); GB.signalActivityDataFinish(getDeviceSupport().getDevice()); @@ -631,8 +657,20 @@ public class FossilWatchAdapter extends WatchAdapter { @Override public void onSendConfiguration(String config) { - setStepGoal(new ActivityUser().getStepsGoal()); - setVibrationStrengthFromConfig(); + switch (config) { + case DeviceSettingsPreferenceConst.PREF_VIBRATION_STRENGH_PERCENTAGE: { + setVibrationStrengthFromConfig(); + break; + } + case DeviceSettingsPreferenceConst.PREF_HYBRID_HR_SAVE_RAW_ACTIVITY_FILES: { + saveRawActivityFiles = getDeviceSpecificPreferences().getBoolean("save_raw_activity_files", false); + break; + } + case ActivityUser.PREF_USER_STEPS_GOAL: { + setStepGoal(new ActivityUser().getStepsGoal()); + break; + } + } } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil_hr/FossilHRWatchAdapter.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil_hr/FossilHRWatchAdapter.java index 685e68cdaf..1f9f3b6d60 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil_hr/FossilHRWatchAdapter.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil_hr/FossilHRWatchAdapter.java @@ -218,7 +218,6 @@ public class FossilHRWatchAdapter extends FossilWatchAdapter { super(deviceSupport); } - private boolean saveRawActivityFiles = false; private boolean notifiedAboutMissingNavigationApp = false; HashMap appIconCache = new HashMap<>(); @@ -562,15 +561,6 @@ public class FossilHRWatchAdapter extends FossilWatchAdapter { } } - private void setVibrationStrengthFromConfig() { - Prefs prefs = new Prefs(getDeviceSpecificPreferences()); - int vibrationStrengh = prefs.getInt(DeviceSettingsPreferenceConst.PREF_VIBRATION_STRENGH_PERCENTAGE, 2); - if (vibrationStrengh > 0) { - vibrationStrengh = (vibrationStrengh + 1) * 25; // Seems 0,50,75,100 are working... - } - setVibrationStrength((short) (vibrationStrengh)); - } - private void setUnitsConfig() { final DistanceUnit distanceUnit = GBApplication.getPrefs().getDistanceUnit(); int value = 8; // dont know what this bit means but it was set for me before tampering @@ -1316,8 +1306,9 @@ public class FossilHRWatchAdapter extends FossilWatchAdapter { } if (saveRawActivityFiles) { - writeFile(String.valueOf(System.currentTimeMillis()), fileData); + writeFile("activity_hr", String.valueOf(System.currentTimeMillis()), fileData); } + queueWrite(new FileDeleteRequest(fileHandle)); GB.updateTransferNotification(null, "", false, 100, getContext()); GB.signalActivityDataFinish(getDeviceSupport().getDevice()); @@ -1347,21 +1338,6 @@ public class FossilHRWatchAdapter extends FossilWatchAdapter { }); } - private void writeFile(String fileName, byte[] value) { - File activityDir = new File(getContext().getExternalFilesDir(null), "activity_hr"); - activityDir.mkdir(); - File f = new File(activityDir, fileName); - try { - f.createNewFile(); - FileOutputStream fos = new FileOutputStream(f); - fos.write(value); - fos.close(); - GB.toast("saved file data", Toast.LENGTH_SHORT, GB.INFO); - } catch (IOException e) { - LOG.error("file error", e); - } - } - private void syncSettings() { if (connectionMode == CONNECTION_MODE.NOT_AUTHENTICATED) { GB.toast(getContext().getString(R.string.fossil_hr_unavailable_unauthed), Toast.LENGTH_LONG, GB.ERROR); diff --git a/app/src/main/res/xml/devicesettings_fossilhybridhr_dev.xml b/app/src/main/res/xml/devicesettings_fossilhybridhr_dev.xml index 07dc846d23..53b0173f71 100644 --- a/app/src/main/res/xml/devicesettings_fossilhybridhr_dev.xml +++ b/app/src/main/res/xml/devicesettings_fossilhybridhr_dev.xml @@ -2,13 +2,6 @@ - - + + + + +