使用以下代码,我得到了自开始记录值以来的累积步骤。但我想只显示当前的步骤而不是累积的步骤。
@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常量,但这不起作用。使用History API在DataPointListener中调用readData方法失败了。当你获得所需的输出时,它会滞后很多,而且不应该做这样的事情。
另一种方法是在当天更改,我获取午夜累积步骤的数据,然后将其存储在SharedPreferences中。然后在onDatapoint期间从显示的累计值中减去此数字。
但是有比这更好的方法吗?
答案 0 :(得分:1)
根据第2步:使用Google健身历史记录API显示今天的数据,Google Fit for Android: History API提及:
开发人员的一个常见用例是需要当天的数据。幸运的是,Google通过添加
Fitness.HistoryApi.readDailyTotal
调用简化了这一过程,该调用创建了一个DailyTotalResult
对象,其中包含当天收集的数据。
示例代码,用于记录当天用户的步骤:
private void displayStepDataForToday() {
DailyTotalResult result = Fitness.HistoryApi.readDailyTotal( mGoogleApiClient, DataType.TYPE_STEP_COUNT_DELTA ).await(1, TimeUnit.MINUTES);
showDataSet(result.getTotal());
}
您也可以尝试此SO帖子中提供的解决方案 - How to get step count from Google Fit REST API like Google Fit app?。我希望这对你有用。
答案 1 :(得分:0)
注意:您必须考虑应用程序未开启几天。谷歌适合应该仍然记录步骤。存储的步骤应该添加应用程序未打开的所有日期的步骤。