我正在构建一个应用程序,使用 Android 设备的加速度计来计算步数。(Android 版本 < .4.4)
为此,我使用 x、y 和 z 计算重力 (G)。如果 G 的值大于 STEP_THRESHOLD,则发生了一个步骤:
@Override
public void onSensorChanged(SensorEvent event) {
synchronized (this) {
if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER) {
return;
}
final float x = event.values[0];
final float y = event.values[1];
final float z = event.values[2];
final float g = Math.abs((x * x + y * y + z * z) / (SensorManager.GRAVITY_EARTH * SensorManager.GRAVITY_EARTH));
if (g > StepUtil.GRAVITY_THRESHOLD) {
/*
* check step times and other checkings
*/
.
.
.
stepCounter++;
}
}
}
问题是: 由于每个设备的加速计硬件各不相同,因此 STEP_THRESHOLD 没有确定的值。 似乎每个设备的 STEP_THRESHOLD 值应该是动态的! 是否有任何标准可以根据加速度计精度更改 STEP_THRESHOLD 值?
任何帮助将不胜感激。
最佳答案
since accelerometer hardwares is varies in each deviceو there is not a certain value for STEP_THRESHOLD
话虽如此,您的应用显然缺少的是简单的校准,它允许您的用户在其设备上设置阈值级别。告诉他们执行几个步骤,获取传感器值,获取平均值/中值/平均值(任何对您更有效的方法),然后您就得到了 STEP_THRESHOLD。您甚至可以将此值发送回您的服务器,以便您可以构建某种数据库并提供一些或多或少的通用起始值 STEP_AVERAGE。
关于android - 使用 Android 加速度计的步检测器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26782028/