Google Fit SDK返回带有空DataPoints的数据集

时间:2018-05-19 04:19:21

标签: android google-fit

我在使用Google Fit SDK时遇到了问题,我试图从SDK中获取步骤历史记录。虽然我确实看到了返回的桶数,包括数据集。但是,即使我的Google Fit App上的步数计数器列在那里,所有数据集都根本不包含任何数据点。

这是我的代码。

Calendar calendar = Calendar.getInstance(new Locale("en", "US", "POSIX"));
    calendar.setTime(Utilities.generateDate(new Date(), Utilities.DATE_FORMAT_F));
    long endTime = calendar.getTimeInMillis();
    calendar.add(Calendar.YEAR, -1);
    long startTime = calendar.getTimeInMillis();

    DataSource ESTIMATED_STEP_DELTAS = new DataSource.Builder()
            .setDataType(DataType.TYPE_STEP_COUNT_DELTA)
            .setType(DataSource.TYPE_RAW)
            .setStreamName("estimated_steps")
            .setAppPackageName("com.google.android.gms")
            .build();
    DataReadRequest readRequest = new DataReadRequest.Builder()
            .aggregate(ESTIMATED_STEP_DELTAS,    DataType.AGGREGATE_STEP_COUNT_DELTA)
            .bucketByTime(1, TimeUnit.DAYS)
            .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
            .enableServerQueries()
            .build();


    Fitness.getHistoryClient(mContext, account)
            .readData(readRequest)
            .addOnSuccessListener(new OnSuccessListener<DataReadResponse>() {
                @Override
                public void onSuccess(DataReadResponse dataReadResponse) {
                    printData(dataReadResponse);
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Log.e(TAG, "onFailure()", e);
                }
            })
            .addOnCompleteListener(new OnCompleteListener<DataReadResponse>() {
                @Override
                public void onComplete(@NonNull Task<DataReadResponse> task) {
                    printData(task.getResult());
                }
            });

因此,我想知道我错过了哪一部分Google Fit SDK。 任何帮助,将不胜感激。另外,请注意我订阅了Google Fit SDK,我的Google健身应用程序实际上有步骤历史记录。

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以从

更改请求吗?
DataReadRequest readRequest = new DataReadRequest.Builder()
            .aggregate(ESTIMATED_STEP_DELTAS, DataType.AGGREGATE_STEP_COUNT_DELTA)
            .bucketByTime(1, TimeUnit.DAYS)
            .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
            .enableServerQueries()
            .build();

DataReadRequest readRequest = new DataReadRequest.Builder()
            .aggregate(DataType.TYPE_STEP_COUNT_DELTA, DataType.AGGREGATE_STEP_COUNT_DELTA)
            .bucketByTime(1, TimeUnit.DAYS)
            .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
            .enableServerQueries()
            .build();

,而不是传递数据源传递数据类型。