Link

GitHub Documentación

Sensores

En el siguiente ejemplo se van a recuperar los valores devueltos por los sensores del dispositivo:

Android

Primeramente, instancia SensorManager.

SensorManager sensorManager;
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

A través de sensorManager se podrá consultar los valores de distintos sensores. Por ejemplo:

Listar todos los sensores

public void listadoSensores(View v) {
    sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL); // Se puede seleccinar el tipo

    for (int i = 0; i < sensors.size(); i++) {
        Log.i("prueba", sensors.get(i).getName());
    }
}

Observa como se ha llamado a sensorManager.getSensorList() y recuperando todos los tipos de sensores definidos mediante la constante Sensor.TYPE_ALL.

Mostrar el valor del acelerómetro

Implementa la interface SensorEventListener y los métodos onSensorChanged() y onAccuracyChanged().

public class MainActivity extends AppCompatActivity implements SensorEventListener {
  ...
}

Recuerda instanciar siempre que se necesite sensorManager.

public void acelerometro(View v) {
    sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    Sensor acelerometro = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    Toast.makeText(this, acelerometro.getName(), Toast.LENGTH_SHORT).show();
    sensorManager.registerListener(this, acelerometro, SensorManager.SENSOR_DELAY_NORMAL);
}

Únicamente recuperamos el tipo de sensor Sensor.TYPE_ACCELEROMETER. Además, registramos un listener a sensorManager que hará que el método onSensorChanged() sea llamado periódicamente, con un intervalo de tiempo definido en SensorManager.SENSOR_DELAY_NORMAL.

@Override
public void onSensorChanged(SensorEvent sensorEvent) {
    switch (sensorEvent.sensor.getType()) {
        case Sensor.TYPE_ACCELEROMETER:
            ArrayList<Float> valores = new ArrayList<Float>();

            Log.i("prueba", "Cantidad de valores: " + sensorEvent.values.length);
            for (int i = 0; i < sensorEvent.values.length; i++){
                valores.add(sensorEvent.values[i]);
            }
            Log.i("prueba", valores.toString());
            break;
    }
}

Podemos guardar los valores recuperados en una lista, ya que dependiendo del tipo de sensor la cantidad de valores devueltos varía.