如何从健康连接过滤手动步骤计数

问题描述 投票:0回答:0

我已进入2500个步骤,因为手动步骤以下是响应:

StepsRecord(startTime=2025-02-04T10:24:12.681Z, startZoneOffset=null, endTime=2025-02-04T10:54:12.682Z, endZoneOffset=null, count=2500, metadata=Metadata(id='c9196ccf-9fa5-4557-9651-7cdcb953ebeb', dataOrigin=DataOrigin(packageName='com.google.android.apps.fitness'), lastModifiedTime=2025-02-04T10:54:34.455Z, clientRecordId=null, clientRecordVersion=0, device=null, recordingMethod=0))

现在我诚实的进入自动输入如下

StepsRecord(startTime=2025-02-04T02:13:42.690Z, startZoneOffset=null, endTime=2025-02-04T02:14:42.691Z, endZoneOffset=null, count=20, metadata=Metadata(id='9752d916-b8f3-4c21-9a19-0e9471098346', dataOrigin=DataOrigin(packageName='com.google.android.apps.fitness'), lastModifiedTime=2025-02-04T02:31:05.696Z, clientRecordId=null, clientRecordVersion=0, device=null, recordingMethod=0))

任何专家Android Dev请提供帮助。预先感谢
    

counce可以获得数据,我们必须进一步判断并设定一个阈值,以判断用户的行为是否合规,但我们需要考虑如何设置数据,因为有很多因素,我只发表意见,您可以计算计算每分钟的步骤数,并确定平均每分钟的平均步数在合理范围内。如果平均步骤数为异常,则会跳过记录。

const val MIN_STEPS_PER_MINUTE = 0 const val MAX_STEPS_PER_MINUTE = 200 fun processStepsRecords(response: Response): Int { var totalSteps = 0 for (record in response.records) { if (record.metadata.recordingMethod == RECORDING_METHOD_AUTOMATICALLY_RECORDED) { val startTime = Instant.parse(record.startTime) val endTime = Instant.parse(record.endTime) val durationInMinutes = ChronoUnit.MINUTES.between(startTime, endTime) if (durationInMinutes > 0) { val stepsPerMinute = record.count / durationInMinutes if (stepsPerMinute in MIN_STEPS_PER_MINUTE..MAX_STEPS_PER_MINUTE) { totalSteps += record.count } else { Timber.w("Invalid steps per minute detected: $stepsPerMinute. Skipping this record.") } } else { Timber.w("Zero duration detected between start and end time. Skipping this record.") } } } Timber.d("total_steps_after_Wallet_creation:::$totalSteps") return totalSteps }
    

android kotlin healthconnect
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.