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>