每秒获取传感器数值

5

有没有办法能够每秒获取传感器读数?SENSOR_DELAY_NORMAL速率是多少秒?

sm=(SensorManager)getSystemService(SENSOR_SERVICE);
accelerometer=sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sm.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL);

传感器类型为:SENSOR.TYPE_ACCELEROMETER 传感器延迟为NORMAL,为161毫秒 传感器延迟为UI,为20毫秒 传感器延迟为GAME,为20毫秒 传感器延迟为FASTEST,为20毫秒,但我不确定是否可以改变这个值。 - Laurence Nicolaou
3个回答

7

谢谢,这也回答了我的问题。我一直在使用1000,看来这些值是以微秒为单位的。

 SENSOR_DELAY_UI      (60,000 microsecond delay)
 SENSOR_DELAY_FASTEST (0 microsecond delay)
 SENSOR_DELAY_NORMAL) (200,000 microseconds delay)

因此,我需要使用一个恒定的1,000,000微秒。

(意思是在IT技术中,需要使用一个固定的时间间隔来完成某些操作)

@Soner Gönül,将<SENSOR_DELAY_NORMAL>设置为1000000真的有效吗?对我来说,即使将延迟频率值设置为1,000,000,它仍然每秒提供>20条记录。最终,我不得不引入逻辑,通过聚合每秒的所有传感器记录并对其进行平均处理,以便进行进一步使用。 - Ravi Verma
文档中写道:两个连续事件之间所需的延迟时间(以微秒为单位)。这只是对系统的提示。事件可能比指定的速率更快或更慢地接收到。通常情况下,事件会更快地接收到。可以是SENSOR_DELAY_NORMAL、SENSOR_DELAY_UI、SENSOR_DELAY_GAME、SENSOR_DELAY_FASTEST或以微秒为单位的延迟时间。 - Jon Zangitu

6
SENSOR_DELAY_*中指定的延迟仅是建议的延迟,实际结果可能更快或更慢。如果您每秒只需要一次读数,则可以使用最慢的速率(SENSOR_DELAY_NORMAL),它应该每秒更新约5次。但是,如果您想每秒执行一次某项操作,则需要自己计时。 http://developer.android.com/guide/topics/sensors/sensors_overview.html

1
sm.registerListener(this, accelerometer, 1000)会每秒返回加速度值吗? - Laurence Nicolaou
4
从API 11开始,似乎可以设置绝对值。因此,是的,这应该大约每秒触发一次。但无论如何,不要期望这非常精确。 - Ivan Shagin

0

SENSOR_DELAY_UI(60,000微秒延迟) SENSOR_DELAY_FASTEST(0微秒延迟) SENSOR_DELAY_NORMAL(200,000微秒延迟)


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