Jam*_*len 2 android sensormanager google-fit wear-os
我一直在研究如何在 Android 应用程序中读取步数,并在文档中找到了两种完全不同的方法:
val sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
val sensor: Sensor? = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER)
Run Code Online (Sandbox Code Playgroud)
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;
}
}
Run Code Online (Sandbox Code Playgroud)
没有任何迹象表明这两种方法之间的区别,有人知道吗:
关于心率的类似问题在这里,但没有答案。非常感谢任何指导!
在高层次上:
SensorManager让您可以直接访问可用于记录(除其他外)步数的传感器。这将为您提供实时的原始、未处理的数据。
Google Fit 使用您设备上的传感器来收集(除其他外)步数。他们还(可能?)做了一些魔法来改进这些数据。并确保如果您同时携带手机和手表出去跑步,它只会记录一次。Google Fit 可让您访问历史数据。
回答您的问题:
- 他们是否从同一来源获得步数数据,即他们会给出相同的数字吗?
是的,他们从同一来源获取数据。但是,在 Google Fit 中,您可以访问所有连接设备的数据。您SensorManager只能访问该特定设备上的数据。他们不一定会给出完全相同的数字。
- Google Fit 条款和条件是否适用于使用 SensorManager 数据?
不,SensorManager没有任何特定的条款和条件。它是 Android 平台的一部分,可以像其中的任何其他功能一样使用。
- 如果用户佩戴了 Wear OS,两者都会从 Wear OS 检索数据吗?
如上所述,SensorManager仅记录运行代码的设备上的数据。如果用户进行了配置,Google Fit 能够从 Wear OS 设备收集数据。
- 为什么有两种方法,有什么区别?
我已经解释了上面的一些关键区别。回答“为什么”:不同的应用程序行为需要不同的解决方案。有时SensorManager是最好的选择,有时 Google Fit 是最好的选择。
| 归档时间: |
|
| 查看次数: |
891 次 |
| 最近记录: |