如何在 Google Fit Api 中区分手动添加的步骤和传感器记录的步骤
How to differentiate between manual added steps and sensor recorded steps in Google Fit Api
我在我的项目中使用 Google Fit Api 来获取用户的每日步数。但问题是,用户可以通过添加活动来手动输入步骤。当我检索每日步数时,Google 适合 Api 也 returns 手动添加的步数。
有什么方法可以区分手动添加的步数和传感器记录的步数吗?
基本上,Google Fit 文档中给出的示例说明您可以使用 this method.
获取设备的每日基本总步数
Your app can record the user's step count by using the Recording
API
to create a subscription to the DataType.TYPE_STEP_COUNT_CUMULATIVE
data type
在您的情况下,您将获得汇总数据,该数据是传感器记录的步骤和使用 History API 提取的数据的组合。
尝试查看您将需要的essential Google Fit API's:
这就是我解决这个问题的方法。
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
其中 returns 一个数据点包含每日总步数。
第二点->然后我改变了使用
获取每日步数的方式
Fitness.HistoryApi.readData
它 returns 包含每日步数块的数据点数组。每个数据点的 属性 为
dp.getOriginalDataSource().getStreamName()
你returns是哪种类型,要么是传感器记录的步骤,要么是使用输入。
这就是您可以过滤用户输入步骤以避免应用程序中的步骤被破解的方法。
我在我的项目中使用 Google Fit Api 来获取用户的每日步数。但问题是,用户可以通过添加活动来手动输入步骤。当我检索每日步数时,Google 适合 Api 也 returns 手动添加的步数。 有什么方法可以区分手动添加的步数和传感器记录的步数吗?
基本上,Google Fit 文档中给出的示例说明您可以使用 this method.
获取设备的每日基本总步数Your app can record the user's step count by using the Recording API to create a subscription to the
DataType.TYPE_STEP_COUNT_CUMULATIVE
data type
在您的情况下,您将获得汇总数据,该数据是传感器记录的步骤和使用 History API 提取的数据的组合。
尝试查看您将需要的essential Google Fit API's:
这就是我解决这个问题的方法。
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
其中 returns 一个数据点包含每日总步数。 第二点->然后我改变了使用
获取每日步数的方式Fitness.HistoryApi.readData
它 returns 包含每日步数块的数据点数组。每个数据点的 属性 为
dp.getOriginalDataSource().getStreamName()
你returns是哪种类型,要么是传感器记录的步骤,要么是使用输入。 这就是您可以过滤用户输入步骤以避免应用程序中的步骤被破解的方法。