使用下面的代碼,我開始記錄值之後的累積步驟。但我只想顯示當天的步驟,而不是累計。在datapointListener中獲取當天的步驟Google Fit
@Override
public void onConnected(@Nullable Bundle bundle) {
DataSourcesRequest dataSourceRequest = new DataSourcesRequest.Builder()
.setDataTypes(DataType.TYPE_STEP_COUNT_CUMULATIVE)
.setDataSourceTypes(DataSource.TYPE_RAW)
.build();
ResultCallback<DataSourcesResult> dataSourcesResultCallback = new ResultCallback<DataSourcesResult>() {
@Override
public void onResult(DataSourcesResult dataSourcesResult) {
for(DataSource dataSource : dataSourcesResult.getDataSources()) {
if(DataType.TYPE_STEP_COUNT_CUMULATIVE.equals(dataSource.getDataType())) {
registerStepsDataListener(dataSource, DataType.TYPE_STEP_COUNT_CUMULATIVE);
}
}
}
};
Fitness.SensorsApi.findDataSources(googleApiClient, dataSourceRequest)
.setResultCallback(dataSourcesResultCallback);
Fitness.RecordingApi.subscribe(googleApiClient, DataType.TYPE_STEP_COUNT_DELTA)
.setResultCallback(subscribeResultCallback);
}
//onDataPointListener
@Override
public void onDataPoint(DataPoint dataPoint) {
for(final Field field : dataPoint.getDataType().getFields()) {
final Value value = dataPoint.getValue(field);
runOnUiThread(new Runnable() {
@Override
public void run() {
tvSteps.setText("Field: " + field.getName() + " Value: " + value.toString());
}
});
}
}
我試着更換dataType常量,但沒有奏效。在DataPointListener中使用History API調用readData方法失敗了。雖然你獲得了期望的產出,但它滯後很多,不應該做這樣的事情。
另一種方法是每天更改,我會在午夜獲取累積步驟的數據,然後將其存儲在SharedPreferences中。然後從累計顯示的onDatapoint中減去此數字。
但是有沒有比這更好的方法?
但是這個方法需要從一個asynctask中調用。我試着在onDataPoint裏面調用asynctask。因此,每一步asynctask都會被調用。但這會導致數據在人停止行走之前不會顯示。數據顯示非常間歇。 – suku