6

我想要

[1] 提高手机加速度计的采样率。(SENSOR_DELAY_FASTEST 在 Xperia 上提供最大约100Hz/在 Nexus4 上提供 180Hz,我希望延迟约为 1 毫秒或更短。

[2] 如果 [1] 不可能,我可以使速率恒定

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

上面的代码没有给我 10 毫秒的延迟。我知道这只是对 Android 的建议。

我知道手机内的这些加速度计能够提供更小的延迟。他们的数据表中提到了这一点。他们的任何方法或驱动程序/ADC 编程也是如此 [1] 或 [2]。我正在使用 ADT 工具。还有其他工具可以做到这一点吗?

PS:我读过

Android:如何提高加速度计采样率?

无法改变加速度计的速率

4

3 回答 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 级别 11)开始,您还可以将延迟指定为绝对值(以微秒为单位)。

但是您应该知道您指定的以微秒为单位的绝对值只是对 Android的建议。

于 2014-01-29T09:56:46.070 回答
4

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

[2] [简而言之]在(此)Android 上,您无法获得完美的准确性(读数之间的间隔)。

[2] [in long] 你需要定义perfect;也就是说,您必须定义您的精度。请注意,这永远不会是完美的 0;它从来都不是,即使在可以想象的最关键的应用程序中也是如此。根据我的经验,在 android 上,这甚至可以是一个完整的 100 毫秒。

[1] 如果您的应用程序不重要,即您只想分析一些历史数据,您可以尝试以下操作:保存每个读数及其时间戳;然后,以固定间隔进行插值;你将有一个完美的时间分布,但也有一个估计。

祝你好运,并询问是否有不清楚的地方。

于 2014-12-17T13:21:07.027 回答
2

https://github.com/dantasse/AccelerometerTest - 在这里您可以下载用于测试您的真实采样率的应用程序的源代码。我认为您在实践中无法达到 100Hz 或更高……我现在正在测试采样率。所以现在的答案不是——你无法实现 1 毫秒的延迟(即使在理论上)。

于 2013-11-06T14:34:50.800 回答