我正在尝试阅读过去5天的每分钟步数,但每分钟只返回1天的步数。以下是我用来获取每分钟最后5天步骤的代码。
每分钟步数
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);
}
}
}
答案 0 :(得分:1)
所以我使用相同的查询进行了 little 测试,发现了一些可能更适合深入探索的内容。
首先,我在您的代码中看到的一个问题是,您不是要求过去 5天的步数,而是 next 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的文档在这方面似乎没有给予太多帮助。但也许您可以为每个1天创建5个单独的请求,并将数据组合起来供您使用。一个请求似乎足够快,但我不确定使用多个请求与一个请求是否有任何后果(如果一个请求可行)。