jueves, 17 de septiembre de 2015

Sensores

La mayoría de los dispositivos Android tienen incorporados sensores de movimiento (aceleración y rotación en los tres ejes), posición (orientación) y ambientales (temperatura, iluminación, humedad, …). Para hacer uso de cualquiera de esos sensores Android proporciona Sensor Framework, una API que permite un acceso sencillo y unificado a la información provista por los mismos.

Lo mínimo necesario

Definir un listener encargado de recibir la información cuando se produzca algún evento relacionado. El Listener se registra a través del método registerListener() de la clase SensorManager.
//Instancia de SensorManager
SensorManager mSensorManager
(SensorManager) getSystemService(Context.SENSOR_SERVICE);

//Obtener el sensor en concreto
Sensor mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);

// Definimos el listener que recibirá las notificaciones
SensorEventListener sensorListener = new SensorEventListener(){
   @Override
   public void onAccuracyChanged(Sensor sensor, int accuracy) { }

   @Override
   public void onSensorChanged(SensorEvent event) {
      // El sensor de luz solamente devuelve un valor
      float lux = event.values[0];
     
   }

};

// Registro del listener
mSensorManager.registerListener(sensorListener, mLight,
                        SensorManager.SENSOR_DELAY_NORMAL);

Añadir al manifest las características hardware que emplea la app:
<uses-feature android:name=android.hardware.sensor.light"/>

Para dejar de recibir las actualizaciones hay que eliminar el listener:
@Override
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(sensorListener);
}

Referencias

http://developer.android.com/guide/topics/sensors/sensors_environment.html

No hay comentarios:

Publicar un comentario