【发布时间】:2019-09-12 17:43:27
【问题描述】:
我想在手机沿 YZ 轴来回倾斜时触发一些功能。如果您将手机放在脸前,则将其向后倾斜直到它几乎与地板平行,然后向后倾斜直到它与地板垂直。看下图,就是音高。
我试图通过只查看加速度计的 Z 值来做到这一点。从理论上讲,检测 Z 的变化应该足以检测音高的变化,但在实践中,基于采样率和变化的阈值,它是非常不稳定的。快速来回倾斜手机的人与缓慢地来回倾斜手机的人会产生不同的结果。我怎样才能做到不依赖采样率和倾斜阈值?
@Override
public void onSensorChanged(SensorEvent event) {
newZ = event.values[2];
if (Math.abs(oldZ - newZ) > 3) {
//do something
}
oldZ = newZ;
}
【问题讨论】:
-
加速度计读数中的噪音可以通过低通滤波器来减少检查built.io/blog/…
-
听起来您正在寻找没有加速的方向。您可能想考虑使用 Sensor Manager 的 getOrientation,或者您可以尝试使用 Gravity Sensor 监控轴
标签: android accelerometer android-sensors tilt