diff --git a/app/build.gradle b/app/build.gradle index fffe7f3c..a238ccab 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -54,6 +54,7 @@ dependencies { compile 'com.github.PhilJay:MPAndroidChart:v2.2.4' compile 'com.github.pfichtner:durationformatter:0.1.1' compile 'de.cketti.library.changelog:ckchangelog:1.2.2' + compile 'net.e175.klaus:solarpositioning:0.0.9' } check.dependsOn 'findbugs', 'pmd', 'lint' diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DebugActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DebugActivity.java index d7d81f69..42f1c815 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DebugActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DebugActivity.java @@ -20,15 +20,20 @@ import android.widget.Button; import android.widget.EditText; import android.widget.Toast; +import net.e175.klaus.solarpositioning.DeltaT; +import net.e175.klaus.solarpositioning.SPA; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; +import java.util.GregorianCalendar; import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.database.DBHandler; import nodomain.freeyourgadget.gadgetbridge.database.DBHelper; +import nodomain.freeyourgadget.gadgetbridge.model.CalendarEventSpec; import nodomain.freeyourgadget.gadgetbridge.model.CallSpec; import nodomain.freeyourgadget.gadgetbridge.model.DeviceService; import nodomain.freeyourgadget.gadgetbridge.model.MusicSpec; @@ -36,6 +41,7 @@ import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec; import nodomain.freeyourgadget.gadgetbridge.model.NotificationType; import nodomain.freeyourgadget.gadgetbridge.util.FileUtils; import nodomain.freeyourgadget.gadgetbridge.util.GB; +import nodomain.freeyourgadget.gadgetbridge.util.Prefs; public class DebugActivity extends GBActivity { @@ -224,6 +230,36 @@ public class DebugActivity extends GBActivity { @Override public void onClick(View v) { GBApplication.deviceService().onSetTime(); + + //FIXME: dont do it here, make another button + + Prefs prefs = GBApplication.getPrefs(); + + float latitude = prefs.getFloat("location_latitude", 0); + float longitude = prefs.getFloat("location_longitude", 0); + final GregorianCalendar dateTime = new GregorianCalendar(); + GregorianCalendar[] sunriseTransitSet = SPA.calculateSunriseTransitSet(dateTime, latitude, longitude, DeltaT.estimate(dateTime)); + + if (sunriseTransitSet[0] != null) { + CalendarEventSpec calendarEventSpec = new CalendarEventSpec(); + calendarEventSpec.id = -1; + calendarEventSpec.type = CalendarEventSpec.TYPE_SUNRISE; + calendarEventSpec.timestamp = (int) (sunriseTransitSet[0].getTimeInMillis() / 1000); + calendarEventSpec.durationInSeconds = 0; + calendarEventSpec.title = "Sunrise"; + calendarEventSpec.description = null; + GBApplication.deviceService().onAddCalendarEvent(calendarEventSpec); + } + if (sunriseTransitSet[2] != null) { + CalendarEventSpec calendarEventSpec = new CalendarEventSpec(); + calendarEventSpec.id = -1; + calendarEventSpec.type = CalendarEventSpec.TYPE_SUNSET; + calendarEventSpec.timestamp = (int) (sunriseTransitSet[2].getTimeInMillis() / 1000); + calendarEventSpec.durationInSeconds = 0; + calendarEventSpec.title = "Sunset"; + calendarEventSpec.description = null; + GBApplication.deviceService().onAddCalendarEvent(calendarEventSpec); + } } }); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/EventHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/EventHandler.java index a6dd21bf..cc8486c9 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/EventHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/EventHandler.java @@ -6,6 +6,7 @@ import java.util.ArrayList; import java.util.UUID; import nodomain.freeyourgadget.gadgetbridge.model.Alarm; +import nodomain.freeyourgadget.gadgetbridge.model.CalendarEventSpec; import nodomain.freeyourgadget.gadgetbridge.model.CallSpec; import nodomain.freeyourgadget.gadgetbridge.model.MusicSpec; import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec; @@ -51,4 +52,6 @@ public interface EventHandler { void onScreenshotReq(); void onEnableHeartRateSleepSupport(boolean enable); + + void onAddCalendarEvent(CalendarEventSpec calendarEventSpec); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDeviceService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDeviceService.java index 61af3fcb..e2f0a220 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDeviceService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDeviceService.java @@ -10,6 +10,7 @@ import java.util.ArrayList; import java.util.UUID; import nodomain.freeyourgadget.gadgetbridge.model.Alarm; +import nodomain.freeyourgadget.gadgetbridge.model.CalendarEventSpec; import nodomain.freeyourgadget.gadgetbridge.model.CallSpec; import nodomain.freeyourgadget.gadgetbridge.model.DeviceService; import nodomain.freeyourgadget.gadgetbridge.model.MusicSpec; @@ -223,4 +224,16 @@ public class GBDeviceService implements DeviceService { .putExtra(EXTRA_BOOLEAN_ENABLE, enable); invokeService(intent); } + + @Override + public void onAddCalendarEvent(CalendarEventSpec calendarEventSpec) { + Intent intent = createIntent().setAction(ACTION_ADD_CALENDAREVENT) + .putExtra(EXTRA_CALENDAREVENT_ID, calendarEventSpec.id) + .putExtra(EXTRA_CALENDAREVENT_TYPE, calendarEventSpec.type) + .putExtra(EXTRA_CALENDAREVENT_TIMESTAMP, calendarEventSpec.timestamp) + .putExtra(EXTRA_CALENDAREVENT_DURATION, calendarEventSpec.durationInSeconds) + .putExtra(EXTRA_CALENDAREVENT_TITLE, calendarEventSpec.title) + .putExtra(EXTRA_CALENDAREVENT_DESCRIPTION, calendarEventSpec.description); + invokeService(intent); + } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/CalendarEventSpec.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/CalendarEventSpec.java new file mode 100644 index 00000000..7f52b2a2 --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/CalendarEventSpec.java @@ -0,0 +1,14 @@ +package nodomain.freeyourgadget.gadgetbridge.model; + +public class CalendarEventSpec { + public static final int TYPE_UNKNOWN = 0; + public static final int TYPE_SUNRISE = 1; + public static final int TYPE_SUNSET = 2; + + public int type; + public long id; + public int timestamp; + public int durationInSeconds; + public String title; + public String description; +} diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceService.java index 2cf979cd..927a258b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceService.java @@ -36,6 +36,7 @@ public interface DeviceService extends EventHandler { String ACTION_ENABLE_REALTIME_HEARTRATE_MEASUREMENT = PREFIX + ".action.realtime_hr_measurement"; String ACTION_ENABLE_HEARTRATE_SLEEP_SUPPORT = PREFIX + ".action.enable_heartrate_sleep_support"; String ACTION_HEARTRATE_MEASUREMENT = PREFIX + ".action.hr_measurement"; + String ACTION_ADD_CALENDAREVENT = PREFIX + ".action.add_calendarevent"; String EXTRA_DEVICE_ADDRESS = "device_address"; String EXTRA_NOTIFICATION_BODY = "notification_body"; String EXTRA_NOTIFICATION_FLAGS = "notification_flags"; @@ -65,6 +66,12 @@ public interface DeviceService extends EventHandler { String EXTRA_REALTIME_STEPS = "realtime_steps"; String EXTRA_TIMESTAMP = "timestamp"; String EXTRA_HEART_RATE_VALUE = "hr_value"; + String EXTRA_CALENDAREVENT_ID = "calendarevent_id"; + String EXTRA_CALENDAREVENT_TYPE = "calendarevent_type"; + String EXTRA_CALENDAREVENT_TIMESTAMP = "calendarevent_timestamp"; + String EXTRA_CALENDAREVENT_DURATION = "calendarevent_duration"; + String EXTRA_CALENDAREVENT_TITLE = "calendarevent_title"; + String EXTRA_CALENDAREVENT_DESCRIPTION = "calendarevent_description"; void start(); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java index 7738f40c..57f48fcd 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java @@ -32,6 +32,7 @@ import nodomain.freeyourgadget.gadgetbridge.externalevents.SMSReceiver; import nodomain.freeyourgadget.gadgetbridge.externalevents.TimeChangeReceiver; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.Alarm; +import nodomain.freeyourgadget.gadgetbridge.model.CalendarEventSpec; import nodomain.freeyourgadget.gadgetbridge.model.CallSpec; import nodomain.freeyourgadget.gadgetbridge.model.MusicSpec; import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec; @@ -41,6 +42,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.GB; import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs; import nodomain.freeyourgadget.gadgetbridge.util.Prefs; +import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.ACTION_ADD_CALENDAREVENT; import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.ACTION_APP_CONFIGURE; import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.ACTION_CALLSTATE; import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.ACTION_CONNECT; @@ -68,6 +70,12 @@ import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.EXTRA_APP import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.EXTRA_APP_START; import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.EXTRA_APP_UUID; import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.EXTRA_BOOLEAN_ENABLE; +import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.EXTRA_CALENDAREVENT_DESCRIPTION; +import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.EXTRA_CALENDAREVENT_DURATION; +import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.EXTRA_CALENDAREVENT_ID; +import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.EXTRA_CALENDAREVENT_TIMESTAMP; +import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.EXTRA_CALENDAREVENT_TITLE; +import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.EXTRA_CALENDAREVENT_TYPE; import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.EXTRA_CALL_COMMAND; import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.EXTRA_CALL_PHONENUMBER; import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.EXTRA_DEVICE_ADDRESS; @@ -265,6 +273,17 @@ public class DeviceCommunicationService extends Service implements SharedPrefere mDeviceSupport.onNotification(notificationSpec); break; } + case ACTION_ADD_CALENDAREVENT: { + CalendarEventSpec calendarEventSpec = new CalendarEventSpec(); + calendarEventSpec.id = intent.getLongExtra(EXTRA_CALENDAREVENT_ID, -1); + calendarEventSpec.type = intent.getIntExtra(EXTRA_CALENDAREVENT_TYPE, -1); + calendarEventSpec.timestamp = intent.getIntExtra(EXTRA_CALENDAREVENT_TIMESTAMP, -1); + calendarEventSpec.durationInSeconds = intent.getIntExtra(EXTRA_CALENDAREVENT_DURATION, -1); + calendarEventSpec.title = intent.getStringExtra(EXTRA_CALENDAREVENT_TITLE); + calendarEventSpec.description = intent.getStringExtra(EXTRA_CALENDAREVENT_DESCRIPTION); + mDeviceSupport.onAddCalendarEvent(calendarEventSpec); + break; + } case ACTION_REBOOT: { mDeviceSupport.onReboot(); break; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/ServiceDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/ServiceDeviceSupport.java index 8047aad6..166c65cb 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/ServiceDeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/ServiceDeviceSupport.java @@ -13,6 +13,7 @@ import java.util.UUID; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.Alarm; +import nodomain.freeyourgadget.gadgetbridge.model.CalendarEventSpec; import nodomain.freeyourgadget.gadgetbridge.model.CallSpec; import nodomain.freeyourgadget.gadgetbridge.model.MusicSpec; import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec; @@ -268,4 +269,12 @@ public class ServiceDeviceSupport implements DeviceSupport { } delegate.onEnableRealtimeHeartRateMeasurement(enable); } + + @Override + public void onAddCalendarEvent(CalendarEventSpec calendarEventSpec) { + if (checkBusy("add calendar event")) { + return; + } + delegate.onAddCalendarEvent(calendarEventSpec); + } } 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 2d97818d..393ad81a 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 @@ -32,6 +32,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.miband.VibrationProfile; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice.State; import nodomain.freeyourgadget.gadgetbridge.model.Alarm; +import nodomain.freeyourgadget.gadgetbridge.model.CalendarEventSpec; import nodomain.freeyourgadget.gadgetbridge.model.CalendarEvents; import nodomain.freeyourgadget.gadgetbridge.model.CallSpec; import nodomain.freeyourgadget.gadgetbridge.model.DeviceService; @@ -382,6 +383,11 @@ public class MiBandSupport extends AbstractBTLEDeviceSupport { } } + @Override + public void onAddCalendarEvent(CalendarEventSpec calendarEventSpec) { + // not supported + } + /** * Part of device initialization process. Do not call manually. * diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleProtocol.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleProtocol.java index 5d261e6a..83433496 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleProtocol.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleProtocol.java @@ -33,6 +33,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebbleColor; import nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebbleIconID; import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceApp; import nodomain.freeyourgadget.gadgetbridge.model.ActivityUser; +import nodomain.freeyourgadget.gadgetbridge.model.CalendarEventSpec; import nodomain.freeyourgadget.gadgetbridge.model.CallSpec; import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec; import nodomain.freeyourgadget.gadgetbridge.model.NotificationType; @@ -464,6 +465,24 @@ public class PebbleProtocol extends GBDeviceProtocol { } } + @Override + public byte[] encodeAddCalendarEvent(CalendarEventSpec calendarEventSpec) { + long id = calendarEventSpec.id != -1 ? calendarEventSpec.id : mRandom.nextLong(); + int iconId; + switch (calendarEventSpec.type) { + case CalendarEventSpec.TYPE_SUNRISE: + iconId = PebbleIconID.SUNRISE; + break; + case CalendarEventSpec.TYPE_SUNSET: + iconId = PebbleIconID.SUNSET; + break; + default: + iconId = PebbleIconID.TIMELINE_CALENDAR; + } + + return encodeTimelinePin(id, calendarEventSpec.timestamp, (short)calendarEventSpec.durationInSeconds, iconId, calendarEventSpec.title, calendarEventSpec.description); + } + @Override public byte[] encodeSetTime() { long ts = System.currentTimeMillis(); @@ -742,11 +761,11 @@ public class PebbleProtocol extends GBDeviceProtocol { return buf.array(); } - private byte[] encodeTimelinePin(int id, int timestamp, short duration, int icon_id, String title, String subtitle) { + private byte[] encodeTimelinePin(long id, int timestamp, short duration, int icon_id, String title, String subtitle) { final short TIMELINE_PIN_LENGTH = 46; icon_id |= 0x80000000; - UUID uuid = new UUID(mRandom.nextLong(), ((long) mRandom.nextInt() << 32) | id); + UUID uuid = new UUID(mRandom.nextLong(), id); byte attributes_count = 2; byte actions_count = 0; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleSupport.java index 74e4736d..7834161c 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleSupport.java @@ -12,6 +12,7 @@ import java.util.UUID; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.Alarm; +import nodomain.freeyourgadget.gadgetbridge.model.CalendarEventSpec; import nodomain.freeyourgadget.gadgetbridge.model.CallSpec; import nodomain.freeyourgadget.gadgetbridge.model.MusicSpec; import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec; @@ -118,4 +119,11 @@ public class PebbleSupport extends AbstractSerialDeviceSupport { public void onSetAlarms(ArrayList alarms) { //nothing to do ATM } + + @Override + public void onAddCalendarEvent(CalendarEventSpec calendarEventSpec) { + if (reconnect()) { + super.onAddCalendarEvent(calendarEventSpec); + } + } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/serial/AbstractSerialDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/serial/AbstractSerialDeviceSupport.java index 5dfa8b2a..dee77821 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/serial/AbstractSerialDeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/serial/AbstractSerialDeviceSupport.java @@ -8,6 +8,7 @@ import java.util.UUID; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEvent; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventSendBytes; import nodomain.freeyourgadget.gadgetbridge.devices.EventHandler; +import nodomain.freeyourgadget.gadgetbridge.model.CalendarEventSpec; import nodomain.freeyourgadget.gadgetbridge.model.CallSpec; import nodomain.freeyourgadget.gadgetbridge.model.MusicSpec; import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec; @@ -187,4 +188,9 @@ public abstract class AbstractSerialDeviceSupport extends AbstractDeviceSupport byte[] bytes = gbDeviceProtocol.encodeEnableRealtimeHeartRateMeasurement(enable); sendToDevice(bytes); } + @Override + public void onAddCalendarEvent(CalendarEventSpec calendarEventSpec) { + byte[] bytes = gbDeviceProtocol.encodeAddCalendarEvent(calendarEventSpec); + sendToDevice(bytes); + } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/serial/GBDeviceProtocol.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/serial/GBDeviceProtocol.java index bdf1b101..1005f980 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/serial/GBDeviceProtocol.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/serial/GBDeviceProtocol.java @@ -3,6 +3,7 @@ package nodomain.freeyourgadget.gadgetbridge.service.serial; import java.util.UUID; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEvent; +import nodomain.freeyourgadget.gadgetbridge.model.CalendarEventSpec; import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec; public abstract class GBDeviceProtocol { @@ -65,6 +66,10 @@ public abstract class GBDeviceProtocol { public byte[] encodeEnableRealtimeHeartRateMeasurement(boolean enable) { return null; } + public byte[] encodeAddCalendarEvent(CalendarEventSpec calendarEventSpec) { + return null; + } + public GBDeviceEvent[] decodeResponse(byte[] responseData) { return null; } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 133216e5..81974ec2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -34,11 +34,16 @@ General Settings Connect to device when Bluetooth turned on + Reconnect automatically Preferred Audioplayer Default + Date and Time Sync time Sync time to device when connecting and when time or timezone changes on Android + Latitude + Longitude + Theme Light Dark @@ -248,6 +253,5 @@ Firmware not sent Heart Rate Heart Rate - Reconnect automatically diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 4def8d01..cfac0fb2 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -32,6 +32,14 @@ android:key="datetime_synconconnect" android:summary="@string/pref_summary_datetime_syctimeonconnect" android:title="@string/pref_title_datetime_syctimeonconnect" /> + +