2011-01-05 90 views
2

写了一个打印出加速度计输出的简单程序。android加速度计精度极差

mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); 
mSensorManager.registerListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_FASTEST);  

事实证明:

  1. 加速度计的输出总是被设置为 “低”,通过决定:

    public void onAccuracyChanged(Sensor sensor, int accuracy) { 
        if (collectingData){ 
        accelPrecision.setText("accelerometer accuracy: " + accuracy); 
        } 
    } 
    
  2. 实际的加速度计读数是非常不准确的 - 约即使在桌子上休息时也有2%-5%的波动

据我可以告诉它是在Nexus S,Nexus One和G1

任何想法可能如何进行模式准确/什么设置一个

+1

加速度计精度为2%-5%相当不错。 – Falmarri 2011-01-05 22:28:07

+1

加速度计精度与硬件有关。这给出,这不是一个Android(软件)问题。 – 2011-01-06 00:15:11

回答

0

使用过滤器同样的问题。您正在查看原始数据,因此它当然会波动。像weighted averagemoving average就足够了。

+1

谢谢。但是为什么我闲置的Nexus S始终将精度报告为“0”(根据开发文档)“SENSOR_STATUS_UNRELIABLE” - 此传感器返回的值不可信,需要校准或环境不允许读数 – user564594 2011-01-13 16:32:03