Evilnapsis

Programming, Hacking and More

Android Development

Leer los valores X,Y,Z del Acelerometro de Android con Java

El acelerometro es un sensor que permite conocer la posición X,Y,Z en que tenemos un dispositivo, esta posición sirve para aplicaciones y juegos.

La posición X,Y,Z equivale a una coordenada en 3d debido a que el dispositivo/celular/tablet lo podemos tener en cualquier posición.

Bueno vamos a leer los valores del acelerometro usando código en java y android studio.

Código

Parte 1

Lo primero seria importar las librerías necesarias.

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;

Al definir la clase principal es importante implementar la clase SensorEventListener.

public class MainActivity extends AppCompatActivity implements SensorEventListener

Ahora vamos a obtener el servicio del sensor, del servicio de sensores seleccionaremos el tipo acelerometro TYPE_ACCELEROMETER y después vamos a registrar el Listener.

        senSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        senAccelerometer = senSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        senSensorManager.registerListener(this, senAccelerometer , SensorManager.SENSOR_DELAY_NORMAL);

Al registrar el listener, el primer parámetro es la clase SensorEventListener, la clase que tenemos actualmente implementa esta clase, por ello usamos this.

Adicional agregamos un par de métodos como parte de SensorEventListener: onSensorChanged y onAccuracyChanged.

En este ejemplo solo usaremos onSensorChanged, que se ocupa de actualizar los valores del sensor.

    public void onSensorChanged(SensorEvent event) {
        Sensor mySensor = event.sensor;

        if (event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){
            if (mySensor.getType() == Sensor.TYPE_ACCELEROMETER) {
                float x = event.values[0];
                float y = event.values[1];
                float z = event.values[2];
                textview1 = findViewById(R.id.textview1);
                textview1.setText("X: " + x + " - Y: "+ y +" - Z:"+z );
            }
        }
    }

Ahora obtenemos el sensor, verificamos que el sensor sea el acelerometro, después obtenemos los valores:

  • Eje X: event.values[0]
  • Eje Y: event.values[1]
  • Eje Z: event.values[2]

Al actualizar los datos, los mostramos en un TextView en la vista de la aplicación.

Resultado

Descargar

A continuación les dejo el proyecto en Android Studio para descargar:

Link: Descargar Proyecto

El APK compilado se encuentra en la carpeta MyApplication6\app\build\outputs\apk\debug\app-debug.apk

Agustin Ramos

Desarrollador de Software

Leave a Reply