首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >华为手表2睡眠会话不在Google睡眠端点

华为手表2睡眠会话不在Google睡眠端点
EN

Stack Overflow用户
提问于 2020-11-13 11:46:12
回答 1查看 594关注 0票数 2

我们有一个连接到Google的应用程序,我们获得用户会话,比如睡眠活动(活动= 72)。在两年多的时间里,我们每天都在运行这个应用程序,拥有大约15.000名用户,能够无缝地工作。

我们最近在我们的应用程序中发现了一个用户,他有一个华为手表2 Pro,连接到Google。这个用户在他的手机上有睡眠会话,但是在Google (会话端点)中没有这些会话。

我们已经将相同的Googlefit帐户连接到第二个移动电话上,这样我们就可以验证会话是否在云中,而第二个移动电话已经能够加载所有睡眠会话;因此我们相信这些会话在云中,但我们不能将它们看作睡眠会话(通过会话端点)。

为了进一步分析,我们还从Google应用程序中插入了一个手动睡眠度量,它确实出现在Google中。因此,我们认为华为的应用程序如何在Google中节省睡眠时间是有帮助的。

因此,我们试图看看华为在哪里保存数据,如果它不是在睡眠会话。我们查看了dataSources、dataSources和dataset聚合:

https://www.googleapis.com/fitness/v1/users/userId/dataset:aggregate

对于请求体,以及我们知道的用户有一个睡眠会话的日期范围:

代码语言:javascript
运行
复制
{
  "aggregateBy": [{
    "dataSourceId": "raw:com.google.activity.segment:com.huawei.health:",
    "dataTypeName": "com.google.activity.segment"
  }],
 
  "bucketByTime": { "durationMillis": 86400000 },
  "startTimeMillis": 1603753199000, //GMT: Monday, 26 October 2020 22:59:59
  "endTimeMillis": 1603782000000   //GMT: Tuesday, 27 October 2020 7:00:00
}

我们获得了一系列的点,可以是睡眠会话,例如:响应:

代码语言:javascript
运行
复制
{
    "bucket": [
        {
            "startTimeMillis": "1603753199000",
            "endTimeMillis": "1603782000000",
            "dataset": [
                {
                    "dataSourceId": "derived:com.google.activity.summary:com.google.android.gms:aggregated",
                    "point": [
                        {
                            "startTimeNanos": "1603753380000000000",  //GMT: Monday, 26 October 2020 23:03:00
                            "endTimeNanos": "1603780140000000000", //GMT: Tuesday, 27 October 2020 6:29:00
                            "dataTypeName": "com.google.activity.summary",
                            "originDataSourceId": "raw:com.google.activity.segment:com.huawei.health:",
                            "value": [
                                {
                                    "intVal": 109,
                                    "mapVal": []
                                },
                                {
                                    "intVal": 20160000,
                                    "mapVal": []
                                },
                                {
                                    "intVal": 336,
                                    "mapVal": []
                                }
                            ]
                        },
                        {
                            "startTimeNanos": "1603755240000000000", //GMT: Monday, 26 October 2020 23:34:00
                            "endTimeNanos": "1603779600000000000", //GMT: Tuesday, 27 October 2020 6:20:00
                            "dataTypeName": "com.google.activity.summary",
                            "originDataSourceId": "raw:com.google.activity.segment:com.huawei.health:",
                            "value": [
                                {
                                    "intVal": 110,
                                    "mapVal": []
                                },
                                {
                                    "intVal": 6600000,
                                    "mapVal": []
                                },
                                {
                                    "intVal": 110,
                                    "mapVal": []
                                }
                            ]
                        },
                        {
                            "startTimeNanos": "1603781520000000000", //GMT: Tuesday, 27 October 2020 6:52:00
                            "endTimeNanos": "1603781880000000000", GMT: Tuesday, 27 October 2020 6:58:00
                            "dataTypeName": "com.google.activity.summary",
                            "originDataSourceId": "raw:com.google.activity.segment:com.huawei.health:",
                            "value": [
                                {
                                    "intVal": 7,
                                    "mapVal": []
                                },
                                {
                                    "intVal": 240000,
                                    "mapVal": []
                                },
                                {
                                    "intVal": 4,
                                    "mapVal": []
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

我们认为这些要点可能是睡眠期,因为:

com.huawei.health"

  • The
  • dataTypeName:"com.google.activity.segment“是睡眠会话,id数据源是华为"raw: com.google.activity.segment:前两个点的

小时是在晚上,在示例中,从第二天晚上23:03到早上6:20,这正是Google应用程序中用户的睡眠量。

  • 如果我们将前两个点的大值相加,得到的结果就是26760000/1000*3600 = 7.43 = 7h26m,这正是用户在Google应用程序

中为10月27日所做的测量。

然后:

睡眠会话是否在dataSource中而不是在睡眠会话中被收集?在Google应用程序中,我们能区分一下,这不是一个会话,而是一个数据集?为什么它不会在睡眠过程中被收集呢?这是华为的应用程序吗?我们如何才能真正知道这些数据集是睡眠会话?

EN

回答 1

Stack Overflow用户

发布于 2020-12-15 22:06:19

我使用Python通过从Oppo收集睡眠数据。

我不使用会话访问数据,我只使用数据集。

代码语言:javascript
运行
复制
source = "derived:com.google.sleep.segment:com.google.android.gms:sleep_from_activity<-raw:com.google.activity.segment:com.heytap.wearable.health:stream_sleep"

startEnd = "%s-%s" % (START, END)

dataset = fitService().users().dataSources().datasets().get(userId='me', dataSourceId=source, datasetId=startEnd ).execute()

然后,响应看起来如下(片段):

代码语言:javascript
运行
复制
"minStartTimeNs": "1607990400000000000",
    "maxEndTimeNs": "1608063421000000000",
    "dataSourceId": "derived:com.google.sleep.segment:com.google.android.gms:sleep_from_activity<-raw:com.google.activity.segment:com.heytap.wearable.health:stream_sleep",
    "point": [
        {
            "startTimeNanos": "1607992860000000000",
            "endTimeNanos": "1607994180000000000",
            "dataTypeName": "com.google.sleep.segment",
            "originDataSourceId": "raw:com.google.activity.segment:com.heytap.wearable.health:stream_sleep",
            "value": [
                {
                    "intVal": 4,
                    "mapVal": []
                }
            ],
            "modifiedTimeMillis": "1607996640613"
        },
        {
            "startTimeNanos": "1607994180000000000",
            "endTimeNanos": "1607994360000000000",
            "dataTypeName": "com.google.sleep.segment",
            "originDataSourceId": "raw:com.google.activity.segment:com.heytap.wearable.health:stream_sleep",
            "value": [
                {
                    "intVal": 5,
                    "mapVal": []
                }
            ],
            "modifiedTimeMillis": "1607996640613"
        },

这些点包括“轻度睡眠”(intVal 4)和“深度睡眠”(intVal) 5。我计算了每一段的光和深度段的数量和开始/结束时间。

使用此方法检索的所有段完全匹配Google应用程序和Oppo应用程序(HeyTap Health)中显示的内容。到目前为止,我没有任何问题。

我不知道这是否有帮助,但我认为最好是说我根本不使用“会议”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64820336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档