2012-09-07 23 views
5

Ahora estoy tratando de crear una aplicación para controlar la vibración. Utilizo acelerómetro para terminar el trabajo, cuando la aceleración registrada excede cierto umbral, lo llamo disparador. Cuando hay un disparador, quiero registrar los datos de aceleración, campo magnético, nivel de luz (de diferentes sensores) en el momento del disparo en un archivo.Obtenga múltiples datos de sensor al mismo tiempo en Android

El problema ahora es que: puedo obtener datos del sensor individual, pero no pude encontrar la manera de obtener los datos de múltiples sensores al mismo tiempo. Por ejemplo: ¿puedo configurar un sensorlistener para supervisar el cambio de acelerómetro, cuando grabo los datos de aceleración, también puedo obtener datos de otros sensores exactamente al mismo tiempo?

Gracias de antemano.

+0

Posible duplicado de [¿Hay una manera de recuperar varios datos de los sensores en Android] (http://stackoverflow.com/questions/4343342/is-there -a-way-to-retrieve-multiple-sensor-data-in-android) –

Respuesta

6

Si usted puede hacer esto de la siguiente manera:

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

Gracias paritybit, lo intenté, pero parece que esto no recopila datos al mismo tiempo, por ejemplo, cuando hay un cambio en el evento del sensor, solo comprobar si es acelerómetro o giroscopio. Lo que quiero es que cuando el acelerómetro cambie, al mismo tiempo, recopile datos del acelerómetro y el giroscopio. – calBear

+2

No creo que el modelo de evento funcione de esta manera. Parece que cuando Android obtiene los datos del sensor, ejecuta el detector de eventos suscritos y luego obtenemos los datos del sensor fuera del evento. No es que podamos ir a buscar datos en un punto establecido en el tiempo desde cualquier sensor. –

+0

@GregRandall ¿Qué pasa si ambos sensores cambian al mismo tiempo? ¿Qué se registrará en 'event.values ​​[]'? – Chaine

Cuestiones relacionadas