diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java index 88f596bd3..a81ab8f1f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java @@ -43,5 +43,6 @@ public class DeviceSettingsPreferenceConst { public static final String PREF_ALTITUDE_CALIBRATE = "pref_sensors_altitude"; public static final String PREF_LONGSIT_PERIOD = "pref_longsit_period"; public static final String PREF_LONGSIT_SWITCH = "pref_longsit_switch"; + public static final String PREF_LONGSIT_SWITCH_NOSHED = "screen_longsit_noshed"; public static final String PREF_DO_NOT_DISTURB_NOAUTO = "do_not_disturb_no_auto"; } \ No newline at end of file diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/tlw64/TLW64Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/tlw64/TLW64Coordinator.java index fb057f51b..d2b47f786 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/tlw64/TLW64Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/tlw64/TLW64Coordinator.java @@ -26,6 +26,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; 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; @@ -138,4 +139,13 @@ public class TLW64Coordinator extends AbstractDeviceCoordinator { public boolean supportsFindDevice() { return true; } -} + + @Override + public int[] getSupportedDeviceSpecificSettings(GBDevice device) { + return new int[]{ + R.xml.devicesettings_liftwrist_display_noshed, + R.xml.devicesettings_longsit_noshed, + R.xml.devicesettings_timeformat + }; + } +} \ No newline at end of file diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/tlw64/TLW64Support.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/tlw64/TLW64Support.java index 1a905894f..7576a2a58 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/tlw64/TLW64Support.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/tlw64/TLW64Support.java @@ -39,6 +39,7 @@ import java.util.UUID; import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.activities.SettingsActivity; +import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst; import nodomain.freeyourgadget.gadgetbridge.database.DBHandler; import nodomain.freeyourgadget.gadgetbridge.database.DBHelper; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventBatteryInfo; @@ -468,11 +469,24 @@ public class TLW64Support extends AbstractBTLEDeviceSupport { } else { displayBytes[1] = 2; } - if (DateFormat.is24HourFormat(getContext())) { - displayBytes[2] = 1; - } else { - displayBytes[2] = 2; + + String timeformat = GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()).getString(DeviceSettingsPreferenceConst.PREF_TIMEFORMAT, "auto"); + switch (timeformat) { + case "24h": + displayBytes[2] = 1; + break; + case "am/pm": + displayBytes[2] = 2; + break; + case "auto": + default: + if (DateFormat.is24HourFormat(getContext())) { + displayBytes[2] = 1; + } else { + displayBytes[2] = 2; + } } + transaction.write(ctrlCharacteristic, displayBytes); return; } @@ -493,7 +507,7 @@ public class TLW64Support extends AbstractBTLEDeviceSupport { (byte) 0x00, // unknown (byte) (activityUser.getStepsGoal() / 256), (byte) (activityUser.getStepsGoal() % 256), - (byte) 0x01, // raise hand to turn on screen, ON = 1, OFF = 0 + (byte) 0x00, // raise hand to turn on screen, ON = 1, OFF = 0 (byte) 0xff, // unknown (byte) 0x00, // unknown (byte) activityUser.getAge(), @@ -502,6 +516,10 @@ public class TLW64Support extends AbstractBTLEDeviceSupport { (byte) 0x02 // unknown }; + if (GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()).getBoolean(DeviceSettingsPreferenceConst.PREF_LIFTWRIST_NOSHED, false)) { + userBytes[10] = (byte) 0x01; + } + if (activityUser.getGender() == ActivityUser.GENDER_FEMALE) { userBytes[14] = 2; // female // default and factor from https://livehealthy.chron.com/determine-stride-pedometer-height-weight-4518.html @@ -520,7 +538,7 @@ public class TLW64Support extends AbstractBTLEDeviceSupport { builder.write(ctrlCharacteristic, userBytes); // device settings - builder.write(ctrlCharacteristic, new byte[]{ + byte[] deviceBytes = new byte[]{ TLW64Constants.CMD_DEVICE_SETTINGS, (byte) 0x00, // 1 - turns on inactivity alarm (byte) 0x3c, // unknown, sniffed by original app @@ -528,7 +546,13 @@ public class TLW64Support extends AbstractBTLEDeviceSupport { (byte) 0x03, // unknown, sniffed by original app (byte) 0x01, // unknown, sniffed by original app (byte) 0x00 // unknown, sniffed by original app - }); + }; + + if (GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()).getBoolean(DeviceSettingsPreferenceConst.PREF_LONGSIT_SWITCH_NOSHED, false)) { + deviceBytes[1] = (byte) 0x01; + } + + builder.write(ctrlCharacteristic, deviceBytes); } private void showIcon(int iconId) { diff --git a/app/src/main/res/xml/devicesettings_longsit_noshed.xml b/app/src/main/res/xml/devicesettings_longsit_noshed.xml new file mode 100644 index 000000000..71e346fdb --- /dev/null +++ b/app/src/main/res/xml/devicesettings_longsit_noshed.xml @@ -0,0 +1,9 @@ + + + +