【问题标题】:google fit request for per minute steps每分钟步数的 google fit 请求
【发布时间】:2016-07-29 19:35:11
【问题描述】:

我正在尝试读取过去 5 天的每分钟步数数据,但它每分钟仅返回 1 天的步数。下面是我用来获取每分钟最近 5 天步数的代码。

  1. 过去 5 天的步数
  2. 每分钟步数

    private void displayMinData() {
        Calendar cal = Calendar.getInstance();
        Date now = new Date();
        cal.setTime(now);
        long endTime = cal.getTimeInMillis();
    
        int lastSyncDays=5;
        cal.add(Calendar.DAY_OF_YEAR, lastSyncDays);
        long startTime = cal.getTimeInMillis();
        try {
            String strEndTime = millisToHMS(endTime);
            String strStartTime= millisToHMS(startTime);
        }
        catch(ParseException pe)
        {
        }
        catch(Exception e)
        {
        }
    
        java.text.DateFormat dateFormat = DateFormat.getDateInstance();
        Log.e("History", "Range Start: " + dateFormat.format(startTime));
        Log.e("History", "Range End: " + dateFormat.format(endTime));
    
        //Check how many steps were walked and recorded in the last 7 days
        DataReadRequest readRequest = new DataReadRequest.Builder()
                .aggregate(DataType.TYPE_STEP_COUNT_DELTA, DataType.AGGREGATE_STEP_COUNT_DELTA)
                .bucketByTime(1, TimeUnit.MINUTES)
                .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
                .build();
    
        DataReadResult dataReadResult = Fitness.HistoryApi.readData(mGoogleApiClient, readRequest).await(1, TimeUnit.MINUTES);
    
        //Used for aggregated data
        if (dataReadResult.getBuckets().size() > 0) {
            Log.e("History", "Number of buckets: " + dataReadResult.getBuckets().size());
            for (Bucket bucket : dataReadResult.getBuckets()) {
                List<DataSet> dataSets = bucket.getDataSets();
                for (DataSet dataSet : dataSets) {
                    showDataSet(dataSet);
                }
            }
        }
        //Used for non-aggregated data
        else if (dataReadResult.getDataSets().size() > 0) {
            Log.e("History", "Number of returned DataSets: " + dataReadResult.getDataSets().size());
            for (DataSet dataSet : dataReadResult.getDataSets()) {
                showDataSet(dataSet);
            }
        }
    }
    

【问题讨论】:

    标签: android google-fit


    【解决方案1】:

    所以我对相同的查询进行了测试,发现了一些可能有助于深入探索的东西。

    首先,我在您的代码中看到的一个问题是,您不是在询问 过去 5 天的步数,而是接下来 5 天的步数。您将当前时间加上 5 天,而不是减去它。

    int lastSyncDays=5;
    cal.add(Calendar.DAY_OF_YEAR, lastSyncDays);
    

    应该是

    int lastSyncDays=5;
    cal.add(Calendar.DAY_OF_YEAR, -lastSyncDays);
    

    在我的测试中,您可以查询的数据量似乎是有限的。当询问过去一天每分钟的累积步数时,结果很快就回来了,比 1 分钟的等待时间早得多。我尝试了 2 天,但请求超时。我尝试了 2 天,等待时间为 5 分钟,但请求仍然超时,所以我认为这不是问题。

    我尝试的另一件事是 2 天的累积步数,但使用 2 分钟存储桶而不是 1 分钟。结果与最初的 1 天请求一样快。我再次尝试了 4 天的请求,使用了 4 分钟的存储桶,结果是一样的。

    我不知道我们可以查询的确切限制,而且 Google 的文档在这方面似乎没有提供太多帮助。但也许您可以创建 5 个单独的请求,每个请求 1 天,然后合并数据以供您使用。一个请求似乎足够快,但我不确定使用多个请求与一个请求是否有任何后果(如果一个请求可以工作的话)。

    【讨论】:

      猜你喜欢
      • 2020-02-28
      • 1970-01-01
      • 1970-01-01
      • 2017-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-26
      相关资源
      最近更新 更多