android - 使用 Android 加速度计的步检测器

标签 android accelerometer sensors

我正在构建一个应用程序,使用 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/

相关文章:

mobile - 是否有任何众所周知的算法来计算基于加速度计的步数?

android - Android 手机中的加速度计和陀螺仪及其功耗

Arduino 温度传感器

android - 传感器的方向类型

java - 改造查询链接

android - Android 服务的 START_STICKY 标志的精确语义

java - 如何在 Android java 中将 jpg 转换为 pdf

java - 如何解决定期通知不发送的问题

android - 不同移动设备中的加速度计和陀螺仪精度

python - 心电信号滤波