我正在创建一个应用程序,我需要根据设备的方向定位 ImageView。我使用来自磁场和加速度传感器的值来计算设备方向
SensorManager.getRotationMatrix(rotationMatrix, null, accelerometerValues, magneticFieldValues)
SensorManager.getOrientation(rotationMatrix, values);
double degrees = Math.toDegrees(values[0]);
我的问题是 ImageView 的定位对方向的变化非常敏感。使图像视图不断在屏幕上跳跃。(因为度数变化)
我读到这可能是因为我的设备靠近会影响磁场读数的东西。但这似乎并不是唯一的原因。
我尝试下载一些应用程序,发现“ 3D 指南针”和“指南针”的读数非常稳定(设置噪声过滤器时),我希望在我的应用程序中具有相同的行为。
我读到我可以通过添加“低通滤波器”来调整读数的“噪音”,但我不知道如何实现这一点(因为我缺乏数学)。
我希望有人可以帮助我在我的设备上创建一个更稳定的读数,设备的一点移动不会影响当前的方向。现在我做一个小
if (Math.abs(lastReadingDegrees - newReadingDegrees) > 1) { updatePosition() }
过滤掉一点噪音。但它不是很好用:)