04 Herramientas Programacion Movil

Herramientas de Programación Móvil SEMANA 4 Menús, orientación y geolocalización Todos los derechos de autor son de l

Views 94 Downloads 1 File size 963KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Herramientas de Programación Móvil

SEMANA 4

Menús, orientación y geolocalización

Todos los derechos de autor son de la exclusiva propiedad de IACC o de los otorgantes de sus licencias. No está permitido copiar, reproducir, reeditar, descargar, publicar, emitir, difundir, poner a disposición del público ni ESTE LAdeSEMANA 4 utilizarDOCUMENTO los contenidos paraCONTIENE fines comerciales ninguna clase.

1

ESTE DOCUMENTO CONTIENE LA SEMANA 4

2

ÍNDICE MENÚS, ORIENTACIÓN Y GEOLOCALIZACIÓN ..................................................................................... 4 OBJETIVOS ESPECÍFICOS ........................................................................................................................... 4 INTRODUCCIÓN ...................................................................................................................................... 4 1.

2.

ORIENTACIÓN Y ACELERACIÓN. USO DE SENSORES ................................................................... 5 1.1.

SENSORES DE MOVIMIENTO ............................................................................................... 5

1.2.

SENSORES AMBIENTALES .................................................................................................... 5

1.3.

SENSORES DE POSICIÓN ...................................................................................................... 5

1.4.

GPS ...................................................................................................................................... 6

MENÚS ........................................................................................................................................ 8 2.1.

MENÚ CONTEXTUAL............................................................................................................ 9

2.2.

BOTÓN MENÚ ................................................................................................................... 10

COMENTARIO FINAL.......................................................................................................................... 12 REFERENCIAS........................................................................................................................................ 13

ESTE DOCUMENTO CONTIENE LA SEMANA 4

3

MENÚS, ORIENTACIÓN Y GEOLOCALIZACIÓN OBJETIVOS ESPECÍFICOS  

Diseñar menú contextual para aplicaciones en Android. Analizar la utilización de los diferentes sensores del dispositivo para el diseño de aplicaciones.

INTRODUCCIÓN Esta semana tiene dos temas principales: menús y sensores. Comúnmente las aplicaciones móviles tienen a la vista las herramientas principales que necesita el usuario para sacarle el máximo provecho. Pero ¿qué pasa con aquellas opciones necesarias pero que se decide que no pueden ir en la pantalla principal? ¿O aquellas funciones que son adicionales y transversales a toda la aplicación (como copiar y pegar, por ejemplo)? Otra funcionalidad ampliamente usada es el GPS. Este pertenece a un grupo más grande de herramientas: los sensores. Dependiendo de las características del equipo, los desarrolladores pueden tener acceso al acelerómetro, GPS, magnetómetro (para hacer uso de la brújula), barómetro u otros. Estos temas se encuentran frecuentemente en el desarrollo de aplicaciones. No es casualidad que los proyectos mejor valorados sean aquellos que permiten a los usuarios asociar su ubicación en el planeta con algún evento realizado con la aplicación como marcar un lugar de interés, hacer pedidos a una dirección específica, ver la velocidad a la que se está moviendo, etc.

ESTE DOCUMENTO CONTIENE LA SEMANA 4

4

1. ORIENTACIÓN Y ACELERACIÓN. USO DE SENSORES El smartphone posee diferentes sensores que apoyan muchas de sus funciones. Los sensores se pueden dividir en tres familias:

1.1. SENSORES DE MOVIMIENTO Miden aceleración y rotación en tres ejes (x,y,z). Esta categoría incluye el acelerómetro, sensores de gravedad, giroscopio y sensores de vectores rotacionales. Estos sensores también se encargan de desplegar las aplicaciones en forma vertical u horizontal en el teléfono. El despliegue está controlado por el sistema operativo y no requiere de codificación extra.

1.2. SENSORES AMBIENTALES Miden varios parámetros ambientales, como temperatura del aire y presión, iluminación y humedad. Los sensores de esta categoría incluyen barómetro, fotómetro y termómetro.

1.3. SENSORES DE POSICIÓN Miden la posición física de un dispositivo. Corresponde a los sensores de orientación (GPS) y magnetómetros. Es posible acceder a estos sensores y obtener los datos que registran utilizando el framework de sensores de Android, que provee diversas clases e interfaces para realizar diversas tareas, como por ejemplo:    

Listar los sensores disponibles en un dispositivo. Determinar las capacidades de un sensor en específico, como el rango máximo de lecturas, fabricante, requisitos de energía y precisión. Obtener datos del sensor y definir el intervalo de tiempo en el que se obtienen los datos. Registrar y desregistrar “listeners” para eventos del sensor, cuando este cambia. Un listener, en términos generales, es un método que realiza alguna acción cuando algo es tocado o cambia su contenido.

El framework de sensores permite acceder a diferentes tipos de sensores. Algunos de estos sensores son basados en software y otros basados en hardware. Los basados en hardware son componentes físicos soldados en la placa lógica del dispositivo. Obtienen los datos directamente midiendo propiedades ambientales específicas, como por ejemplo la aceleración, fuerza del campo geomagnético o cambio angular. Los sensores basados en software no son dispositivos

ESTE DOCUMENTO CONTIENE LA SEMANA 4

5

físicos, aunque los simulan. Obtienen sus datos de uno o más dispositivos basados en software, por ejemplo el sensor de aceleración lineal y el sensor de gravedad son basados en software. Muy pocos dispositivos tienen todos los tipos de sensores. Por eso esta semana se centrará en uno de los más comunes: el GPS.

1.4. GPS Existen dos formas de encontrar la posición del dispositivo en la tierra: a través del GPS y de las antenas receptoras de celular. Para utilizar la posición, se debe modificar el archivo AndroidManifest.xml y pedir los permisos necesarios:

Fuente: material elaborado para esta asignatura (Héctor Horta, 2015)

 



ACCESS_FINE_LOCATION solicita permisos para ubicación mediante GPS. ACCESS_COARSE_LOCATION solicita permisos para ubicación mediante antenas celulares. La diferencia es que COARSE_LOCATION es más rápida que el GPS. La idea es buscar primero a través de COARSE_LOCATION, para entregar al usuario mejores tiempos de respuesta y por ende mejor experiencia en la aplicación, y después usar FINE_LOCATION. INTERNET se utiliza para hacer geocoding (convertir latitud y longitud en direcciones legibles) o reverse-geocoding (tomar una dirección específica y convertirla en latitud y longitud).

Una característica interesante de la geolocalización es que, si el dispositivo cuenta con barómetro, este es utilizado para calcular la altitud. Como la altitud depende de la presión, es mucho más rápido para el teléfono encontrarla a través del barómetro.

ESTE DOCUMENTO CONTIENE LA SEMANA 4

6

El código fuente incluye varios métodos además de algunas referencias en el método principal de la aplicación: onCreated(). El detalle del código se verá a continuación:

Fuente: material elaborado para esta asignatura (Héctor Horta, 2015)

Línea 19: la aplicación, como se vio en la semana anterior, extiende a la clase activity, pero además debe implementar la clase LocationListener. Línea 21: la declaración de las variables (LocationManager) antes de la declaración de los métodos las deja disponibles para ser leídas o escritas en cualquier método de la clase. Líneas 27 y 28: dado que onCreate() (línea 24) es el método que se ejecuta al comenzar la ejecución de la aplicación, es decir, al hacer tap en el ícono de la aplicación, todas las instrucciones que estén dentro de este método se ejecutan al iniciar la aplicación. En las líneas 27 y 28 se instancia la variable LocationManager, asociándola a un servicio de ubicación (LOCATION_SERVICE). En la línea 28, se configura cómo será la actualización de la ubicación del teléfono: se dice que va a ser actualizada utilizando el GPS, el número 3.000 significa que se va a actualizar la posición cada 3.000 milisegundos (3 segundos); el número 10 significa que solo se va a

ESTE DOCUMENTO CONTIENE LA SEMANA 4

7

actualizar si el dispositivo se mueve 10 metros. Finalmente, “this” dice quién es el que invoca la actualización. Línea 32: onLocationChanged(), este método se ejecuta automáticamente cuando el dispositivo cambia de posición. Al momento de ejecutarse, muestra un mensaje con la nueva latitud y longitud del dispositivo. Línea 38: onProviderDisabled() se ejecuta cuando se desactiva el GPS. Para el ejemplo, se muestra un mensaje que dice “GPS Apagado”. Línea 43: onProviderEnabled() se ejecuta cuando se activa el GPS. En este ejemplo, el mensaje que muestra es “GPS Encendido”. Línea 48: onStatusChanged() se ejecuta cuando no se puede obtener la ubicación o si el proveedor (en este caso LocationManager.GPS_PROVIDER) entra a un estado de disponibilidad luego de un largo período inactivo. El “status” puede ser TEMPORARILY_UNAVAILABLE, AVAILABLE o OUT_OF_SERVICE. Extras, es opcional y puede obtener variables de estado específicas; como es opcional, puede ser “null”.

2. MENÚS Android tiene dos tipos de menús: el menú contextual y el menú activado por el botón menú. Al momento de implementarlos, se necesitan dos cosas:  

Un archivo xml que defina las opciones del menú. Dicho archivo tiene que estar en la carpeta res/menú del proyecto Android. Implementar los métodos necesarios para que se muestre el menú y para seleccionar las opciones.

Fuente: material elaborado para esta asignatura (Héctor Horta, 2015)

ESTE DOCUMENTO CONTIENE LA SEMANA 4

8

Es posible tener tantos xml como menús distintos se necesiten. En la imagen de ejemplo se muestran nada más dos. La estrategia para unir el xml con el código es la misma que con los layouts: instanciar el xml utilizando R.menu.[nombre_del_menu] en el código Java.

2.1. MENÚ CONTEXTUAL El menú contextual aparece al momento de realizar un tap prolongado en la pantalla. Generalmente se usa para mostrar herramientas comunes a los elementos de la pantalla, como por ejemplo acciones de copiar, pegar y borrar. Primero se define el xml que representa las opciones del menú. Esto, en el ejemplo, está hecho en el archivo context_menu.xml

Fuente: material elaborado para esta asignatura (Héctor Horta, 2015)

Cada opción del menú tiene un id, un título o etiqueta y un ícono. Una vez definida la estructura del menú, para mostrarlo dentro de la pantalla que se está utilizando se necesitan dos métodos:  

publicbooleanonCreateOptionsMenu(Menumenu), que crea una instancia del menú publicbooleanonOptionsItemSelected(MenuItemitem), que contiene la lógica a seguir para cada opción del menú.

ESTE DOCUMENTO CONTIENE LA SEMANA 4

9

Fuente: material elaborado para esta asignatura (Héctor Horta, 2015)

Se puede apreciar que onCreateContextMenu() solamente instancia el xml para ser usado en onContextItemSelected(), que a su vez contiene un case con todas las opciones que están dentro del xml.

2.2. BOTÓN MENÚ Este caso es equivalente al de menú contextual. Debe definirse un archivo xml, pero los métodos cambian ya que no es un menú contextual. Para este caso, el uso dentro del código Java es mediante los métodos onCreateOptionsMenu() y onOptionsItemSelectedMenu(). Las reglas son equivalentes al menú contextual: el xml tiene un id por cada opción, que a su vez tiene nombre y puede tener un ícono. La diferencia es que el tamaño máximo visible son 6 elementos. Si se tienen más de 6 elementos, se muestran 5 elementos y el sexto se cambia por un botón “más” que al presionar muestra las opciones faltantes.

Fuente: material elaborado para esta asignatura (Héctor Horta, 2015)

ESTE DOCUMENTO CONTIENE LA SEMANA 4

10

Fuente: material elaborado para esta asignatura (Héctor Horta, 2015)

Es importante recordar que cada opción en un case debe terminar en un return true. En caso contrario se ejecutará el código restante de las siguientes sentencias case.

ESTE DOCUMENTO CONTIENE LA SEMANA 4

11

COMENTARIO FINAL El contenido de esta semana ha mostrado dos elementos clave: los menús que proveen a los desarrolladores de herramientas para comunicar y agregar opciones que no son esenciales para el uso de la aplicación, pero que necesitan estar ahí (por ejemplo configurar cuentas de correo), y por otro lado los sensores, que han cumplido un importante rol en el éxito de muchas aplicaciones como Swarm, Twitter, Facebook y diversos juegos. Es importante estudiarlos y conocerlos porque otorgan versatilidad en cuanto al tipo de aplicaciones que pueden desarrollarse. En las próximas semanas se verá cómo trabajar con archivos de medios: videos, música y fotografía, lo que permite potenciar aún más las aplicaciones desarrolladas.

ESTE DOCUMENTO CONTIENE LA SEMANA 4

12

REFERENCIAS Gargenta, M. (2011). Learning Android. California: O’Reilly Media. Google (s. f. a). App Manifest. Recuperado de: https://goo.gl/pvJGQf Google (s. f. b). ART and Dalvik. Recuperado de: http://goo.gl/Z1C4Ua

ESTE DOCUMENTO CONTIENE LA SEMANA 4

13

PARA REFERENCIAR ESTE DOCUMENTO, CONSIDERE: IACC (2015). Menús, orientación y geolocalización. Herramientas de Programación Móvil. Semana 4.

ESTE DOCUMENTO CONTIENE LA SEMANA 4

14

ESTE DOCUMENTO CONTIENE LA SEMANA 4

15