android传感器使用注意事项
先说一个案例(自己的):
昨天写了一个收集数据的程序,加上后台服务,加上锁屏后数据的收集处理。一晚上完成了(刚开始接触andorid,比较菜)。然后开始收集数据了。由于采用20Hz的传感器数据采集频率,所以设置为50毫秒保存一次均值。这是一个小的基本算法。然后运行。结果发现每200ms收集一次数据。
要么1396511770050,1396511770250,1396511770450,1396511770650。。。
要么是1396511770150,1396511770350,1396511770550,1396511770750。。。
第一反应是自己的程序错了(因为肯定是自己程序错了,以前写的activity收集的数据是正常的),然后开始查啊查啊查,查到晚上10点半都没出结果。相当的郁闷也想不通。今天又重新看了一遍程序,然后对照老的程序,也没有发现问题。然后开始确定自己的程序出现在设置传感器敏感度上了。经过查治疗发现:
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 Level 11) 开始,你还可以直接指定延时值(微秒数)
好吧,然后找到原因了,设置为SENSOR_DELAY_FASTEST,然后直接成功了。不过为了节省电量,还是高频度的还是设置为20ms的SENSOR_DELAY_GAME比较好