Académique Documents
Professionnel Documents
Culture Documents
La mayoria de los dispositivos de android incorpora sensores que miden su movimiento, orientacion
y otras varias magnitudes fisicas. Estos sensores proporcionan datos de magnitudes fisicas con alta
precision y exactitud y son utiles, por ejemplo, para controlar la posicion o el movimiento del
dispositivo en tres dimensiones o su localizacion mediante GPS.
Los sensores de android se pueden dividir en tres categorias:
En dispositivos android existen otros elementos que no puden ser considerados estrictamente
sensores en realidad, son componentes de hardware que contienen sensores que se usan con un
proposito muy definido. Por ejemplo, un dispositivo WIFI puede usarse para conectarse a una red
WIFI, dispositivos GPS, bluetooh y camara de fotos.
Para acceder a los sensores disponibles en un dispositivo y obtener sus datos, android proporciona
varias clases e interfaces que realizan una amplia variedad de tareas realacionados con los sensores,
estas clases son utilizadas para:
Todos los sensores se manipulan de forma homogenea y con ellos podremos implementar mejoras
de la interaccion del dispositivo con el usuario.
No todos los dispositivos disponen de los mismos sensores. Cada modelo y fabricante incluye
los que considera apropiados. Ademas, para gestionar estos sensores el dispositivo emplea
drivers que el fabricante no suele hacer publicos.
GESTION DE SENSORES EN ANDROID
Android permite acceder a los sensores internos del dispositivo a traves de las clases del paquete
android.hardware , las clases son:
SensorEvent: clase que se utiliza para pasar los datos medidos por el sensor a la aplicacin.
SensorManager: gestor que permite acceder a los sensores de un dispositivo.
SensorEventListener: interfaz utilizada para recibir las notificaciones del SensorManager
cuando se comunican nuevas medidas de los sensores.
Desde el punto de vista del desarrollador, las clases Java que debemos usar son pocas y sencillas.
Esto es asi porque; para que el dispositivo android gestione los sensores, debe utilizar drivers cuyo
codigo fuente no suele hacer publico su fabricante. Por esto, android tiene tanto xito entre los
fabricantes de dispositivos , ya que estos no tienen que publicar el codigo fuente de los drivers
que, en realidad, muestra como funciona su hardware.
La clase sensor contiene la informacion y propiedades completas de un sensor. Para obtener el tipo
de sensor que contiene un objeto de esta clase, debemos usar su metodo getType() que devuelve 11
tipos de sensores mediante alguna de las siguientes constantes.
Esta lista se va ampliando con las nuevas versiones de andorid, si bien los sensores disponibles
varian mucho en funcion del dispositivo utilizado.
Ademas, es posible dividir los sensores en dos categorias mas: real y virtual. Real se refiere a
que el sensor indica una medida de magnitud fisica. Virtual significa que son medidas obtenidas a
partir de la combinacion de las medidas de otros sensores o son medidas relativas.
En esta tabla es posible observar que los sensores TEMPERATURE y ORIENTATION son
obsoletos. El primero se ha sustituido por el sensor AMBIENT_TEMP, el segundo se quito en la
version de android 2.2 (API Level 8) porque normalmente no hay un sensor de orientacion en los
dispositivos. Para conocer la orientacion, el dispositivo combina los datos de los sensores
acelerometro y del campo magnetico (sensor geomagnetico basados en hardware del
dispositivo).
Para obtener la orientacion del dispositivo se puede utilizar el metodo
android.view.Display.getRotation() de android.
Para acceder a los sensores de un dispositivo android proporciona el gestor SensorManager.. Para
obtener el listado completo de los sensores del dispositivo, debemos usar su metodo
getSensorList(tipo) que devuelve una lista de tipo Sensor.
Al mismo tiempo a partir de la clase Sensor es posible hacer uso de sus metodos publicos:
Este parametro sirve para que el sistema conozca cuantas frecuencias de actualizacion de las
medidas de los sensores necesita nuestra aplicacin.
Clasificacion de los tipos de Sensores de Movimiento:
Sensor
TYPE_ACCELEROMETER
TYPE_GRAVITY
Description
Units of
measure
Acceleration
force along the
SensorEvent.values[0] x axis
(including
gravity).
Acceleration
force along the
SensorEvent.values[1] y axis
m/s2
(including
gravity).
Acceleration
force along the
SensorEvent.values[2] z axis
(including
gravity).
2
SensorEvent.values[0] Force of gravity m/s
along the x axis.
SensorEvent.values[1] Force of gravity
along the y axis.
TYPE_ROTATION_VECTOR
TYPE_SIGNIFICANT_MOTION
TYPE_STEP_COUNTER
TYPE_STEP_DETECTOR
Rotation vector
SensorEvent.values[0] component
along the x axis
(x * sin(/2)).
Rotation vector
SensorEvent.values[1] component
along the y axis
(y * sin(/2)).
Rotation vector Unitless
SensorEvent.values[2] component
along the z axis
(z * sin(/2)).
Scalar
component of
SensorEvent.values[3] the rotation
vector
((cos(/2)).1
N/A
N/A
N/A
Number of steps
taken by the
SensorEvent.values[0] user since the Steps
last reboot
while the sensor
was activated.
N/A
N/A
N/A
Utilizando un Intent que gestiona por nosotros la camara de fotos y devuelve la imagen a la
aplicacin que lo ha iniciado.
Integrando directamente la camara en la aplicacin utilizando las bibliotecas (API) de
Android.
El SDK de Android incluye el soporte nativo, mediante una librera, que permite utilizar las
Camera: esta es la clase basica de la API para controlar la camara, tomar fotos y grabar
videos. Como un dispositivo Android puede tener varias camaras, para distinguirlas, esta
clase utiliza la variable de tipo entero camaraId.
CamaraInfo: clase que contiene la informacion de la camara con el identificativo camaraId.
SurfaceView: esta clase se usa para mostrar al usuario la previsualizacion de la camara de
fotos.
MediaRecorder: esta clase se emplea para grabar videos