【问题标题】:Accuracy problems using accelerometer android使用加速度计android的精度问题
【发布时间】:2015-01-15 19:33:35
【问题描述】:

我正在开发一个简单的计数器应用程序,当用户将手机沿 x 轴(正或负)移动约 90 度时进行计数。我正在使用加速度计来测量通过移动手机和使用此功能引起的加速度用于计数。 但是有一个问题,准确度不好,有时不计,有时计两次。 这是我的代码,我想知道是否有办法获得良好的准确性?

@Override
protected void onResume() {
    super.onResume();
    SnManager.registerListener(this,acc,SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
public void onSensorChanged(SensorEvent event) {
    if(!stop) {
        if (event.values[0] > 14) {
            Count++;
            txt_count.setText("" + Count);
            values.add("OK");
        }
        values.add(""+event.values[0]);
        lst.invalidate();
    }
}

【问题讨论】:

标签: android accelerometer


【解决方案1】:

您可以检查事件时间戳以确定它是否是已测量的值,但我建议您实施一种平滑处理,例如过去 3-5 个值的滚动平均值。这使您的价值观更加顺畅和更好地处理。 这是一个带有双值的示例,您可以更改为您想要的任何内容: '

public class Rolling {
    private int size;
    private double total = 0d;
    private int index = 0;
    private double samples[];
    public Rolling(int size) {
        this.size = size;
        samples = new double[size];
        for (int i = 0; i < size; i++) samples[i] = 0d;
    }

    public void add(double x) {
        total -= samples[index];
        samples[index] = x;
        total += x;
        if (++index == size) index = 0; 
    }

    public double getAverage() {
        return total / size;
    }   
}

'

您需要进一步的帮助吗?

【讨论】:

  • 结合你的两个答案并删除其中一个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-04
  • 2011-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多