需要快速阅读android传感器

时间:2009-12-16 18:28:05

标签: android

问题: -

  1. 我正在开发一个应用程序 每5个需要一个新的加速度数据 毫秒。
  2. 我的方法: -

    1. 我创建了一个远程服务 只读取加速度 来自SensorManager的数据。
    2. 我还将读取率设置为 “DELAY FASTEST”同时初始化 的SensorManager。
    3. 然后我用IPC来沟通我的 得到这些的主要应用 读数。
    4. 问题: -

      1. 如果我在里面放一个日志 onSensorChange()事件我收到了 每20毫秒时间新的传感器数据。但我每5毫秒需要一次数据。
      2. 问题?

        1. 有没有更好的阅读方法 传感器数据更快。

        2. 我有什么方法可以轮询 传感器数据而不是等待 用于触发的事件处理程序 事件

        3. 请帮助我找到一个更好的解决方案,在5毫秒的时间内读取数据或轮询加速度数据。

5 个答案:

答案 0 :(得分:7)

据我了解,加速度计噪音很大,不适合快速操作。请参阅http://www.youtube.com/watch?v=C7JQ7Rpwn2k上有关传感器融合的GoogleTech演讲,以获得更具说明性的解释以及您可以采取的措施。简短说明:使用陀螺仪进行高速事件,使用加速度计来校正漂移。

答案 1 :(得分:4)

对于今天引用这篇文章的人,虽然我认为@robinr有一个好点并且非常真实,但这不是一个答案,但是stackoverflow不会让我直接评论它。

有关第一个问题参考http://oval.sourceforge.net/userguide.html#interpreting-bean-validation-annotations的答案。 Native Activity。 Android不保证数据速率,只能确保您获得最低数量(或者如果请求过多则最高)。

加速度计 Not 噪音,至少今天没有。它只是擅长拿起一切。因此,如果您需要一个好的加速计算法,则需要使用一些过滤。如果您拥有出色的滤波器,加速度计实际上比其他所有产品更受欢迎,因为它通常是功率较低的传感器,具有最高的支持频率,并且最有可能在屏幕关闭时可用(与其他传感器相比)。

使用原生和提取最高频率的有力方法的警告是您的设备支持将受到限制。这就是Android不支持直接频率设置的原因。

回答问题2;你必须通过监控时间戳来手动控制传感器事件。

答案 2 :(得分:0)

关于Android SensorManager的速度,我更倾向于怀疑生成日志的Android文件I / O的速度。您可以尝试对传感器读取代码进行基准测试,而无需写入日志。记录当前时间(以毫秒为单位),然后执行1,000,000次传感器读取,然后再次记录当前时间。你可能仍然需要使用C版本来获取数据,但至少你肯定会知道瓶颈在哪里。

答案 3 :(得分:0)

我可以看到一些问题。首先,如果您试图快速强制轮询传感器数据,那么您很可能会陷入系统的其余部分。如果您所做的只是轮询可能正常的传感器,但如果您想要任何类型的用户交互,我不确定它是否会起作用。另外,为什么你需要快速的数据?如果你与人交往,就没有办法注意到甚至100毫秒的滞后。

答案 4 :(得分:0)

你解决了问题吗? 我有一个类似的项目,至少每10毫秒(约100赫兹)here获取样本。但是,即使我设置setEventRate = 10 milisec,我得到的样本也没有任何变化。

所以我认为有任何硬件限制,因为我读过BMA220 datasheet(我的传感器硬件)只为方向子模式提供62.5 Hz。