下面的accel
,x
,y
和z
的值與預期不符。加速度計的值與傾斜儀一樣嗎?
它似乎是作爲傾斜傳感器而不是加速計。
當我把手機放在空中接住它時,accel
的值不會改變超過10%。與隨機旋轉手機時相比,我獲得了50-100%的更大變化!
有什麼可以解釋這一點?我只是想檢測手機何時處於自由落體狀態,(和/或影響什麼)。
SensorManager sm = (SensorManager)getSystemService(SENSOR_SERVICE);
Sensor sensor = sm.getDefaultSensor(SensorManager.SENSOR_ACCELEROMETER);
sm.registerListener(
sel = new SensorEventListener(){
@Override public void onAccuracyChanged(Sensor arg0, int arg1) {}
@Override public void onSensorChanged(SensorEvent arg0) {
double x = se.values[0];
double y = se.values[1];
double z = se.values[2];
double accel = Math.sqrt(
Math.pow(x, 2) +
Math.pow(y, 2) +
Math.pow(z, 2));
}
},
sensor,
SensorManager.SENSOR_DELAY_NORMAL
);
(作爲一個方面的問題,x的值,y和z似乎遠高於他們應該是,與accel
平均在50-80左右,站立時還是?難道不應該是大約9.8? )
x,y和z值似乎對手機方向的變化非常敏感,但並不代表加速度。我錯過了什麼?
示例值與手機還在,仰臥: 加速= 85.36,X = 6.8,Y = 45.25 Z = 30.125
當你把手機放在臉上時,你得到的實際值是多少?當你平躺在背上時,他們會改變什麼?我不知道你期望讀什麼單位,但看起來他們不是m/s^2。它們很可能直接從加速度輸出中縮放,並且很可能存在偏移量。 – AAT 2011-05-20 12:48:37