Google Fit API心率数据中mapVal字段的含义及取值说明
Google Fit API 心率接口mapVal字段说明
字段具体作用
mapVal是Google Fit返回数据结构中Value对象的通用扩展字段,用于承载键值对格式的附加元数据,存放固定取值字段无法覆盖的自定义扩展属性。Value对象针对不同数据类型预设了固定取值字段,常规业务数据都会存在这些字段中:
- 浮点型数值存放在
fpVal,示例中的心率bpm值就使用该字段存储 - 整型数值存放在
intVal - 字符串值存放在
stringVal
对于com.google.heart_rate.bpm这类官方预定义的标准心率数据类型,常规返回中mapVal都会是空数组,和提供的示例表现一致——标准心率数据仅需通过fpVal返回每分钟心跳次数即可,不需要附加额外元数据。
合法取值规则
mapVal本身为数组结构,每个数组元素是一个键值对对象,固定包含两个属性:
key:字符串类型,对应元数据的键名value:嵌套的Value类型对象,和外层存储心率值的Value结构完全一致,支持存放浮点、整型、字符串甚至嵌套的mapVal内容
针对心率、步数、位置、睡眠等所有Google预定义的公开标准健康数据类型,Google没有公开定义
mapVal下的统一合法键值枚举,官方数据源、系统合并数据源返回的标准数据中该字段始终为空。
只有对接自定义数据类型、或者第三方私有数据源主动写入自定义扩展属性时,mapVal才会返回非空内容,此时具体的键名、取值规则完全由写入该条数据的数据源自行定义,不存在全局统一的合法值范围。
附:接口返回示例
{ "minStartTimeNs": "1636419661000000000", "maxEndTimeNs": "1636439595000000000", "dataSourceId": "derived:com.google.heart_rate.bpm:com.google.android.gms:merge_heart_rate_bpm", "point": [ { "startTimeNanos": "1636435597175000000", "endTimeNanos": "1636435597175000000", "dataTypeName": "com.google.heart_rate.bpm", "originDataSourceId": "raw:com.google.heart_rate.bpm:com.google.android.apps.fitness:user_input", "value": [ { "fpVal": 98.061103820800781, "mapVal": [] } ], "modifiedTimeMillis": "1636436192037" } ] }
内容的提问来源于stack exchange,提问作者Himanshu Dadhich
相关产品推荐
相关产品推荐

