Java 如何从Google Fit REST API获得总睡眠

Java 如何从Google Fit REST API获得总睡眠,java,rest,google-fit,Java,Rest,Google Fit,我用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()

我用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());
    }
我得到的回应是

但是我想获得总睡眠例如7小时10分钟

我使用的API是正确的还是遗漏了什么

谢谢你的帮助。我是谷歌飞度的新手


注意:这是java而不是Android。

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

我也遇到了这个问题,并没有找到一个令人满意的解决方案,但这是正确的。由于睡眠数据不是“真实”数据类型(请参阅),因此无法确保应用程序在相同的请求范围内发送重复的值。在我的例子中,应用程序“小米拟合”发送具有相同“startTimeMillis”和“endTimeMillis”的重复值,因此您必须在代码中检查这一点。否则你的睡眠时间就不准确了

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


此外,谷歌在他们自己的原生应用程序(2.x版)和WebView()中也删除了睡眠数据的可见性

关于这个话题有什么更新吗?我对使用API的响应感兴趣,因为我找不到如何检索信息或格式。我想知道,他们是完全放弃了fitness API,还是很快就会发布全新的内容。文档有时真的让我发疯
{
 "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
  }]}