gpt4 book ai didi

java - 如何从 Google Fit REST API 获取总 sleep 时间

转载 作者:行者123 更新时间:2023-11-30 06:52:10 26 4
gpt4 key购买 nike

我用java尝试过

   String AccessToken = "TOKEN";
String ApiUrl = "https://www.googleapis.com/fitness/v1/users/me/sessions?startTime=2017-02-28T22:00:00.00Z&endTime=2017-03-01T10:59:59.99Z";
HttpClient httpclient = HttpClientBuilder.create().build();
try {
HttpGet httpPost = new HttpGet(ApiUrl);
httpPost.addHeader("Authorization", "Bearer " + AccessToken);
HttpResponse response = httpclient.execute(httpPost);
`enter code here` System.out.println("\nSending 'GET' request to URL : " + ApiUrl);
HttpEntity entity = response.getEntity();
BufferedReader rd = new BufferedReader(
new InputStreamReader(entity.getContent()));
String line;
while ((line = rd.readLine()) != null) {
System.out.println("line" + line);
}
} catch (Exception e) {
System.out.println("Exception at getDataFromUrl ,error is " + e.getMessage());
}

我收到了类似的回复

{
"session": [
{
"id": "Deep sleep141488319560000",
"name": "Deep sleep14",
"startTimeMillis": "1488319560000",
"endTimeMillis": "1488320700000",
"modifiedTimeMillis": "1488374094270",
"application": {
"packageName": "com.xiaomi.hm.health"
},
"activityType": 72
},
{
"id": "Deep sleep161488321420000",
"name": "Deep sleep16",
"startTimeMillis": "1488321420000",
"endTimeMillis": "1488322500000",
"modifiedTimeMillis": "1488374094280",
"application": {
"packageName": "com.xiaomi.hm.health"
},
"activityType": 72
},
{
"id": "Deep sleep201488328680000",
"name": "Deep sleep20",
"startTimeMillis": "1488328680000",
"endTimeMillis": "1488330360000",
"modifiedTimeMillis": "1488374094303",
"application": {
"packageName": "com.xiaomi.hm.health"
},
"activityType": 72
},
{
"id": "Light sleep131488318900000",
"name": "Light sleep13",
"startTimeMillis": "1488318900000",
"endTimeMillis": "1488319560000",
"modifiedTimeMillis": "1488374094265",
"application": {
"packageName": "com.xiaomi.hm.health"
},
"activityType": 72
}]}

但我想要充分 sleep 例如 7 小时 10 分钟

我正在使用的 API 是否正确,或者我是否缺少某些内容。

任何帮助表示赞赏。我是 Google 健身新手。

注意:这是java而不是Android。

最佳答案

您必须通过计算“endTimeMillis”和“startTimeMillis”之间的差值自行计算 sleep 持续时间,并将这些计算值汇总到您请求的范围内。这很简单,但也很棘手,因为存储的数据可能与源(将数据发送到 google fit 的应用程序)不同。

我也遇到了这个问题,但没有找到令人满意的、工作正常的解决方案。由于 sleep 数据不是“真实”数据类型(请参阅 https://developers.google.com/fit/rest/v1/data-types#public_data_types ),您无法确定应用程序是否在同一请求范围内发送重复值。就我而言,应用程序“xiaomi mi-fit”发送具有相同“startTimeMillis”和“endTimeMillis”的重复值,因此您必须在代码中检查这一点。否则您将得到不准确的 sleep 持续时间。

只要 Google 不支持将 sleep 数据作为官方数据类型,您就无法确定数据是否正确。此外:当不同的应用程序将其 sleep 数据发送到同一个 google fit 帐户时,数据不会被聚合,您必须通过过滤发送数据的包名称(应用程序)自行排序。

此外,Google 还删除了自己的 native 应用(版本 2.x)和 WebView ( https://fit.google.com ) 中 sleep 数据的可见性!

关于java - 如何从 Google Fit REST API 获取总 sleep 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42534346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com