【问题标题】:Is there a way to read daily resting heart rate from the Google Fit API?有没有办法从 Google Fit API 读取每日静息心率?
【发布时间】:2019-11-05 15:47:04
【问题描述】:

iOS Google Fit 应用程序将静息心率显示为其指标之一(不过,我在 Android Google Fit 应用程序中没有看到它)。我想使用 Google Fit Data 在 Android 应用中显示静息心率。但是,Android Google Fit API 似乎没有提供这些数据。

我尝试了DataType.TYPE_HEART_RATE_BPM 和聚合DataType.TYPE_HEART_RATE_BPMDataType.AGGREGATE_HEART_RATE_SUMMARY 的读取请求,如下所示:

DataReadRequest.Builder()
                    .aggregate(DataType.TYPE_HEART_RATE_BPM, DataType.AGGREGATE_HEART_RATE_SUMMARY)
                    .bucketByTime(1, TimeUnit.DAYS)
                    .enableServerQueries()
                    .setTimeRange(startDate.time, endDate.time, TimeUnit.MILLISECONDS)
                    .build()

摘要给出了特定时间范围内的最低、最高和平均值,但不包括静息心率。有没有办法从 Google Fit Android API 获取计算出的静息心率?

【问题讨论】:

    标签: android google-fit


    【解决方案1】:

    我使用的是 Google Fit API,但使用的是 Python,所以我不确定这是否有帮助。

    我在 Google API 控制台中设置范围:

    https://www.googleapis.com/auth/fitness.heart_rate.read
    

    然后我选择此数据源来检索当天(或时间段)的静息心率 (RHR):

    derived:com.google.heart_rate.bpm:com.google.android.gms:resting_heart_rate<-merge_heart_rate_bpm
    

    JSON 响应如下,RHR 显示​​在“fpval”键中。

    {
        "minStartTimeNs": "1606262400000000000",
        "maxEndTimeNs": "1606344504000000000",
        "dataSourceId": "derived:com.google.heart_rate.bpm:com.google.android.gms:resting_heart_rate<-merge_heart_rate_bpm",
        "point": [
            {
                "startTimeNanos": "1606320000000000000",
                "endTimeNanos": "1606320000000000000",
                "dataTypeName": "com.google.heart_rate.bpm",
                "originDataSourceId": "derived:com.google.heart_rate.bpm:com.google.android.gms:resting_heart_rate<-merge_heart_rate_bpm",
                "value": [
                    {
                        "fpVal": 64.49201202392578,  <----- RHR
                        "mapVal": []
                    }
                ],
                "modifiedTimeMillis": "1606323455964"
            }
        ]
    }
    

    【讨论】:

    • 非常有帮助,这为我指明了正确的方向!
    【解决方案2】:

    据我所知,Android API 中没有用于静息心率的数据类型。根据李先生分享的信息,我推测dataSourceId 是由四个Android API 调用构成的。看来dataSourceId的组成如下:

    data source type:data type:app package name:stream name

    对应于:

    derived:com.google.heart_rate.bpm:com.google.android.gms:resting_heart_rate&lt;-merge_heart_rate_bpm

    这对应于 Android API 中的以下DataSource.Builder() 函数:

    这是我的解决方案:

    DataReadRequest.Builder()
            .aggregate(DataSource.Builder()
                .setType(DataSource.TYPE_DERIVED)
                .setDataType(DataType.TYPE_HEART_RATE_BPM)
                .setAppPackageName("com.google.android.gms")
                .setStreamName("resting_heart_rate<-merge_heart_rate_bpm")
                .build())
            .bucketByTime(1, TimeUnit.DAYS)
            .setTimeRange(start, end, TimeUnit.SECONDS).build()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-17
      相关资源
      最近更新 更多