在Android应用程序的加速度计读数中引入延迟的最佳方法是什么。
此代码将在意向服务中运行,并且它将运行很长一段时间(至少3-6小时)。我也想提高资源效率。
我现在正在使用Thread.Sleep()
,我想知道是否有更好的方法来做到这一点。
同样在文档中提供的示例中,他们使用高通滤波器来过滤掉重力。但是可以考虑3轴上所有读数的总和大于10并简单地从总和中减去该值吗? (我只对手机的净加速度而不是方向感兴趣。)
谢谢!
答案 0 :(得分:2)
亲爱的上帝不要使用睡眠来延迟加速计读数。这实际上不会延迟读数,只会让你对它们做出更慢的反应 - 系统仍会以相同的速率进行读数,实际上将它们排队。如果您想要更少的读数,请在设置传感器监听器时指定。它需要一个频率参数。
你不会将3加总并减去10-你将它们的平方相加并减去100(或者更准确地说,是9.8 ^ 2)。但即使这样也不是很正确,因为传感器并不完美,而静止设备可能无法准确读取9.8(特别是如果你不是在海平面 - 丹佛的重力比它在纽约)。相反,你应该采取长期平均值,并找出特定设备在休息时读取的内容。这可能是高通滤波器正在做的事情,尽管我必须看到代码才能确定。