【问题标题】:How to accurately detect when phone has been tilted back and forth in Android如何在Android中准确检测手机何时来回倾斜
【发布时间】: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


【解决方案1】:

您不能使用 z 值来检测标题,因为加速度计值是根据设备坐标给出的。你应该改用倾斜的变化(见How to measure the tilt of the phone in XY plane using accelerometer in Android)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 2023-03-17
    • 2011-07-09
    相关资源
    最近更新 更多