2012-09-07 9 views
5

Ora sto provando a creare un'app per monitorare la vibrazione. Io uso l'accelerometro per completare il lavoro, quando l'accelerazione registrata supera una certa soglia, io la chiamo trigger. Quando c'è un trigger, voglio registrare l'accelerazione, il campo magnetico, i dati del livello di luce (da diversi sensori) al momento del trigger su un file.Ottieni più dati del sensore contemporaneamente in Android

Il problema ora è che: posso ottenere dati dal sensore individuale, ma non riesco a capire come ottenere i dati da più sensori contemporaneamente. Ad esempio: posso impostare un listener di sensori per monitorare il cambio di accelerometro, quando registro i dati di accelerazione, posso anche ottenere dati da altri sensori esattamente nello stesso momento?

Grazie in anticipo.

+0

Eventuali duplicati di [C'è un modo per recuperare i dati dei sensori multipli in Android] (http://stackoverflow.com/questions/4343342/is-there -a-strada-per-recuperare-più-sensore-dati-in-android) –

risposta

6

Sì, è possibile farlo nel modo seguente:

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

Grazie paritybit, ho provato questo, ma questo sembra non raccogliere i dati allo stesso tempo, per esempio, quando c'è un cambiamento di evento sensore, solo controllare se si tratta di accelerometro o giroscopio. Quello che voglio è quando l'accelerometro cambia, allo stesso tempo raccolgo dati da accelerometro e giroscopio. – calBear

+2

Non penso che il modello di eventi funzioni in questo modo. Sembra che quando Android riceve i dati del sensore, esegue il listener di eventi sottoscritto e quindi i dati del sensore vengono estratti dall'evento. Non è che possiamo andare a prendere i dati in un determinato momento da qualsiasi sensore. –

+0

@GregRandall cosa succede se entrambi i sensori vengono modificati contemporaneamente? Cosa verrà registrato su 'event.values ​​[]'? – Chaine