gpt4 book ai didi

android - 振动使加速度计给出错误的值

转载 作者:太空狗 更新时间:2023-10-29 14:28:58 26 4
gpt4 key购买 nike

我有一个简单的应用程序,可以读取加速器值(对于 x、y 和 z 轴)。但对于某些值(value),我以编程方式振动我的手机。因此,每当振动发生时,加速度计值都会在范围内上下波动。我想避免这种情况。请告诉我如何防止加速度计在振动模式下给出不同的结果。

public void onSensorChanged(SensorEvent event) {

if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER)
return;
switch (mDisplay.getRotation()) {
case Surface.ROTATION_0:
x = event.values[0];
y = event.values[1];
break;
case Surface.ROTATION_90:
x = -event.values[1];
y = event.values[0];
Log.i("ROT: ", "90");
break;
case Surface.ROTATION_180:
x = -event.values[0];
y = -event.values[1];
break;
case Surface.ROTATION_270:
x = event.values[1];
y = -event.values[0];
break;
}
}

谢谢。

最佳答案

您可以使用低通滤波器,这样您就可以滤除高振动。像这样:

float lastAccel[] = new float[3];
float accelFilter[] = new float[3];
accelFilter[0] = (float) (alpha * (accelFilter[0] + accelX - lastAccel[0]));
accelFilter[1] = (float) (alpha * (accelFilter[1] + accelY - lastAccel[1]));
accelFilter[2] = (float) (alpha * (accelFilter[2] + accelZ - lastAccel[2]));

关于android - 振动使加速度计给出错误的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8755971/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com