Tutorial android 9: leer datos desde el acelerometro(Sensor event listener))

Leer datos del acelerometro:

El acelerometro en android es solo uno de diferentes sensores que podemos encontrar en nuestros dispositivos. 
Este se compone de 3 ejes, X , Y y Z los cuales cada uno genera una entrada que se mide en gravedad.

A continuaciòn este codigo registra  entradas del acelerometro y lo muestra en pantalla.

Codigo en actividad principal:

 

package com.practivaA2;

import java.util.List;

import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;

public class PracticaAcelerometro2Activity extends Activity implements SensorEventListener{
    /** Called when the activity is first created. */
	TextView x,y,z;
	private  Sensor mAccelerometer;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        x = (TextView)findViewById(R.id.xID);
        y = (TextView)findViewById(R.id.yID);
        z = (TextView)findViewById(R.id.zID);
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }

    protected void onResume()
    {
    	 super.onResume();
         SensorManager sm = (SensorManager) getSystemService(SENSOR_SERVICE);
         List<Sensor> sensors = sm.getSensorList(Sensor.TYPE_ACCELEROMETER);
         if (sensors.size() > 0) //dispositivo android tiene acelerometro
         {
             sm.registerListener(this, sensors.get(0), SensorManager.SENSOR_DELAY_GAME);
         }
    }
    protected void onPause()
    {
    	SensorManager mSensorManager=(SensorManager) getSystemService(SENSOR_SERVICE);
    	mSensorManager.unregisterListener(this, mAccelerometer);
    	super.onPause();
    }
    protected void onStop()
    {
    	SensorManager mSensorManager=(SensorManager) getSystemService(SENSOR_SERVICE);
    	mSensorManager.unregisterListener(this, mAccelerometer);
    	super.onStop();
    }
	

	@Override
	public void onSensorChanged(SensorEvent event) {
		this.x.setText("X = "+event.values[SensorManager.DATA_X]);
		this.y.setText("Y = "+event.values[SensorManager.DATA_Y]);
		this.z.setText("Z = "+event.values[SensorManager.DATA_Z]);
	}

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

Codigo en main.xml (Layout)

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/xID"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <TextView
        android:id="@+id/yID"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <TextView
        android:id="@+id/zID"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

</LinearLayout>

 

 

Acerca del autor:

Mi nombre es Jorge Villalobos, soy Colombiano de nacimiento y resido en México desde 2005,actualmente soy el creador de codigoprogramacion.com Soy ingeniero en tecnologías de información y comunicaciones y trabajo de tiempo completo desarrollando aplicaciones web. En general me considero un tipo normal, me gusta salir, divertirme, y uno de mis hobbies es programar y hacer tutoriales para compartir conocimiento, me gusta la pizza, el ajedrez y tomar una que otra cerveza los fines de semana. Espero que este proyecto ayude a ayudar a los demás.

Twitter del autor:

7 comments

  1. Jeferson says:

    Gracias, sirve de mucho =)

  2. Ricardo Antonio Méndez says:

    Buen Contenido, me gusto mucho,
    Me pregunto como se podra jalar cada dato del textview de x,y Y z para convertirlos a datos de RGB y asi cambiar el color de pantalla segun su posicion?

  3. Germán says:

    Buenas, hay algún método para coger los datos del acelerómetro cada x tiempo aunque no hayan cambiado los valores.
    Un saludo

  4. elmer says:

    me gustaria preguntarles si con este programa puedo hacer un proyecto como una casa domotica, un ejemplo como apagar un foco desde mi celular o pc por fa ayudenme

  5. andrey says:

    hola que tal?
    como e haría para cambiar le la rotación,es que en mi cel la rotación está alterada ejm si lo volteo a modo horizontal en la imagen se vera alrevez que hay que cambiar para que quede bien?? gracias y saludos

  6. Yenaro Mariano says:

    Hola saludos…!!
    Mira me gusto mucho tu vídeo y quisiera sabes si me podrías poner un ejemplo para poder implementarlo en un juego ya busque mucho en la red pero no encuentro nada. te agradecería que me pudieras ayudar con eso.
    graciasss…!!

  7. Mirian Garay says:

    Buenas tardes Jorge.
    Te felicito y agradezco por los tutoriales de Youtube y tu página web. Son muy útiles.
    Quisiera pedir tu colaboración de ser posible, ya que tengo que crear una aplicación consistente en un decelerómetro (mide la aceleración negativa o frenado) para smarthphone con android. Necesito crearla para medir la eficiencia y desequilibrio existentes en el frenado de los vehículos.
    ¿Podrías ayudarme con eso?
    Puedo pasarte las fórmulas que sean necesarias.
    Desde ya muchas gracias.

    Saludos cordiales,
    Mirian Garay

Leave a Reply

Your email address will not be published. Required fields are marked *