2012-09-07 43 views
5

我正在尝试创建一个应用程序来监视振动。我使用加速计来完成这项工作,当记录的加速度超过一定的阈值时,我称之为触发器。当出现触发时,我想在触发时刻将加速度,磁场,光照水平数据(来自不同传感器)记录到文件中。在Android中同时获取多个传感器数据

现在的问题是:我可以从单个传感器获取数据,但无法弄清楚如何从多个传感器同时获取数据。例如:我可以设置一个sensorlistener来监视加速度计的变化,当我记录加速度数据时,我是否也可以在同一时间从其他传感器获取数据?

在此先感谢。

+0

的[有没有办法在Android中检索多个传感器数据(可能的复制http://stackoverflow.com/questions/4343342/is-there -a-way-to-retrieve-multiple-sensor-data-in-android) –

回答

6

是的,你可以做到这一点,如下所示:

private SensorManager manager; 
private SensorEventListener listener; 

manager = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE); 
listener = new SensorEventListener() { 
    @Override 
    public void onAccuracyChanged(Sensor arg0, int arg1) { 
    } 

    @Override 
    public void onSensorChanged(SensorEvent event) { 
     Sensor sensor = event.sensor; 
     if (sensor.getType() == Sensor.TYPE_ACCELEROMETER) { 
      ... 
     } 
     else if (sensor.getType() == Sensor.TYPE_GYROSCOPE) { 
      ... 
     } 
    } 
} 

manager.registerListener(listener, manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME); 
manager.registerListener(listener, manager.getDefaultSensor(TYPE_GYROSCOPE), SensorManager.SENSOR_DELAY_GAME); 
+1

感谢paritybit,我试过这个,但是这似乎并不是在同一时间收集数据,例如,当传感器事件发生变化时,它只是检查它是加速度计还是陀螺仪。我想要的是当加速度计发生变化时,同时我从加速度计和陀螺仪收集数据。 – calBear

+2

我不认为他们的事件模型是这样工作的。似乎Android获取传感器数据时,会执行订阅的事件侦听器,然后我们将传感器数据从事件中取出。并不是说我们可以从任何传感器的设定时间点获取数据。 –

+0

@GregRandall如果两个传感器同时发生变化,该怎么办?什么会记录到'event.values []'? – Chaine