diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java
index f76f4731f..dd383d033 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java
@@ -326,6 +326,26 @@ public class SettingsActivity extends AbstractSettingsActivity {
}
});
+ pref = findPreference("auto_fetch_interval_limit");
+ pref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object autoFetchInterval) {
+ String summary = String.format(
+ getApplicationContext().getString(R.string.pref_auto_fetch_limit_fetches_summary),
+ Integer.valueOf((String) autoFetchInterval));
+ preference.setSummary(summary);
+ return true;
+ }
+ });
+
+ int autoFetchInterval = GBApplication.getPrefs().getInt("auto_fetch_interval_limit", 0);
+ summary = String.format(
+ getApplicationContext().getString(R.string.pref_auto_fetch_limit_fetches_summary),
+ (int) autoFetchInterval);
+ pref.setSummary(summary);
+
+
+
final Preference displayPages = findPreference("bip_display_items");
displayPages.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
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 e2bdc2afc..3003a9394 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java
@@ -680,7 +680,7 @@ public class DeviceCommunicationService extends Service implements SharedPrefere
}
}
if (GBApplication.getPrefs().getBoolean("auto_fetch_enabled", false) &&
- coordinator != null && coordinator.supportsActivityDataFetching()) {
+ coordinator != null && coordinator.supportsActivityDataFetching() && mGBAutoFetchReceiver == null) {
mGBAutoFetchReceiver = new GBAutoFetchReceiver();
registerReceiver(mGBAutoFetchReceiver, new IntentFilter("android.intent.action.USER_PRESENT"));
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/receivers/GBAutoFetchReceiver.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/receivers/GBAutoFetchReceiver.java
index f632733f5..a77b643b7 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/receivers/GBAutoFetchReceiver.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/receivers/GBAutoFetchReceiver.java
@@ -20,20 +20,22 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.commons.lang3.time.DateUtils;
+import java.util.Date;
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.model.RecordedDataTypes;
public class GBAutoFetchReceiver extends BroadcastReceiver {
- private static final Logger LOG = LoggerFactory.getLogger(GBAutoFetchReceiver.class);
+ private Date lastSync = new Date();
@Override
public void onReceive(Context context, Intent intent) {
- //LOG.info("User is present!");
- GBApplication.deviceService().onFetchRecordedData(RecordedDataTypes.TYPE_ACTIVITY);
+ Date nextSync = DateUtils.addMinutes(lastSync, GBApplication.getPrefs().getInt("auto_fetch_interval_limit", 0));
+ if (nextSync.before(new Date())) {
+ GBApplication.deviceService().onFetchRecordedData(RecordedDataTypes.TYPE_ACTIVITY);
+ lastSync = new Date();
+ }
}
}
-
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 58ccb152b..1b574c87c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -202,6 +202,8 @@
Auto fetch activity data
Fetch happens upon screen unlock. Only works if a lock mechanism is set!
+ Minimum time between fetches
+ Fetches every %d minutes
Not connected
Connecting
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index bdf887b7b..1aba679db 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -535,6 +535,13 @@
android:key="auto_fetch_enabled"
android:title="@string/pref_auto_fetch"
android:summary="@string/pref_auto_fetch_summary"/>
+