Sensores de los dispositivos

Documentos relacionados
Desarrollo de Aplicaciones para Android

Sensores. Índice. Pantalla táctil y acelerómetro Pantalla táctil...4. Orientación y aceleración... 9 Ejercicios de pantalla táctil...

Ejercicios de geolocalización y mapas

Sensores y eventos. Índice

Android TAG y el principio DRY

TUTORIAL: GEOLOCALIZACIÓN

Taller Mi Primera Aplicación Android

Curso 14/15. Desarrollo de aplicaciones Android. Mapas en Android

Programación Android. Rafael Morón Abad

Desarrollo en Android (v1.0)

Crear un Splash-Screen

Práctica 3. Android. Tutorial appfotovoz

Tutorial appgpsqr. Pedro Antonio Ruiz Cuesta Ignacio Martín Requena

Android y Java para Dispositivos Móviles

Programación Android. Alejandro Alcalde. elbauldelprogramador.com

Sensores. JOSE LUIS BERENGUEL GÓMEZ Marzo 2012

Ejercicios - Introducción a Android

Sensores y eventos - Ejercicios

Unidad 3. PrimerProyecto. Nuestra primera aplicacio n Android

TRABAJO DE FIN DE CARRERA

Javier Ávila Nieto. "Trabajo Final de Carrera" 07 Enero 2013 Página 6 de 44

En nuestra actividad principal, creamos el objeto vista previa. Este objeto se creará el objeto cámara y volver a la actividad CameraDemo.

Desarrollo de Aplicaciones para Android

Manejadores en Android LSUB, GYSC, URJC

Desarrollo de Aplicaciones para Android

MASTER DESARROLLO DE APLICACIONES ANDROID

Crear listas personalizadas en Android

ALMACENAMIENTOS DE DATOS EN ANDROID CON SQLITE

Construyendo el proyecto.

Desarrollo de Aplicaciones para Android

Programación Android Completo

Android y Java para Dispositivos Móviles

Tema 6 Patrones de Diseño. Programación Orientada a Objetos Curso 2010/2011

Grabación de audio/vídeo y gráficos avanzados en Android

Programación en Android LSUB, GSYC, URJC

Ejercicio 18. Configuración de Widgets en Android. Android Con Java. Ejercicio 18. Configuración de Widgets en Android. Curso de Android con Java

TRABAJO FINAL DE CARRERA

Hola Android. Introducción al desarrollo de aplicaciones para Android

Tema 2: Diseño de servicios para móviles

Utilización de coordenadas espaciales para establecer la geolocalización

Android Manejo de Eventos. Rogelio Ferreira Escutia

Ejercicio 4. Manejo de Layouts en Android. Android Con Java. Ejercicio 4. Manejo de Layouts en Android. Curso de Android con Java

Servicios Web Android

Android y Java para Dispositivos Móviles

SESIÓN 5 MANEJO DE BASES DE DATOS SQLITE

Integración de guia1 y guia2 utilizando la aplicación Mixare

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Android y Java para Dispositivos Móviles

Curso de programación en Android. 20/Junio/2012 Ramón Alcarria Augusto Morales

Notificaciones y AppWidgets - Ejercicios

Patricio Olivares. 25 de abril de 2017

Curso Android. ADT Bundle. Android Developer Tools. Entorno de trabajo Toolbar principal SDK Manager. Emulador de Android. Crear proyecto Android

Aplicación Android de Asistencia al Caminante

Servicios Avanzados. Índice. 1 Servicios en segundo plano Notificaciones AppWidgets Publicación de software...8

Curso Experto en Programación Android

BRÚJULA Y GPS CON ANDROID

Ejercicio 16. Mejora de Notificaciones en Android. Android Con Java. Ejercicio 16. Mejora de Notificaciones en Android. Curso de Android con Java

Teoría Intents Fecha 2016/04/12

Almacenamiento en Android

Clases Abstractas e Interfaces

INICIACIÓN A LA PROGRAMACIÓN PARA ANDROID

Documento técnico: Estudio del troyano: "Tap Snake"

Sebastián García Galán

Programación orientada a objetos

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Curso de programación en Android. 19/Junio/2012 Ramón Alcarria Augusto Morales

Android Guía de desarrollo de aplicaciones Java para Smartphones y Tabletas (3ª edición)

Tema 1. Herencia y Polimorfismo

Google Cloud EndPoints (Parte II)

ISE Andalucía. Ente Público Andaluz de Infraestructuras y Servicios Educativos CONSEJERÍA DE EDUCACIÓN SERVICIOS WEB ISE

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

CODIGO PROYECTO: AppPixelproServicioWeb Proyecto Android - Servicio Web

Desarrollo de Aplicaciones para Android

Universitat Oberta de Catalunya. Cuaderno de Viaje. Memoria

Patrones de Diseño. Patrón estructural Composite. Técnicas de Programación - Curso 2007/08

A3F. Polimorfismo. Carlos Fontela

Activities/Intents en Android LSUB, GSYC, URJC

Ejecución de hebras. En realidad, todas las aplicaciones escritas en Java son aplicaciones multihebra (recuerde el recolector de basura).

3Globe. Localización de dispositivos por GPS

MODELO DE IMPLEMENTACIÓN

Programación multimedia y dispositivos móviles. Android y JSON

Animación en Android. Clase Elefante

Desarrollo de Aplicaciones para Android

Cómo leer este libro? PARTE 1. Android Wear CAPÍTULO 1. Introducción a Android Wear y las notificaciones... 19

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Sebastián García Galán

Cursos de orientación profesional

Sesión 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS

Interfaz de usuario Layout Vistas Adaptadores Eventos de interacción Estilos y temas

Servicios. Índice. Copyright Dept. Ciencia de la Computación e IA All rights reserved.

FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL. Trabajo Práctico Nº 4

Concurso: Cuánto sabes de JAVA?

PROGRAMA FORMATIVO Programación para dispositivos móviles Android

Desarrollo de Aplicaciones para Android

ÍNDICE GENERAL. 5. GUARDAR DATOS CON SharedPreferences... 54

GUIs en Java (4) Iván Alonso

CURSO INTERMEDIO DE PROGRAMACIÓN EN ANDROID

Índice. Herramientas de desarrollo. Historia Qué es Android? Arquitectura del sistema. Componentes Android Modelos de Negocio

Ejercicio 1 (proyecto prlistas, paquete listas)

Transcripción:

Sensores de los dispositivos Sesión 2: Geolocalización y mapas 2012-2013 Depto. Ciencia de la Computación e IA

Puntos a tratar Geolocalización Actualización de la posición Alertas de proximidad Geocoder Mapas Localización en el mapa Marcadores Reconocimiento del habla 2

Geolocalización Proveedores GPS Localización fina Necesita dispositivo GPS Red Localización aproximada Usa la célula de la red móvil Permisos <uses- permission android:name= "android.permission.access_fine_location"/> <uses- permission android:name= "android.permission.access_coarse_location"/> 3

Obtener última localización Obtiene última posición registrada No solicita actualizarla al proveedor LocationManager manager = (LocationManager) this.getsystemservice(context.location_service); Location posicion = manager.getlastknownlocation(locationmanager.gps_provider); El objeto Location proporciona Latitud Longitud Altura Velocidad etc... 4

Obtener nueva posición class ListenerPosicion implements LocationListener { public void onlocationchanged(location location) { // Recibe nueva posición. public void onproviderdisabled(string provider){ // El proveedor ha sido desconectado. public void onproviderenabled(string provider){ // El proveedor ha sido conectado. public void onstatuschanged(string provider, int status, Bundle extras){ // Cambio en el estado del proveedor. ; 5

Solicitar actualización de posición Registramos el listener ListenerPosicion listener = new ListenerPosicion(); long tiempo = 5000; // 5 segundos float distancia = 10; // 10 metros manager.requestlocationupdates( LocationManager.GPS_PROVIDER, tiempo, distancia, listenerposicion); Puede tardar en obtener una primera posición Detenemos las actualizaciones manager.removeupdates(listener); 6

Alertas de proximidad Definimos un receptor de intents public class ReceptorProximidad extends BroadcastReceiver { @Override public void onreceive(context context, Intent intent) { // Comprobamos si estamos entrando o saliendo de la proximidad String key = LocationManager.KEY_PROXIMITY_ENTERING; Boolean entra = intent.getbooleanextra(key, false);... Programamos el aviso Intent intent = new Intent(codigo); PendingIntent pi = PendingIntent.getBroadcast(this, - 1, intent, 0); manager.addproximityalert(latitud, longitud, radio, caducidad, pi); IntentFilter filtro = new IntentFilter(codigo); registerreceiver(new ReceptorProximidad(), filtro); 7

Geocoder Transforma entre coordenadas y dirección Directo Universidad de Alicante Inverso [38.3852333,-0.51515] [38.3852333,-0.51515] Universidad de Alicante 8

Uso del geocoder Obtener el objeto Geocoder Geocoder geocoder = new Geocoder(this, Locale.getDefault()); Transformación directa List<Address> coordenadas = geocoder.getfromlocationname(direccion, maxresults); Transformación inversa List<Address> direcciones = geocoder.getfromlocation(latitud, longitud, maxresults); 9

Mapas de Google API no incluida en el SDK básico de Android Necesitamos incluir las librerías de Google Por ejemplo: Google APIs - API Level 8 (Android 2.2) Debemos crear el emulador también con esta API de Google Declarar la librería de Google en el manifest <application android:icon="@drawable/icon" android:label="@string/app_name"> <uses- library android:name="com.google.android.maps" />... <activity android:name=".mapasactivity" android:label="@string/app_name"> <intent- filter></intent- filter> </activity> </application> 10

Actividad del mapa La actividad del mapa debe heredar de MapActivity En el layout incluimos una vista con el mapa No se encuentra en la paleta de componente de Android <?xml version="1.0" encoding="utf- 8"?> <com.google.android.maps.mapview xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mvmapa" android:layout_width="fill_parent" android:layout_height="fill_parent" android:apikey="vzqsgwnxea1f0kdyc1hvvv6c0jfrqw- myelyt6q" android:clickable="true" /> Necesitamos una clave de acceso a la API 11

Clave de acceso Clave vinculada al certificado con el que firmamos la aplicación La obtenemos a partir de la huella MD5 de dicho certificado keytool - list - alias miclave - keystore mialmacen.keystore En caso de utilizar el certificado de depuración por defecto keytool - list - alias androiddebugkey - keystore $HOME/.android/debug.keystore - storepass android - keypass android Obtendremos una clave como Huella digital de certificado (MD5): 52:D6:BD:27:A8:B1:5F:34:5A:BC:81:1C:76:E2:86:9F Debemos registrar en la web de Google Maps para Android http://code.google.com/android/maps- api- signup.html 12

Solicitud de la clave Introducimos huella MD5 de nuestro certificado en la web Obtenemos clave y ejemplo de uso 13

Configuración del mapa Podemos configurar la vista del mapa Activar/desactivar controles de zoom Vista satélite o mapa public class MapasActivity extends MapActivity { @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); MapView mapview = (MapView) findviewbyid(r.id.mvmapa); mapview.setbuiltinzoomcontrols(true); mapview.setsatellite(true); 14

Controlador del mapa Nos permite movernos en el mapa MapController mc = mapview.getcontroller(); Cambiar nivel de zoom mc.setzoom(17); Mover a una posición La posición de indica mediante un objeto GeoPoint Las coordenadas se especifican como enteros (multiplicar por 10 6 ) GeoPoint p = new GeoPoint(LATITUD_1E6, LONGITUD_1E6); mc.setcenter(p); Mover a una posición mediante una animación mc.animateto(p); 15

Marcador de posición Podemos poner un marcador con nuestra posición Los marcadores se añaden como overlays MyLocationOverlay mylocation = new MyLocationOverlay(this, mapview); mapview.getoverlays().add(mylocation); 16

Habilitar seguimiento Podemos hacer que nuestra localización se actualice conforme nos movemos mylocation.enablemylocation(); Mover el mapa a nuestra posición cuando se obtenga mylocation.runonfirstfix(new Runnable() { public void run() { mc.animateto(mylocation.getmylocation()); ); Es importante detener las actualizaciones cuando se cierre la tarea o cuando pase a segundo plano @Override protected void onpause() { super.onpause(); location.disablemylocation(); Podemos volver a habilitarla en onresume 17

Puntos de interés Podemos añadirlos como overlays en el mapa ItemizedOverlay nos permite añadir un conjunto de puntos Cada punto se especifica como un objeto OverlayItem Para cada item especificamos un drawable como marcador ItemizedOverlay es una clase abstracta Debemos definir una subclase 18

ItemizedOverlay class RestaurantesItemizedOverlay extends ItemizedOverlay<OverlayItem> { private List<OverlayItem> mrestaurantes = new ArrayList<OverlayItem>(); public RestaurantesItemizedOverlay(Drawable defaultmarker) { super(defaultmarker); this.mrestaurantes = cargaritemsrestaurantes(); this.populate(); Puebla el mapa con los items @Override protected OverlayItem createitem(int i) { return mrestaurantes.get(i); @Override public int size() { return mrestaurantes.size(); Devuelve cada uno de los items Indica el número de items a mostrar 19

Marcador de los items Se especifica como drawable en el constructor Drawable marker = this.getresources().getdrawable(r.drawable.marker); ItemizedOverlay itemizedoverlay = new RestaurantesItemizedOverlay(marker); Debemos definir sus límites (bounds) Indica la forma de centrar el drawable en el punto del mapa Tenemos el método protegido boundcenter de ItemizedOverlay public RestaurantesItemizedOverlay(Drawable defaultmarker) { super(boundcenter(defaultmarker)); También tenemos boundcenterbottom para tipo chincheta 20

Configuración de los items Los creamos como objetos de tipo OverlayItem Proporcionamos coordenadas, nombre y descripción GeoPoint point = new GeoPoint((int) (restaurante.getlatitud() * 1E6), (int) (restaurante.getlongitud() * 1E6)); OverlayItem overlay = new OverlayItem(point, restaurante.getnombre(), restaurante.getdescripcion()); listarestaurantes.addoverlay(overlay); Podemos especificar un marcador propio Es importante definir los límites del marcador Drawable marcador = this.getresources().getdrawable(r.drawable.marker2); marcador.setbounds(0, 0, marcador.getintrinsicwidth(), marcador.getintrinsicheight()); overlay.setmarker(marcador); 21

Globos informativos El nombre y descripción deberemos mostrarlo nosotros Existen librerías que se encargan de hacer esto MapViewBalloons https://github.com/jgilfelt/android-mapviewballoons Nos muestra la información en forma de globos 22

Uso de MapViewBalloons Incluir en el proyecto Clases BalloonItemizedOverlay y BallonOverlayView Drawable para los marcadores marker.png Drawables para los globos balloon_overlay_close.png balloon_overlay_focused.9.png balloon_overlay_unfocused.9.png balloon_overlay_bg_selector.xml Heredamos de BalloonItemizedOverlay en lugar de ItemizedOverlay class RestaurantesItemizedOverlay extends BalloonItemizedOverlay<OverlayItem> { public RestaurantesItemizedOverlay(Drawable defaultmarker, MapView mapview) { super(boundcenter(defaultmarker), mapview);... 23

Reconocimiento del habla Transforma nuestra voz en texto Soporta diferentes idiomas Propiedad EXTRA_LANGUAGE Por ejemplo es- ES Dos modelos de lenguaje: Búsqueda web (LANGUAGE_MODEL_WEB_SEARCH) Libre (LANGUAGE_MODEL_FREE_FORM) Indicar el modelo de lenguaje es obligatorio Propiedad EXTRA_LANGUAGE_MODEL 24

Lanzar reconocimiento del habla Lanzamos la aplicación Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); intent.putextra(parametro, valor); startactivityforresult(intent, codigo); Propiedades del reconocimiento (modo, idioma, etc) Obtenemos resultados @Override protected void onactivityresult(int requestcode, int resultcode, Intent data) { if (requestcode == codigo && resultcode == RESULT_OK) { ArrayList<String> resultados = data.getstringarraylistextra(recognizerintent.extra_results); // Utilizar los resultados obtenidos... super.onactivityresult(requestcode, resultcode, data); 25

Preguntas...? 26