gpt4 book ai didi

android - 在 datapointListener google Fit 期间获取当天的步数

转载 作者:行者123 更新时间:2023-11-29 01:19:31 25 4
gpt4 key购买 nike

使用以下代码,我获得了自开始记录值以来的累积步数。但我只想显示当天的步数而不是累积步数。

@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());
}
});
}
}

我尝试替换数据类型常量,但这没有用。在 DataPointListener 中使用 History API 调用 readData 方法失败得很惨。当您获得所需的输出时,它会滞后很多,不应该做这样的事情。

另一种方法是在换日时,我在午夜获取累积步数的数据,然后将其存储在 SharedPreferences 中。然后从显示的累积值中减去 onDatapoint 期间的这个数字。

但是还有比这更好的方法吗?

最佳答案

基于第 2 步:使用 Google Fit History API 显示今天的数据,Google Fit for Android: History API提到:

One common use case developers have is needing data for the current day. Luckily, Google has made this easy by adding the Fitness.HistoryApi.readDailyTotal call, which creates a DailyTotalResult object containing data collected for the day.

记录用户当天步数的示例代码:

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? .我希望这对你有用。

关于android - 在 datapointListener google Fit 期间获取当天的步数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37771616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com