Taller livetrackingandroid

258 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
258
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Taller livetrackingandroid

  1. 1. Tracking con Android, pgws y OpenLayers (Introducción a la programación con Android
  2. 2. racking con Android, pgws y OpenLayers (Introducción a la programación con AndroMercatorLab S.L. Distribuye este documento bajo licencia Creative Commons Reconocimiento, Compartir, Igual 3Los términos de la licencia se pueden consultar en: http://creativecommons.org/licenses/by-sa/3.0/Enero 2011)
  3. 3. Introducción: ¿Quien soy yo?¿Quien soy yo?Santiago Higuera de Frutos, nacido 1960, Ingeniero de Caminos, Marino y Geoinquieto¿Que hago ahora?Sacar adelante mi empresa MercatorLab S.L., un negocio dedicado al desarrollo de aplicaciones LBS (Location Based Services) basadas en software libre y a la formación y consultoría en temas GIS Open Source.Terminar mi doctorado en la Escuela de Caminos de Madrid, con tesis acerca de los GPSs, la geometría de las carreteras y los algoritmos genéticos. Algunos enlaces Algo parecido a un currículum: http://ingemoral.es/docs/curriculo_2011.pdf MercatorLab: http://mercatorlab.com Twitter : https://twitter.com/#!/santiagohiguera Email: shiguera@mercatorlab.com
  4. 4. Introducción: ¿De que va este taller?Introducción a AndroidDurante el taller se repasarán los conceptos básicos de la programación con Android.Ejemplo de uso : TrolpicalRealizaremos un programa de tracking que permite ir leyendo la posición del GPS del dispositivo Android y transmitir dichas posiciones vía internet a la base de datos postgres alojada en un servidor.pgws.phpEl módulo pgws (PostGres Web Service), alojado en el servidor, proporciona un acceso a la base de datos desde cualquier lenguaje de programación, vía peticiones HTTP POST o HTTP GETpgws.jsPara clientes Javascript se puede utilizar una capa intermedia, pgws.js, escrita en Javascript, y que facilita el acceso a postgres sin necesidad de hacer peticiones directas a pgws.php
  5. 5. Indice1 .- Android: ¿Que es Android?2 .- Instalación: SDK, Eclipse, ADT, AVD3 .- El programa Hola Mundo Android4 .- Activity, Layout, Resources5 .- Etiquetas, Campos y Botones6 .- Actividades7 .- Acceso a Internet8 .- Acceso a servicios de localización9 .- pgws10 .- Trolpitrack11 .- pgws.js12 .- Clientes Javascript y OpenLayers13 .- Mejoras a Trolpitrack
  6. 6. 1.- ¿Qué es Android?
  7. 7. 2.- Instalación: SDK, Eclipse, ADT, AVD
  8. 8. .-
  9. 9. 3.- El programa Hola MundoPara entrar en el asistente de creación de proyectos desde el menú de Eclipse: File → New → Other → Android → Android Project Nombre del Versión del API proyecto destino package
  10. 10. 3.- El programa Hola Mundo Android/AndroidManifest.xml /src/.../HolaMundoActivity.java /res/layout/main.xml /res/values/strings.xml
  11. 11. 4.- Activity, Layout, Resources
  12. 12. 4.- Activity, Layout, Resources
  13. 13. 5.- Widgets: Etiquetas, campos, botonesEn Android nos podremos encontrar con distintos tamaños y densidades de pantalla. Las densidades habituales, medidas en textit{dpi}, textit{puntos por pulgada}, son: begin{itemize} item textbf{Baja densidad}: (textit{ldpi}) Con densidad de 120 dpi item textbf{Densidad media} (textit{mdpi}) Con densidad de 160 dpi item textbf{Alta densidad} (textit{hdpi}) Con densidad de 240 dpi end{itemize} En cuanto a los tamaños de las pantallas nos podemos encontrar con: begin{itemize} item textbf{Pantallas Pequeñas} begin{itemize} item textbf{QVGA} Con 240x320 pixels y densidad baja, 120 dpi end{itemize} item textbf{Pantallas normales} begin{itemize} item textbf{WQVGA} Con 240x400 pixels y densidad baja, 120 dpi item textbf{FWQVGA} Con 240x432 pixels y densidad baja, 120 dpi item textbf{HVGA} Con 320x480 pixels y densidad media, 160 dpi item textbf{WVGA} Con 480x800 pixels y densidad alta, 240 dpi item textbf{FWVGA} Con 480x854 pixels y densidad alta, 240 dpi end{itemize} item textbf{Pantallas grandes} begin{itemize} item textbf{WVGA} Con 480x800 pixels y densidad media, 160 dpi item textbf{FWVGA} Con 480x854 pixels y densidad alta, 160 dpi end{itemize} end{itemize}
  14. 14. .- Unidades de medida en pantalladp (Density-independent Pixels) (también vale dip) Unidades relativas a una pantalla de 160 pixels por pulgada. Cualquiera que sea la densidad de puntos del dispositivo la representación de los elementos se hará de forma que 160dp sean 1 pulgada en el dispositivosp (Scale-independent Pixels) Es parecida al anterior, pero tiene en cuenta las preferencias del usuario en cuanto a tamaño de fuentes. Opción recomendada para para el tamaño de las fuentes.pt (Points) Equivalen 1/72 de pulgada con relación al tamaño físico real en pantalla.px (Pixels) Son pixels de la pantalla del dispositivo. No es recomendable pues cada dispositivo puede tener diferentes densidades de pixels por pulgada así como diferentes dimensiones totales en pixels.mm (Milimeters) Milimetros reales en la salida de la pantalla del dispositivo.in (Inches) Pulgadas reales en la salida de la pantalla del dispositivo.
  15. 15. .- Tamaños y densidades de pantallasDensidades en Puntos por pulgada (dpi):Baja densidad (ldpi) : Con densidad de 120 dpiDensidad media (mdpi) Con densidad de 160 dpiAlta densidad (hdpi) Con densidad de 240 dpiTamaños de pantallas:Pantallas Pequeñas QVGA: Con 240x320 pixels y densidad baja, 120 dpiPantallas normales WQVGA: Con 240x400 pixels y densidad baja, 120 dpi FWQVGA: Con 240x432 pixels y densidad baja, 120 dpi HVGA: Con 320x480 pixels y densidad media, 160 dpi WVGA: Con 480x800 pixels y densidad alta, 240 dpi FWVGA: Con 480x854 pixels y densidad alta, 240 dpiPantallas grandes: WVGA: Con 480x800 pixels y densidad media, 160 dpi FWVGA: Con 480x854 pixels y densidad alta, 160 dpi
  16. 16. .- Tamaños y densidades de pantallasEl uso de distintas pantallas se habilita en el AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.siglibre.examples" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="7" /> <supports-screens android:smallScreens="false" android:normalScreens="true" android:largeScreens="false" android:anyDensity="true"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".TestDisplayActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
  17. 17. 5.- Widgets: Etiquetas, campos, botones
  18. 18. .- Eventos y oyentesUn oyente de un evento es un interface existente en la clase View que contiene un único método de callback.Estos métodos son llamados por Android cuando el View que tiene registrado el oyente es activado por el usuario al actuar sobre el item en el interface de usuario. (Por ejemplo, si el View es un Button, el oyente se disparará cuando el usuario pulse el botón). Cada evento tiene su interface oyente y su función de callback: Interface oyente Método Callback View.OnClickListener onClick() View.OnLongClickListener onLongClick() View.OnFocusChangeListener onFocusChange() View.OnKeyListener onKey() View.OnTouchListener onTouch() View.OnCreateContextMenuListener onCreateContextMenu()
  19. 19. .- Notificaciones: ToastToast: Notificación que una vez mostrada desaparece sin intervención del usuario. Toas t . make Te xt ( Hol aM o. t hi s , "He l l o Toas t ", 2000) . s how( ) ; und Toast: Notificación que una vez mostrada desaparece sin intervención del usuario. AlertDialog: Diálogo de notificación con botones para aceptar, cancelar.
  20. 20. .- Notificaciones: AlertDialogAlertDialog: Diálogo de notificación con botones para aceptar, cancelar. ne w Al e rt Di al og. Bui l d e r( t hi s ) . s e t Ti t l e ( "M s s age De mo") e . s e t M s s age ( "Are you s ure you want t o e xi t ?") e . s e t Ne ut ral But t on( "Cl os e ", ne w Di al ogI nt e rf ace . OnCl i ckLi s t e ne r( ) { publ i c voi d onCl i ck( Di al ogI nt e rf ace d l g, i nt s umt hi n) { // no hay que hace r nad a, s e ci e rra s ol o } } ) . s how( ) ;
  21. 21. 6.- Actividades
  22. 22. 7.- Acceso a InternetEsquema general para acceder a Internet:Crear un HttpClient (o acceder a una referencia de uno existente)Instanciar un nuevo método PostMethod o GetMethodAjustar los parámetros HTTP, parejas nombre/valorEjecutar la llamada HTTP a través del HttpClientProcesar la respuesta HTTP Hay que autorizar a la aplicación el acceso a Internet en el AndroidManifest.xml <uses-permission android:name="android.permission.INTERNET"/>
  23. 23. 7.- Acceso a Internet
  24. 24. 8.- Acceso a servicios de localización
  25. 25. 9.- pgws
  26. 26. 10.- Trolpitrack
  27. 27. 11.- pgws.js
  28. 28. 12.- Clientes Javascript-OpenLayers
  29. 29. 13.- Mejoras a Trolpical

×