我在我的项目中使用Google来获取用户的日常步骤。但问题是,用户可以通过添加活动手动输入这些步骤。当我检索日常步骤时,Google也会返回手动添加的步骤。是否有任何方法区分手动添加的步骤和传感器记录的步骤。
发布于 2019-01-09 14:36:20
我就是这样解决这个问题的。
final DataReadRequest readRequest = new DataReadRequest.Builder()
.read(googleFitUtils.getEstimatedSteps())
.setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
.build();
DataReadResult dataReadResult =
Fitness.HistoryApi.readData(mGoogleApiFitnessClient, readRequest).await(1, TimeUnit.MINUTES);
DataSet stepData = dataReadResult.getDataSet(DataType.TYPE_STEP_COUNT_DELTA);
int totalSteps = 0;
for (DataPoint dp : stepData.getDataPoints()) {
for(Field field : dp.getDataType().getFields()) {
int steps = dp.getValue(field).asInt();
if (!"user_input".equals(dp.getOriginalDataSource().getStreamName()))
totalSteps += steps;
}
}
第一点->在我获得所有步骤之前
Fitness.HistoryApi.readDailyTotal
它返回一个数据点,其中包含每天的总步骤。第二点->然后我改变了方法,使每天的步骤使用
Fitness.HistoryApi.readData
它返回数据点数组,并包含每天的步骤块。每个数据点的属性为
dp.getOriginalDataSource().getStreamName()
这会返回类型,或者是传感器记录的步骤,或者是一个使用输入。这就是如何过滤用户输入步骤以避免应用程序中的步骤被黑客攻击的方法。
https://stackoverflow.com/questions/54093789
复制相似问题