加速度计数据,Z轴给出了错误的数据?

时间:2014-11-25 19:05:00

标签: java android accelerometer

我有一个用于保存加速度计和陀螺仪以及其他一些传感器数据的应用程序。 但是来自Z轴的加速度计数据是错误的,那么大......有时甚至X和Y数据也不会接近0,因为它们应该接近2-3 ...... Z轴给我近10的数据...... 代码中是否有错误或? 有什么想法吗?

数据样本:

0|19:57:55:584|-0.08912659|-0.015655518|9.652756
1|19:57:55:653|-0.021209717|0.008834839|9.677216
2|19:57:55:704|-0.035308838|0.032958984|9.677216
3|19:57:55:753|-0.035308838|0.048065186|9.658646
4|19:57:55:855|-0.015686035|0.012008667|9.666275
5|19:57:55:906|-0.027709961|-0.006378174|9.6380005
6|19:57:55:955|-0.0539093|-0.04698181|9.582184
7|19:57:56:057|-0.05491638|-0.0053100586|9.64032
8|19:57:56:109|-0.0789032|0.020812988|9.684845
9|19:57:56:164|-0.16851807|-0.02734375|9.640045
10|19:57:56:258|-0.10827637|-0.035888672|9.696838
11|19:57:56:308|-0.09414673|-0.038009644|9.72084
12|19:57:56:358|-0.0569458|-0.030395508|9.680252
13|19:57:56:459|-0.06288147|-0.0049591064|9.663452
14|19:57:56:509|-0.047302246|-0.015167236|9.665237
15|19:57:56:563|-0.11026001|0.006500244|9.676056

代码:

    @Override
public void onSensorChanged(SensorEvent event) {

    float x = event.values[0];
    float y = event.values[1];
    float z = event.values[2];
    SimpleDateFormat time = new SimpleDateFormat("HH:mm:ss:SSS");
    String s = time.format(new java.util.Date());
    try {
        writer.write(i+"|"+s+"|"+x+"|"+y+"|"+z+"\n");
    } catch (IOException e) {
        e.printStackTrace();
    }
    i++;
}

1 个答案:

答案 0 :(得分:0)

在Android上,onSensorChanged的加速度计结果以m / sec ^ 2为单位,其中引力常数G通常为9.81 m / sec ^ 2。请注意,这与iOS不同,其中加速度计API以G为单位返回数据。因此,要将数据转换为G单位,请将数据除以9.81 m / sec ^ 2。

另请注意,如果您的设备放置在平坦的表面上而不是移动,那么z轴总是会有一个作用于它的力,即重力。它将是-9.81或9.81,具体取决于您的设备是朝上还是朝下。