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

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.