安卓加速度计:采样率是多少?

6

我希望你能够增加手机加速度计的采样率。 (SENSOR_DELAY_FASTEST在Xperia上最高约为100Hz,在Nexus4上最高为180Hz,我希望延迟时间大约为1毫秒或更短,以适应我的工作需求。

如果 [1] 不可行,是否可以使速率保持恒定

mSensorManager.registerListener(this, mAccelerometer,10000);//10000 in microsec

上面的代码并不能给我10毫秒的延迟。我知道这只是对Android的建议。
我知道手机内部的加速度计能够提供更小的延迟,这在它们的数据手册中有提到。那么有没有方法或驱动程序/ADC编程来实现[1]或[2]呢? 我正在使用ADT工具。还有其他工具可以做到这一点吗?
附注:我已经阅读了 Android:如何增加加速度计采样率? 无法改变加速度计的采样率
3个回答

6

来自developer.android.com

数据延迟(或采样率)控制着传感器事件通过onSensorChanged()回调方法发送到您的应用程序的时间间隔。默认数据延迟适用于监测典型的屏幕方向变化,使用200,000微秒的延迟。您可以指定其他的数据延迟,例如SENSOR_DELAY_GAME(20,000微秒延迟)、SENSOR_DELAY_UI(60,000微秒延迟)或SENSOR_DELAY_FASTEST(0微秒延迟)。从Android 3.0(API Level 11)开始,您还可以将延迟指定为绝对值(以微秒为单位)。

但是您需要知道,您在微秒中指定的绝对值仅是对Android的一个建议


我知道这个,但我想要一个完美的恒定采样率。 - pxm

4

根据我的经验,以下是你可以做的。让我们从最简单的开始:

[2] [简而言之] 在 Android 上,你无法拥有完美的准确性(读数间隔)。

[2] [详细解释] 你需要定义精度;也就是说,你必须定义你的精度。请注意,即使在最关键的应用程序中,这永远不会是完美的0。根据我的经验,在Android上,这甚至可能是100毫秒。

[1] 如果你的应用程序不是关键的,即你只想分析一些历史数据,你可以尝试以下方法:保存每个读数及其时间戳;然后以固定间隔插值,你将得到完美的时间分布,但也会有估计误差。

祝你好运,如有不清楚的地方,请问我。


2

https://github.com/dantasse/AccelerometerTest - 这里可以下载一个测试实际采样率的应用程序源代码。我认为你无法在实践中达到100Hz或更高的采样率... 我现在正在测试采样率。 因此,目前的答案是否定的-即使在理论上也无法实现1毫秒的延迟。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接