目前使用Google Fit API并在使用Sensors API时遇到一些问题。我尝试将DISTANCE_DELTA和STEP_COUNT_DELTA放在一起。但是当我跑步时,我会步伐或只有距离。不是两个
Fitness.SensorsApi.findDataSources(client, new DataSourcesRequest.Builder()
.setDataTypes(DataType.TYPE_DISTANCE_DELTA,
DataType.TYPE_STEP_COUNT_DELTA,
DataType.TYPE_LOCATION_SAMPLE)
.setDataSourceTypes(DataSource.TYPE_RAW, DataSource.TYPE_DERIVED)
.build())
.setResultCallback(new ResultCallback<DataSourcesResult>() {
@Override
public void onResult(DataSourcesResult dataSourcesResult) {
datasources.clear();
listeners.clear();
for (DataSource dataSource : dataSourcesResult.getDataSources()) {
final DataType dataType = dataSource.getDataType();
if ( dataType.equals(DataType.TYPE_LOCATION_SAMPLE) ||
dataType.equals(DataType.TYPE_STEP_COUNT_DELTA)||
dataType.equals(DataType.TYPE_DISTANCE_DELTA)) {
final OnDataPointListener listener = new OnDataPointListener() {
@Override
public void onDataPoint(DataPoint dataPoint) {
String msg = "onDataPoint: ";
for (Field field : dataPoint.getDataType().getFields()) {
Value value = dataPoint.getValue(field);
msg += field + "=" + value + ", ";
Log.d(TAG, msg);
}
}
};
Fitness.SensorsApi.add(client,
new SensorRequest.Builder()
.setDataSource(dataSource)
.setDataType(dataType)
.setSamplingRate(5, TimeUnit.SECONDS)
.build(),
listener)
.setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(Status status) {
if (status.isSuccess()) {
listeners.add(listener);
Log.d(TAG, "Listener for " + dataType.getName() + " registered");
} else {
Log.e(TAG, "Failed to register listener for " + dataType.getName());
}
}
});
}
}
datasourcesListener.onDatasourcesListed();
}
});