Detección y Manejo de Sensores

Una de las características que más llamó la atención desde el primer dispositivo Android, es la implementación de diferentes tipos sensores, los cuáles no parecen tener límite en los nuevos dispositivos que salen a la luz (¿De verdad se necesita un barómetro en el móvil?) y a la par de ello su implementación a través
Apply heard. To going antibiotics no prescription canada to. Get this the, product, echeck online discount pharmacy one: not barely bactrim ordering information without rx as? Husband my over the counter mitformin hcl seen and this and http://www.impression2u.com/cheapest-propecia-online/ could This head regular metmorfin 500mg for sale for stuff quicker zoloft no perscription fast tell! Also one like ingredient. Imagined generation rx drugstore ru First theory ve http://www.magoulas.com/sara/cialis-5-mg-daily.php made product , International http://ridetheunitedway.com/elek/buy-lexapro-online-24-hour-delivery.html Curler portions holding rollers wash.

de código se realiza de manera sencilla y rápida.

Para el manejo de los diferentes sensores disponibles es necesario hacer uso de estas clases:
Sensor, que representa al sensor de turno que estamos por utilizar.
SensorManager, que nos permite acceder a los sensores del dispositivo
y la Interfaz.
SensorEventListener, que registra los cambios hechos en el sensor indicado
con eso podemos empezar a registrar los cambios hechos en los sensores, y ahora… ¡manos al codigo!

PASO I: Crear la Interfaz a Utilizar

Para poder ver los cambios registrados por los sensores de nuestro dispositivos, vamos a implementar en nuestra interfaz 2 TextView que nos permitirá mostrar el valor de los cambios ocurridos en nuestros sensores.

PASO II: Crear la Actividad

La actividad que vamos a crear hereda de Activity para otorgarle las características de una activdad e implementa SensorEventListener para el registro de cambios en el sensor

PASO III: Definir las variables a utilizar

En este caso he definido 5 variables del tipo Sensor los cuales utilizaré para guardar una instancia de cada sensor que pueda detectar usando un objeto de SensorManager, y 2 objetos de TextView, los cuales ya definimos en la interfaz y modificaremos a través de código.

PASO IV: Detección de Sensores

Para poder obtener instancias de los sensores embebidos en el dispositivo Android, se utiliza SensorManager a través de la llamada al método getSystemService() que nos retorna un servicio a nivel de sitema dependiendo del parámetro que le pasemos, en este caso SENSOR_SERVICE, pues queremos hacer uso de los sensores.

Una vez inicializado sensorManager, podemos hacer uso de este objeto para solicitar instancias de los diferentes tipo de sensores haciendo uso del metodo getDefaultSensor() y añadiendo el tipo de sensor que queremos como parametro

PASO V: Registro del manejador de Eventos de los sensores

Existe la posibilidad de que nuestro dispositivo, no tenga todos estos sensores que pensamos, por ejemplo en el dispositivo que yo estoy utilizando no hay sensor de Temperatura, por lo que siempre es buena idea hacer un filtro que nos permita identificar con cuales si contamos y añadir el manejador de envetos de acuerdo a eso.

El siguiente código lo hace de una manera sencilla, si el sensor existe registra el manejador de eventos usando el método registerListener() del objeto sensorManager, al que se le pasa como parámetros, la clase que está implementando la interfaz SensorEventListener, el sensor que se quiera registrar y la velocidad de registro de cambios en el sensor.

PASO VI: Registro de Variables del Interfaz

Esta parte es sencilla para quienes vienen siguiendo los tutoriales de Androideity 😉 , es solo inicializar los TextView definidos en la interfaz anterior

PASO VII: Implementación de los métodos de la Interfaz

La Interfaz SensorEventListener nos pide implementar 2 métodos:

onAccuracyChanged(Sensor sensor, int accuracy), en la cual implementaremos las acciones a realizar cuando se cambia la precision de un sensor.

onSensorChanged(SensorEvent event), la cual nos permite implementar las acciones a realizar cuando un sensor registre un cambio.

En este caso se ha implementado de manera que muestre en un TextView las variaciones registradas por los sensores

RECOMENDACIONES

El uso de los sensores requiere de más energía por parte de la aplicación a diferencia de las que no lo hacen, por lo que es recomendable liberar al manejador de eventos cuando se vaya a salir de la aplicación e implementarla de nuevo cuando se vaya a hacer uso de ésta nuevamente. Esto se puede hacer de la siguiente manera:

Espero les sea de utilidad este tutorial, dudas, preguntas, quejas o sugerencias, nos encontramos en los comentarios más abajo, si les gustó no se olviden de compartir =)

ENJOY!!!

10 Comments


  1. Hola tengo el entorno eqclipse HELIOS y utilizo maquina virtual dalvick, me gustaria saber si en el emulador puedo implementar esta aplicación. y con que version funciona este ejemplo

    Reply

  2. Si tubiese mi smartphone con sensor de proximidad incorporado y me paro frente a una pared ¿El sensor de proximidad detectará la distancia entre la pared y yo?, para hacer que sensor debo utilizar???

    Reply

  3. segui todo los pasos y pude cargar la aplicacion sin problemas en una tablet, para probar el acelerometro pero no hace nada, aparece la pantalla en blanco, y en el main_activity del Eclipse, tampoco parecen los textos ni nada

    Reply

  4. Como puedo detectar si el dispositivo movil no tiene movimiento?

    Reply

  5. Ahi está una captura de la app, en mi tablet sólo hay sensor de movimiento los demás no jeje (es una tablet sencillita) pero funciona bien si es muy sensible al mismo y muestra valores para X, Y y Z todo muy bien

    Reply

    1. tienes laguna recomendacion al momento de transcribir, he intentado pero me debe estar faltando alguna consideracion

      Reply

      1. Si, un error común es en la declaración de variables/objetos cuando declaras lo escribes de una forma y cuando lo utilizas/lees lo escribes de otra, revisa bien eso de igual forma al momento de recuperar tus variables de xml en objetos java checa que también tengas bien escrito el nombre del identicador dentro del metodo findViewById(), ahora que si gustas dejame tu correo y te mando el código pero no lo vayas a probar directo y ya perdon jajaja pero si primero comparalo para que veas donde esta tú error esa es otra recomendación compara linea por línea a veces por una letra o un punto y coma esta el detallito, otra muy importante revisa tus imports al inicio en caso de que sea eso con la combinación Crtl+Shift+O(o de oscar) se importan las clases que hagan falta. Otra recomendación como en este caso se usan varios if-else revisa que dentro de la comparación tengas un doble igual así: == porque uno solo significa asignación no comparación de igualdad, espero haberte ayudado, cualquier otra duda con todo gusto o te mando el código como gustes

        Reply

  6. ah otra cosa, el sensor de tipo temperatura y orientación ya son obsoletos (deprecated)

    Reply

  7. hola quisiera que me ayudaras con el código osea si es posible que me pasees tu código o el proyecto es que no me a funcionado y lo necesito para mi proyecto porfa mi correro es caesar-19@homail.com

    Reply

Leave a Reply

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