我想同时从加速度计、陀螺仪和磁强计收集数据。我正在使用 SensorManager
基于 SensorEvent
. 问题是在给定的时间点我只能从一个传感器获取数据。所以在时间t1,我从加速器得到数据,在t2,我从陀螺仪得到数据,在t3,我从磁强计得到数据。
我的代码如下:
public void onSensorChanged(SensorEvent event) {
if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){
sText.setText("S: " + event.sensor.getStringType());
}
else if (event.sensor.getType() == Sensor.TYPE_GYROSCOPE){
sText.setText("S: " + event.sensor.getStringType());
}
else if(event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD){
sText.setText("S: " + event.sensor.getStringType());
}
}
我不需要在3个不同的时间处理3个传感器,而是希望能够在一个时间间隔内收集所有传感器的数据。这可能吗?
2条答案
按热度按时间eoigrqb61#
当传感器被改变时,你将得到与每一个传感器相关的所有事件。对于每个事件,
onSensorChanged
会接到电话的。如果您想一次访问所有这些事件,应该将它们放在某个缓冲区中。
一种方法如下
kyks70gy2#
有点晚,但可能对其他人有用-您可以使用简单的解决方法:
选择更新频率最高的传感器,并通过全局变量“同步”所有其他传感器数据。e、 g.(对于作为主传感器的加速计):
或者使用某种插值(线性或二次插值),但在这种情况下,您会得到一些延迟的电流传感器值。
也可以单独使用
SensorEventListener
对于每个传感器。