calBear
calBear

Reputation: 143

Get multiple sensor data at the same time in Android

I am now trying to create an app to monitoring the vibration. I use accelerometer to finish the job, when the recorded acceleration exceed certain threshold, I call it a trigger. When there's a trigger, I want to log the acceleration, magnetic field, light level data (from different sensors) at the trigger time to a file.

The problem now is that: I can get data from individual sensor, but couldn't figure out a way how to get the data from multiple sensors at the same time. For example: I can set a sensorlistener to monitoring the change of accelerometer, when I record the acceleration data, can I also get data from other sensors at exactly the same time?

Thanks in advance.

Upvotes: 9

Views: 18947

Answers (1)

mostar
mostar

Reputation: 4831

Yes you can do this as follows:

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);

Upvotes: 8

Related Questions