Wrote a simple program that prints out accelerometer output.
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
mSensorManager.registerListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_FASTEST);
It turns out that:
The accelerometer output is always set to "lowest" as determined by:
public void onAccuracyChanged(Sensor sensor, int accuracy) { if (collectingData){ 开发者_开发百科accelPrecision.setText("accelerometer accuracy: " + accuracy); } }
The actual accelerometer readings are very inaccurate - about 2%-5% fluctuations even when it's resting on the table
as far as I can tell it's the same problem on Nexus S, Nexus One and G1
Any idea how it could be made mode accurate / what sets a
Use a filter. You are looking at raw data so of course its going to fluctuate. Something like a weighted average or a moving average will suffice.
精彩评论