【问题标题】:Reading Accelerometer data in Android在 Android 中读取加速度计数据
【发布时间】:2015-02-12 23:33:30
【问题描述】:

在 Android 应用程序的加速度计读数中引入延迟的最佳方法是什么。 此代码将在 Intent 服务中运行,并且会运行很长时间(至少 3-6 小时)。我也想让它资源高效。 我现在正在使用Thread.Sleep(),我想知道是否有更好的方法来做到这一点。

同样在文档中提供的示例中,他们使用高通滤波器来过滤掉重力。但是是否有可能认为 3 个轴上所有读数的总和大于 10,然后简单地从总和中减去该值? (我只对手机上的净加速度感兴趣,而不是方向)。

谢谢!

【问题讨论】:

    标签: android accelerometer


    【解决方案1】:

    亲爱的上帝,不要使用睡眠来延迟加速度计读数。这实际上不会延迟读数,它只会让您对它们的反应变慢 - 系统仍将以相同的速率进行读数并实际上将它们排队。如果您想要较少的读数,请在设置传感器侦听器时指定。它需要一个频率参数。

    您不会将 3 相加并减去 10,而是将它们的平方相加并减去 100(或更准确地说,9.8^2)。但即使这样也不完全正确,因为传感器并不完美,并且静止的设备可能无法准确读取 9.8(特别是如果您不在海平面上 - 丹佛的重力比纽约的重力小) .相反,您应该采用长期平均值并找出该特定设备在静止时读取的内容。这可能是高通滤波器正在做的事情,尽管我必须查看代码才能确定。

    【讨论】:

    • developer.android.com/guide/topics/sensors/… 这是文档的链接。如果你能看看它会非常有帮助。我想我必须在应用程序中添加一个校准步骤。我确实对睡眠产生了怀疑。感谢您确认。我想知道的是有没有办法配置读取之间的延迟?
    • 调用 registerListener 时,第三个参数是延迟。如果您需要在 Android 2.2 或更低版本上工作,您可以选择 3 个常量。在 2.3 及更高版本上,您还可以传入一个以微秒为单位的值来延迟读数。
    猜你喜欢
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多