- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在研究如何在我的 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;
}
}
没有迹象表明这两种方法之间的区别,有人知道吗:
Similar question about heart rate here ,但没有答案。非常感谢任何指导!
最佳答案
在高层次上:
SensorManager
让您可以直接访问可用于记录(除其他事项外)步数的传感器。这会实时为您提供未经处理的原始数据。
Google 健身使用您设备上的传感器来收集(除其他外)步数。他们还(可能?)施展魔法来改进这些数据。并确保如果你带着手机出去运行并观看它只记录一次。 Google 健身可让您访问历史数据。
回答您的问题:
- Do they get step count data from the same source, i.e. will they give the same numbers?
是的,他们从同一来源获取数据。但是,在 Google 健身中,您可以访问所有已连接设备的数据。在 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
仅记录运行代码的设备上的数据。 Google Fit 能够从 Wear OS 设备收集数据,前提是用户对其进行了配置。
- Why are there two approaches, what's the difference?
我已经在上面解释了一些主要区别。回答“为什么”:不同的应用程序行为需要不同的解决方案。有时 SensorManager
是最佳选择,有时 Google Fit 是。
关于Android SensorManager 与 Google Fit 的步数对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60970613/
我不确定如何根据输入大小 N 确定运行时间,尤其是当它进入具有某些限制的循环时。这就是我尝试过的。我猜常数是正确的。它看起来如何? i = 1;
我想检索 1 小时前的步数。我不需要做任何特别的事情,我只需要知道用户自上一小时以来完成了多少步。 即使我的 iPhone 记录了一些步数,检索步数的查询返回“nil”。 这是代码: let c
我正在为 Android Wear 开发一款面部 watch 。我想读取 watch 计算的步数(显示在卡上的步数)。是否有任何简单的方法来访问数据?我的研究表明我可以创建自己的步数计数器(由于准确性
我是一名优秀的程序员,十分优秀!