android加速计registerListener

时间:2012-03-30 01:36:48

标签: android accelerometer sampling

我是android的新手,正在研究加速度计。我想每秒收集20个x,y,z样本,为此我可以使用以下内容吗? int rate中的registerListener(SensorEventListener监听器,传感器传感器,int rate)可以使用3000000(微秒),这样我每3000000(微秒)或3秒就得到一个x,y,z值,所以它就像registerListener(这个,Accelerometer,3000000);并在1秒内得到20个x,y,z样本。如果我错了可以有人建议我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:6)

查看SensorManager.registerListener()

的Javadoc

你需要传入4个常量中的一个,你不能像你想要的那样输入任意值。

  

费率传感器事件在。这只是对系统的暗示。可以比指定的速率更快或更慢地接收事件。通常会更快地收到事件。该值必须是SENSOR_DELAY_NORMAL,SENSOR_DELAY_UI,SENSOR_DELAY_GAME或SENSOR_DELAY_FASTEST之一,或者是事件之间所需的延迟(以微秒为单位)。

所以示例调用可能如下所示:

registerListener(this, Accelerometer , SensorManager.SENSOR_DELAY_FASTEST);

编辑: Tim.footInMouth()我没有看到定义的最后部分。你实际上可以传递微秒。

我认为你的秒数的数学有点偏差

您需要每秒20个样本(1000毫秒)

所以你想要每50毫秒1个样本

microsecond是1/1000毫秒

所以1000微秒= 1毫秒

和50,000微秒= 50毫秒=每秒20次。

所以你的电话应该是:

registerListener(this, Accelerometer , 50000);