Tag Archive for event listener

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>