From 4459b30ee666b7c6b4f319bf5c536c0f0a44e40d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Rebelo?= Date: Sun, 2 Jun 2024 22:01:57 +0100 Subject: [PATCH] Intent API: Add broadcast on activity sync finish --- .../service/devices/cmfwatchpro/CmfActivitySync.java | 1 + .../xiaomi/activity/XiaomiActivityFileFetcher.java | 1 + .../freeyourgadget/gadgetbridge/util/GB.java | 12 +++++++++++- app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/preferences.xml | 7 +++++++ 5 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/cmfwatchpro/CmfActivitySync.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/cmfwatchpro/CmfActivitySync.java index fb579d2f5..7959ec491 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/cmfwatchpro/CmfActivitySync.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/cmfwatchpro/CmfActivitySync.java @@ -489,6 +489,7 @@ public class CmfActivitySync { activitiesWithGps.clear(); + GB.signalActivityDataFinish(); getDevice().unsetBusyTask(); GB.updateTransferNotification(null, "", false, 100, getContext()); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/activity/XiaomiActivityFileFetcher.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/activity/XiaomiActivityFileFetcher.java index faad7ffae..1e3748621 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/activity/XiaomiActivityFileFetcher.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/activity/XiaomiActivityFileFetcher.java @@ -153,6 +153,7 @@ public class XiaomiActivityFileFetcher { if (fileId == null) { LOG.debug("Nothing more to fetch"); isFetching = false; + GB.signalActivityDataFinish(); mHealthService.getSupport().getDevice().unsetBusyTask(); GB.updateTransferNotification(null, "", false, 100, mHealthService.getSupport().getContext()); mHealthService.getSupport().getDevice().sendDeviceUpdateIntent(mHealthService.getSupport().getContext()); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/GB.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/GB.java index 802180277..41df59403 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/GB.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/GB.java @@ -64,6 +64,7 @@ import nodomain.freeyourgadget.gadgetbridge.model.DeviceService; import nodomain.freeyourgadget.gadgetbridge.service.DeviceCommunicationService; public class GB { + public static final String ACTION_ACTIVITY_SYNC = "nodomain.freeyourgadget.gadgetbridge.action.ACTIVITY_SYNC_FINISH"; public static final String NOTIFICATION_CHANNEL_ID = "gadgetbridge"; public static final String NOTIFICATION_CHANNEL_ID_CONNECTION_STATUS = "gadgetbridge connection status"; @@ -598,8 +599,17 @@ public class GB { } public static void signalActivityDataFinish() { - Intent intent = new Intent(GBApplication.ACTION_NEW_DATA); + final Intent intent = new Intent(GBApplication.ACTION_NEW_DATA); LocalBroadcastManager.getInstance(GBApplication.getContext()).sendBroadcast(intent); + + if (!GBApplication.getPrefs().getBoolean("intent_api_broadcast_activity_sync", false)) { + return; + } + + LOG.info("Broadcasting activity sync finish"); + + final Intent activitySyncFinishIntent = new Intent(ACTION_ACTIVITY_SYNC); + GBApplication.getContext().sendBroadcast(activitySyncFinishIntent); } public static boolean checkPermission(final Context context, final String permission) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9b2ebeb01..a95cc5273 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2511,6 +2511,8 @@ Allow triggering database export via Intent API Broadcast on database export Broadcast an intent when database export finishes + Broadcast on activity sync finish + Broadcast an intent when activity sync finishes for any device Allow Debug Commands Allow triggering debug menu commands via Intent API Shell Racing diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 3e1b6812b..8a675ca51 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -393,6 +393,13 @@ android:title="@string/intent_api_allow_activity_sync_title" app:iconSpaceReserved="false" /> + +