可以说,让加速度计每秒更新50次吗?我想这样做的原因是我想让加速度计运行,收集它记录的所有不同值,然后返回平均值。
我最初试图收集所有不同的值
yAverage = yAverage + new y;
然后将其除以记录不同记录数量的计数器。
counter++;
这两行代码都在“onSensorChanged”方法中,并且将始终一起执行(如果执行另一行,则也将执行而不会失败)
然而,我得到的结果是非常不一致的。如果我将电话平放在桌子上,它将计算几乎随机的平均值,即使传感器值永远不会改变,并且应始终返回相同的值。
有更好的方法来计算平均值吗?
我不知道它是否重要,但我使用浮动来存储记录的值并进行计算。
对谢里夫的回应:好吧,其中没有太多的代码,我有3个浮点值,可以从加速度计得到这样的值:
y=event.values[1];
它位于SensorEventListener内的“onSensorChanged”方法内。
我想伪代码会是这样的:
float yAverage = 0
onSensorChanged{
float y = event.values[1];
if (y < 0){
y = y * -1;
}
yAverage = yAverage + y;
counter++;
}
然后用另一种方法计算;
yAverage = yAverage / counter;
然后将其打印到屏幕上
这不是一个复杂的方法,但我无法弄清楚为什么它是如此不准确。
我不知道它是否是执行错误,但我认为这是一个逻辑错误
SensorManager mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
Sensor mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
public void onSensorChanged(SensorEvent event) {
float y = event.values[1];
if (y < 0){
y = y * -1;
}
yAverage = yAverage + y;
counter++;
}
摘要: