我正在使用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历史记录的可更新本地副本? 是否可以为此订阅任何可观察/回调?