我在下面的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
最佳答案
我不得不更换
Sensor sensor = sm.getDefaultSensor(SensorManager.SENSOR_ACCELEROMETER);
与
Sensor sensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
关于android - 加速度计的值像倾斜仪一样?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6072030/