2012-03-30 111 views
1

我是新来的android和加速度计的工作。我想每秒收集20个样本的x,y,z,为此我可以使用以下内容吗?我可以使用3000000(微秒)的registerListener(SensorEventListener监听器,传感器传感器,int rate),以便每3000000(微秒)或3秒得到一个x,y,z值,这样就像registerListener(this ,Accelerometer,3000000);并在1秒内获得20个x,y,z样本。如果我错了,谁能告诉我如何解决这个问题?android加速度计registerListener

+0

使用已过时'SensorEventListener'代替。 [安卓:我想动摇它] [1] [1]:http://stackoverflow.com/questions/2317428/android-i-want-to-shake-it – msysmilu 2015-01-21 12:34:51

回答

6

退房的Javadoc SensorManager.registerListener()

您需要在4个常量之一传递,就像你正在试图做的,你不能输入一个任意值。

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

这样的示例调用可能是这样的:

registerListener(this, Accelerometer , SensorManager.SENSOR_DELAY_FASTEST); 

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

我想你秒数学是取下一小

你想每秒20个样本(1000个milliiseconds)

所以,你要每样50毫秒

一个microsecond为1 /一毫秒的1000

所以1000微秒= 1 milisecond

和50000微秒= 50毫秒ond =每秒20次。

所以,你的电话应该是:

registerListener(this, Accelerometer , 50000); 
+0

谢谢非常多!你能建议我一种替代解决方案吗? – 2012-03-30 02:05:17

+0

您是否看到编辑后的部分?我认为这是你正在寻找的解决方案。 – FoamyGuy 2012-03-30 02:07:10

+0

谢谢。你太快了!所以这意味着在50000微秒之后public void onSensorChanged(SensorEvent event)会被调用吗?或者我错了?我只想存储每个具有50000微秒差分的样本的每个x,y,z样本值。 – 2012-03-30 02:15:45