2011-01-05 64 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