Health Connect: Fix HR sync for Coospo / GloryFit / Generic HR

This commit is contained in:
José Rebelo
2026-01-19 20:28:37 +00:00
parent a92ce9f1d5
commit 629dd12bfe
2 changed files with 3 additions and 9 deletions
@@ -33,9 +33,9 @@ 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.devices.AbstractSampleProvider
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator
import nodomain.freeyourgadget.gadgetbridge.devices.GlucoseSampleProvider
import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider
import nodomain.freeyourgadget.gadgetbridge.devices.TimeSampleProvider
import nodomain.freeyourgadget.gadgetbridge.entities.BaseActivitySummaryDao
import nodomain.freeyourgadget.gadgetbridge.entities.HealthConnectSyncState
@@ -650,7 +650,7 @@ class HealthConnectUtils {
is TimeSampleProvider<*> -> {
provider.firstSample?.timestamp?.takeIf { it > 0 }?.let { Instant.ofEpochMilli(it) }
}
is AbstractSampleProvider<*> -> { // For ActivitySample based providers
is SampleProvider<*> -> { // For ActivitySample based providers
provider.firstActivitySample?.timestamp?.takeIf { it > 0 }?.let { Instant.ofEpochSecond(it.toLong()) }
}
is BaseActivitySummaryDao -> {
@@ -680,7 +680,7 @@ class HealthConnectUtils {
is TimeSampleProvider<*> -> {
provider.latestSample?.timestamp?.takeIf { it > 0 }?.let { Instant.ofEpochMilli(it) }
}
is AbstractSampleProvider<*> -> { // For ActivitySample based providers
is SampleProvider<*> -> { // For ActivitySample based providers
provider.latestActivitySample?.timestamp?.takeIf { it > 0 }?.let { Instant.ofEpochSecond(it.toLong()) }
}
is BaseActivitySummaryDao -> {
@@ -21,12 +21,8 @@ import androidx.health.connect.client.permission.HealthPermission
import androidx.health.connect.client.records.HeartRateRecord
import androidx.health.connect.client.records.Record
import androidx.health.connect.client.records.metadata.Metadata
import nodomain.freeyourgadget.gadgetbridge.GBApplication
import nodomain.freeyourgadget.gadgetbridge.activities.HeartRateUtils
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample
import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs
import nodomain.freeyourgadget.gadgetbridge.util.Prefs
import nodomain.freeyourgadget.gadgetbridge.util.healthconnect.HealthConnectUtils
import org.slf4j.LoggerFactory
import java.time.Instant
@@ -56,8 +52,6 @@ internal object HeartRateSyncer : ActivitySampleSyncer {
}
// 2. Relevant Input Data Check
val prefs: Prefs = GBApplication.getPrefs()
val validHRSamples = deviceSamples
.filter { it.heartRate in 20..250 }
.sortedBy { it.timestamp }