Componentes fundamentales en Android: Acelerómetro

- Andrés Cruz

In english
Componentes fundamentales en Android: Acelerómetro

Descargar fuente

En esta entrada veremos unos de los componentes fundamentales que podemos encontrar en cualquier dispositivo Android relativamente reciente y se trata de un sensor que permite medir la aceleración del dispositivo: el acelerómetro.

El acelerómetro en Android se mide en base a los tres ejes conocidos (X,Y y Z); cada uno de ellos puede ser accedido a través de la clase SensorManager.

Empezando con la clase de SensorManager en Android

Debemos de implementar la clase de SensorEventListener en nuestra actividad:

public class MainActivity extends Activity implements SensorEventListener

Una vez que implementamos la interfaz anterior debemos de sobrecargar los métodos:

@Override public void onSensorChanged(SensorEvent event) { } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { }

Solicitando acceso al acelerómetro

Lo siguiente que debemos hacer es solicitar acceso al acelerómetro del dispositivo; y esto lo hacemos a través del objeto SensorManager de la siguiente manera:

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

Obtenemos el servicio del sistema a través del objeto getSystemService pasando como parámetro el nombre del servicio al que queremos acceder.

Obteniendo el acelerómetro del sistema

De la lista de sensores de vuelta en la consulta anterior, verificamos si hay algun sensor de tipo acelerómetro disponible; para ello se emplea la siguiente línea de código:

sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER).size()

Registrando el evento "Escuchador" o Listener del acelerómetro

Una vez que hayamos verificado que el dispositivo cuenta con al menos un sensor de tipo acelerómetro podemos registrar el evento listener o escuchador:

sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_FASTEST)

Pasamos como parámetro una instancia de la actividad, el acelerómetro y la tasa de refrescamiento, la cual puede ser:

  • SENSOR_DELAY_FASTEST
  • SENSOR_DELAY_NORMAL
  • SENSOR_DELAY_GAME
  • SENSOR_DELAY_UI

Lo único que varía entre ellas es la tasa de refrescamiento del acelerómetro.

Registrando el evento "Escuchador" o Listener

El método onSensorChanged se activa cada vez que el sistema detecta un cambio en la aceleración del dispositivo:

@Override public void onSensorChanged(SensorEvent event) { sensor = ""; sensor = "x: " + event.values[0] + " y: " + event.values[1] + " z: " + event.values[2]; }

Con el parámetro SensorEvent podemos tener entre varios datos, las coordenadas que el sistema usa en las rotaciones a través de los ejes X,Y y Z como vimos en el código anterior.

Puedes encontrar una aplicación funcional que ejemplifica el funcionamiento de los códigos vistos anteriormente en nuestro repositorio de GIT:

Descargar fuente

Captura de pantalla de la aplicación:

Acelerómetro en AnDroid
Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz en Udemy

Acepto recibir anuncios de interes sobre este Blog.