Android SensorManager 与 Google 适合计步
Android SensorManager vs Google Fit for step count
我一直在研究如何在我的 Android 应用程序中读取步数,并在文档中找到了两种完全不同的方法:
val sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
val sensor: Sensor? = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER)
private class VerifyDataTask extends AsyncTask<Void, Void, Void> {
protected Void doInBackground(Void... params) {
long total = 0;
PendingResult<DailyTotalResult> result = Fitness.HistoryApi.readDailyTotal(mClient, DataType.TYPE_STEP_COUNT_DELTA);
DailyTotalResult totalResult = result.await(30, TimeUnit.SECONDS);
if (totalResult.getStatus().isSuccess()) {
DataSet totalSet = totalResult.getTotal();
total = totalSet.isEmpty()
? 0
: totalSet.getDataPoints().get(0).getValue(Field.FIELD_STEPS).asInt();
} else {
Log.w(TAG, "There was a problem getting the step count.");
}
Log.i(TAG, "Total steps: " + total);
return null;
}
}
没有迹象表明这两种方法之间的区别,有人知道吗:
- 他们是否从同一来源获取步数数据,即他们会提供相同的数字吗?
- Google Fit 条款和条件是否适用于使用 SensorManager 数据?
- 如果用户佩戴一个,是否都从 Wear OS 检索数据?
- 为什么有两种方法,有什么区别?
Similar question about heart rate here,但没有答案。非常感谢任何指导!
高层次:
SensorManager
让您可以直接访问可用于记录(除其他事项外)步数的传感器。这会实时为您提供未经处理的原始数据。
Google Fit 使用您设备上的传感器来收集(除其他外)步数。他们还(可能?)施展魔法来改进这些数据。并确保如果你和你的 phone 一起出去 运行 并且观看它只记录一次。 Google Google 健身可让您访问历史数据。
回答您的问题:
- Do they get step count data from the same source, i.e. will they give the same numbers?
是的,他们从同一来源获取数据。但是,在 Google Fit 中,您可以访问所有已连接设备的数据。在 SensorManager
中,您只能访问该特定设备上的数据。他们不一定会给出完全相同的数字。
- Does the Google Fit terms and conditions apply to using SensorManager data?
不,SensorManager
没有任何特定的条款和条件。它是 Android 平台的一部分,可以像其中的任何其他功能一样使用。
- Do both retrieve data from Wear OS if the user is wearing one?
如前所述,SensorManager
只记录代码为运行ning的设备上的数据。 Google Fit 能够从 Wear OS 设备收集数据,前提是用户对其进行了配置。
- Why are there two approaches, what's the difference?
我已经在上面解释了一些主要区别。回答"why":不同的应用行为需要不同的解决方案。有时 SensorManager
是最佳选择,有时 Google 适合。
我一直在研究如何在我的 Android 应用程序中读取步数,并在文档中找到了两种完全不同的方法:
val sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
val sensor: Sensor? = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER)
private class VerifyDataTask extends AsyncTask<Void, Void, Void> {
protected Void doInBackground(Void... params) {
long total = 0;
PendingResult<DailyTotalResult> result = Fitness.HistoryApi.readDailyTotal(mClient, DataType.TYPE_STEP_COUNT_DELTA);
DailyTotalResult totalResult = result.await(30, TimeUnit.SECONDS);
if (totalResult.getStatus().isSuccess()) {
DataSet totalSet = totalResult.getTotal();
total = totalSet.isEmpty()
? 0
: totalSet.getDataPoints().get(0).getValue(Field.FIELD_STEPS).asInt();
} else {
Log.w(TAG, "There was a problem getting the step count.");
}
Log.i(TAG, "Total steps: " + total);
return null;
}
}
没有迹象表明这两种方法之间的区别,有人知道吗:
- 他们是否从同一来源获取步数数据,即他们会提供相同的数字吗?
- Google Fit 条款和条件是否适用于使用 SensorManager 数据?
- 如果用户佩戴一个,是否都从 Wear OS 检索数据?
- 为什么有两种方法,有什么区别?
Similar question about heart rate here,但没有答案。非常感谢任何指导!
高层次:
SensorManager
让您可以直接访问可用于记录(除其他事项外)步数的传感器。这会实时为您提供未经处理的原始数据。
Google Fit 使用您设备上的传感器来收集(除其他外)步数。他们还(可能?)施展魔法来改进这些数据。并确保如果你和你的 phone 一起出去 运行 并且观看它只记录一次。 Google Google 健身可让您访问历史数据。
回答您的问题:
- Do they get step count data from the same source, i.e. will they give the same numbers?
是的,他们从同一来源获取数据。但是,在 Google Fit 中,您可以访问所有已连接设备的数据。在 SensorManager
中,您只能访问该特定设备上的数据。他们不一定会给出完全相同的数字。
- Does the Google Fit terms and conditions apply to using SensorManager data?
不,SensorManager
没有任何特定的条款和条件。它是 Android 平台的一部分,可以像其中的任何其他功能一样使用。
- Do both retrieve data from Wear OS if the user is wearing one?
如前所述,SensorManager
只记录代码为运行ning的设备上的数据。 Google Fit 能够从 Wear OS 设备收集数据,前提是用户对其进行了配置。
- Why are there two approaches, what's the difference?
我已经在上面解释了一些主要区别。回答"why":不同的应用行为需要不同的解决方案。有时 SensorManager
是最佳选择,有时 Google 适合。