【问题标题】:Read sensor data fast in Android在 Android 中快速读取传感器数据
【发布时间】:2015-04-20 06:53:04
【问题描述】:

我正在寻找一种获取传感器数据的方法(尤其是 光传感器)快速,比如说,采样率在 500Hz 左右。 我是 Android 的新手。我有 Nexus 5 和 Nexus 7 可以使用。 在没有访问驱动程序代码的情况下可以这样做吗? 提前谢谢你

【问题讨论】:

  • 你试过什么?为什么它应该很快?并且您需要清单权限。
  • 除非我们有源代码,否则它看起来是不可能的。我需要快速读取数据以检测光线的快速变化。你是什​​么意思清单许可?有什么建议么?非常感谢!
  • Stackoverflow 不是一个要求您提供应用程序所有源代码的网站。如果你是 android 新手,那么你应该从一些简单的东西开始......
  • 谢谢!但是我的项目需要它,所以我想找到一种处理它的方法。还是谢谢大家。

标签: android sensors light


【解决方案1】:

和官方文档一样,可以在registerListener中指定频率。

@Override
protected void onResume() {
    super.onResume();
    mSensorManager.registerListener(this, mLight,SensorManager.SENSOR_DELAY_NORMAL);
}

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

您指定的延迟只是建议的延迟。 Android 系统和其他应用程序可以更改此延迟。作为最佳实践,您应该尽可能指定最大延迟,因为系统通常使用比您指定的延迟更小的延迟(也就是说,您应该选择仍能满足应用程序需求的最慢采样率)。使用较大的延迟会降低处理器的负载,因此会消耗更少的电量。

如果您想要 500Hz,您可能需要使用 SENSOR_DELAY_FASTEST 来检查您可以获得的最快速率。如果有可能,那么您可以将值指定为 2,000 微秒延迟。

没有用于确定传感器框架向您的应用程序发送传感器事件的速率的公共方法;但是,您可以使用与每个传感器事件关联的时间戳来计算多个事件的采样率。设置后,您不必更改采样率(延迟)。如果由于某种原因您确实需要更改延迟,则必须取消注册并重新注册传感器侦听器。

【讨论】:

  • 谢谢。但我认为我们不能简单地将延迟设置为 2,000 微秒。
  • @ZYang 使用FASTEST,您可以尝试测试上限,然后也许您可以使用它。文档建议您可以自己指定时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多