【问题标题】:How to get Sleep data from Google Fit如何从 Google Fit 获取睡眠数据
【发布时间】:2017-12-07 02:34:44
【问题描述】:

我想在晚上 7 点(开始时间)到上午 11 点(结束时间)之间从 Google 健身 获取前一天的睡眠数据。 使用以下代码,我在午夜后获取数据。 例如,如果 Google fit 的睡眠时间是晚上 10 点,起床时间是早上 6 点;我是早上 12 点到 6 点。所以我在午夜之前没有得到睡眠数据。 请告诉我应该将什么时间设置为开始时间。这是我的 AsyncTask :

private class InsertAndVerifyDataTask extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
        fitSleepTime = 0;
        fitSleepStartTime = 0;
        fitWakeupTime = 0;
        super.onPreExecute();
    }

    protected Void doInBackground(Void... params) {

        Date now = new Date();
        long endTime, startTime;
        int hrOfDay;

        Calendar cal = Calendar.getInstance();
        cal.setTime(now);
        hrOfDay = cal.get(Calendar.HOUR_OF_DAY);
        cal.set(Calendar.HOUR_OF_DAY, 19);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        if (hrOfDay < 12)
            cal.add(Calendar.DAY_OF_YEAR, -1);
        startTime = cal.getTimeInMillis();
        sleepDayTime = MyApplication.sdf.format(cal.getTime());

        // cal.setTime(now);
        cal.set(Calendar.HOUR_OF_DAY, 23);
        cal.set(Calendar.MINUTE, 59);
        cal.set(Calendar.SECOND, 59);

        endTime = cal.getTimeInMillis();

        // Begin by creating the query.
        DataReadRequest readRequest = queryFitnessData(startTime, endTime);
        DataReadResult dataReadResult = Fitness.HistoryApi.readData(
                mClient, readRequest).await(1, TimeUnit.MINUTES);
        printData(dataReadResult);

        if (hrOfDay < 12) {
            Calendar cal1 = Calendar.getInstance();
            cal1.setTime(now);
            cal1.set(Calendar.HOUR_OF_DAY, 0);
            cal1.set(Calendar.MINUTE, 0);
            cal1.set(Calendar.SECOND, 0);
            startTime = cal1.getTimeInMillis();

            cal1.set(Calendar.HOUR_OF_DAY, 11);
            cal1.set(Calendar.MINUTE, 59);
            cal1.set(Calendar.SECOND, 59);

            endTime = cal1.getTimeInMillis();

            // Begin by creating the query.
            DataReadRequest readRequest1 = queryFitnessData(startTime, endTime);
            DataReadResult dataReadResult1 = Fitness.HistoryApi.readData(
                    mClient, readRequest1).await(1, TimeUnit.MINUTES);
            printData(dataReadResult1);
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        if (DashBoardSleepFragment.this.getView() != null) {
            getLastNightSleepData();
            setSleepData();
        }
        super.onPostExecute(result);
    }
}

【问题讨论】:

  • 尝试检查您是否有正确的record Fitness Data 进行睡眠活动。这是一个related SO post,关于 Google Fit API Sleep 在会话中插入和读取数据点。希望这会有所帮助。
  • 您解决了这个问题吗?我面临着同样的事情。如果您能发布解决方案,将不胜感激。
  • @Klaus 我已经发布了我的答案;希望它也对你有用!

标签: android google-fit


【解决方案1】:

我刚刚更改了 startTimeendTime,现在它工作正常 这是我的doInBackground

protected Void doInBackground(Void... params) {

        Date now = new Date();
        long endTime, startTime;
        int hrOfDay;

        Calendar cal = Calendar.getInstance();
        cal.setTime(now);
        hrOfDay = cal.get(Calendar.HOUR_OF_DAY);
        Log.e("hrOfDay", hrOfDay + "");
        cal.set(Calendar.HOUR_OF_DAY, 19);  //19 is my start time.
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        cal.add(Calendar.DAY_OF_YEAR, -1);
        startTime = cal.getTimeInMillis();

        Calendar cal1 = Calendar.getInstance();
        cal1.setTime(now);
        cal1.set(Calendar.HOUR_OF_DAY, 11);  //11 is my end time.
        cal1.set(Calendar.MINUTE, 0);
        cal1.set(Calendar.SECOND, 0);
        endTime = cal1.getTimeInMillis();

        // Begin by creating the query.
        DataReadRequest readRequest1 = queryFitnessData(startTime, endTime);
        DataReadResult dataReadResult1 = Fitness.HistoryApi.readData(
                mClient, readRequest1).await(1, TimeUnit.MINUTES);
        printData(dataReadResult1);
        return null;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 2022-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多