观察Google健身记录中的数据更改

时间:2020-11-09 01:41:46

标签: java android kotlin google-fit

我正在使用Googlefit android SDK收集登录并获得适当权限的用户的数据。当用户注册时,我们将调用提供的history API来收集数据,如下所示。

DataReadRequest dataReadRequest = new DataReadRequest.Builder()
                   .read(HealthDataTypes.TYPE_BLOOD_PRESSURE)
                   .setTimeRange(1, currentDateTime, TimeUnit.MILLISECONDS)
                   .setLimit(1000)
                   .enableServerQueries()
                   .build();

    Fitness.getHistoryClient(this, getGoogleAccount())
        .readData(dataReadRequest)
        .addOnSuccessListener {
            @Override
            public void onSuccess(DataReadResponse dataReadResponse) {
                if (dataReadResponse.getBucket().size() > 0) {
                    for (Bucket bucket: response.getBuckets()) {
                        for (DataSet dataSet: bucket.getDataSets()) {
                            DateFormat dateFormat = getTimeInstance();

                            for (DataPoint dp: dataSet.getDataPoints()) {
                                Log.i(TAG, "Data point:");
                                Log.i(TAG, "\tType: " + dp.getDataType().getName());
                    
                                for (Field field: dp.getDataType().getFields()) {
                                    Log.i(TAG, "\tField: " + field.getName());
                                    Log.i(TAG, "\tValue: " + dp.getValue(field));
                              }
                           }
                       }

                   }
                }
            }
        }

这可以正常工作,以便首次获取用户的全部历史记录。 第一次之后,要求是在过去收集的数据中发生更新时,始终使我的本地数据库保持更新。我已经尝试了以下代码。

  DataUpdateListenerRegistrationRequest.Builder builder = new DataUpdateListenerRegistrationRequest.Builder();
  builder.setPendingIntent(pendingIntent);
  if(dataSource != null) { builder.setDataSource(dataSource); }
  if(dataType != null) { builder.setDataType(dataType); }

这有助于仅跟踪活动/值的有限类型。即使使用上面的代码片段,也无法访问HealthDataTypes.TYPE_BLOOD_PRESSURE。

还有其他方法可以使用此数据吗? 有没有人想保留Google Fit历史记录的可更新本地副本? 是否可以为此订阅任何可观察/回调?

0 个答案:

没有答案