martes, 12 de junio de 2012

Sensores - Acelerómetro

Algunos dispositivos Android disponen de varios sensores que cómo developers podemos sacar provecho. En este post nos vamos a centrar en el Acelerómetro. Este nos permite detectar con gran sensibilidad los movimientos de desplazamiento y giro que se aplican en el teléfono. A partir, de esta definición podemos empezar a pensar en distintas aplicaciones que podríamos desarrollar.

A continuación les dejo el código base que se podría usar para empezar a sacarle provecho:

public class MySensor extends Activity implements SensorEventListener {
    private SensorManager mSensorManager;
    private Sensor mAccelerometer;
    private boolean isEnabledSensor = false;

    @Override
    public final void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        mAccelerometer = mSensorManager
                .getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

        if (mAccelerometer != null) {
            isEnabledSensor = true;
          } else {
            Toast.makeText(getApplicationContext(),
                    "Not accelerometer detected", Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public final void onAccuracyChanged(Sensor sensor, int accuracy) {
        // Do something here if sensor accuracy changes.
    }

    @Override
    public final void onSensorChanged(SensorEvent event) {
        //event contiene un vector que nos permite obtener las 3 coordenadas
        float x_value = event.values[0];
        float y_value = event.values[1];
        float z_value = event.values[2];
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (isEnabledSensor) {
            mSensorManager.registerListener(this, mAccelerometer,
                    SensorManager.SENSOR_DELAY_NORMAL);
        }

    }

    @Override
    protected void onPause() {
        super.onPause();
        if (isEnabledSensor) {
            mSensorManager.unregisterListener(this);
        }
    }

Como podemos ver, al iniciar la app tenemos que comprobar si esta disponible o no, el acelerómetro en este dispositivo. Igualmente, se tiene que aplicar en las otras funciones (onResume, onPause).

En la función "onSensorChanged" es donde tenemos que realizar la acción que queremos llevar a cabo cuando se produzca el evento deseado.

It works!

Roger Sala

No hay comentarios:

Publicar un comentario