Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Presentacion Plataformas moviles

3,854 views

Published on

Esta presentacion incluye oportunidades de mercado de aplicaciones moviles, A su vez, conceptos de desarrollo movil, utiles para Android, Blackberry, Android, y iPhone.

This presentation contains market opportunities for mobile applications, and an introduction to techniques and demos on application development for Android, Blackberry, and Android.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Presentacion Plataformas moviles

  1. 1. FUNDACION <br />SALVADOR MONCADA<br />PARA EL AVANCE DE LA CIENCIA<br />SEPLAN<br />Plataformas MóvilesEdwin Hernández, PhDTegucigalpa, 11 de agosto de 2010<br />
  2. 2. Temario<br /><ul><li>Introduccion
  3. 3. Mercado Movil de Aplicaciones
  4. 4. Desarrollo
  5. 5. Android
  6. 6. BlackBerry (J2ME)
  7. 7. iPhone
  8. 8. Brainstorming </li></li></ul><li>Introduccion<br />Dr. Edwin Hernández<br />Socio de Honduras Global<br />
  9. 9. Dr. Edwin A. Hernandez<br />Ingeniero en Electrónica, MaestríayDoctorado en IngenieríaEléctricayComputadoras.<br /><ul><li>Emprendedor: Varias empresas fundadas COMPUNET, UBIWIRELESS LLC, EGLA CORP, Rapid Mobile Tech. Inc
  10. 10. Inventor con 5 Patentes asignadas, y 7 por asignar. Participación en foros y paneles de IEEE/ACM, publicaciones y editor para revistas tecnologicas.
  11. 11. Experiencia en la Industria de Software en Estados Unidos
  12. 12. Microsoft: Redmond, WA. Windows Networking
  13. 13. Motorola: Plantation, FL. Mobile Devices</li></li></ul><li>Mercado de Aplicaciones Móviles<br />Áreas de mercado, evolución de Smartphones, posibles aplicaciones.<br />
  14. 14. El caso de Honduras<br />Uso de “mensajería” de texto y multimedia<br />Gran cantidad de “Smartphones” <br />Costo bajo de 3G ($15/mes)<br />Hay en realidad un mercado de aplicaciones móviles?<br />
  15. 15. ¿Que se puede hacer con los Smartphones de Hoy?<br />Blackberry, Android, iPhone<br />Soporte multimedia (MP3, AAC, tiempo real, Video)<br />GPS y Localización (Quizás Wifi-based no funcione en Honduras)<br />Almacenamiento, SD Card, 2GB? O mas?<br />Memoria: 64MB hasta 1GB<br />Procesador : Qualcomm’s 1GHz <br />Soporte de WiFi, Bluetooth, Camera<br />Internet, Redes Sociales, …..<br />Oportunidades de Monetizacion<br />Fuente: Revista Tecno, producida por EL HERALDO<br />
  16. 16. Caso: Encontrar mi teléfono<br />Problema: “Yo necesito encontrar algo, utilizo mi teléfono para detectar su localización” <br />GPS disponible en 99% de unidades<br />Aplicaciones residentes y corriendo en el background<br />Es posible que se necesite un “servidor” que tenga un webservice para localizar el dispositivo.<br />Tengo una idea novedosa para esto……<br />
  17. 17. Brainstorming…<br />
  18. 18. Investigación de Aplicaciones similares en (App Store):<br />¿Parece que ya lo pensaron muchos?<br />
  19. 19. “Zooming In”<br />
  20. 20. Mercado de las Apps Móviles <br />Fuente: Mashable.com“Mobile AppMarketto Surge to $17.5Bil By 2012”<br />Fuente: Morgan Stanley’sReport<br /> “Mobile Internet to Eclipse Desktop Internet, social networkingdrivinggrowth” “57Mi iPhoneusers, 100K Apps, 2B+ Downloads” <br />Google se adueña del 98.29% de busquedasmoviles<br />
  21. 21. Mercado de Apps Móviles<br />Predicciones en lo relacionado a Geo-Local, como Loopt, Foursquare, Gowalla, y lo que se denomina “AugmentedReality” apps<br />“Golden Triangle” de Morgan Stanley, Geo-Apps, y Mobilidad social<br />
  22. 22. Reportes de Admob<br />Porque es importante Admob<br />Revisemos los reportes de:<br />Mayo 2008 : mobile_metrics_may_08.pdf<br />Mayo 2009 : admob-mobile-metrics-report-may-2009.pdf<br />Mayo 2010 (Ultimo de Admob al publico): May-2010-AdMob.pdf<br />
  23. 23. Ventas de iPhone<br />
  24. 24. Conclusiones<br />Estudiar el mercado de aplicaciones móviles, antes de aventurarnos<br />Muchas aplicaciones para mercados verticales tienen sentido<br />Uso del móvil para aumentar la realidad y crear redes sociales reales.<br />
  25. 25. Desarrollo de Aplicaciones Móviles<br />Dirigido a Ingenieros de Software y otros entusiastas<br />
  26. 26. Requisitios<br />Android<br />Mac, Linux o Windows<br />Emulador incluido para desarrollo<br />Entendimiento de Linux para el kernel<br />Java y Eclipse<br />Blackberry<br />Windows, Mac (hack), Linux (compilacion) <br />Emulador incluido para desarrollo<br />Java, y J2ME o Java Microedition.<br />
  27. 27. Requisitos<br />iPhone<br />Solamente en Mac y Xcode<br />
  28. 28. Android<br />Plataforma de Desarrollo<br />
  29. 29. Contenido de la Presentación<br />Introducción a la architectura de Android<br />Formas de trabajar en Android<br />Android SDK : Desarrollar Applicaciones<br />Android NDK: Desarrollar librerias nativas<br />MyDroid: Codigo entero que corre en el emulador o en el telefono.<br />
  30. 30. Android<br />Android es un “middleware” un software stack para sistemas móviles que incluye:<br />Una Máquina Virtual: DALVIK-VM (Comprado por Google y Optimizado)<br />Serie de Librerías y Recursos escritos en Java: JDK, Jars, JNI, Reflexión<br />KERNEL: LINUX 2.6-* que se continua actualizando<br />Cada “release” tiene nombres de postres, “cupcake”, “donut”, “eclaire”, etc<br />
  31. 31. Logica para programa en Android<br />Codigo en JAVA+C/C++<br />Recursos en XML<br />Compilacion a<br />.class<br />Generacion .DEX con Optimizacion<br />Archivo APK <br />
  32. 32.
  33. 33. Arquitectura simple de un Smartphone<br />Modem<br />GSM/3G/CDMA<br />AP<br />Android Runtime<br />Linux Kernel<br />2.6.x<br />Modem Link<br />
  34. 34. Componentes del Middleware<br />Application/Activity<br />Android Service<br />JNI (Java)<br />Java Native Interface<br />Middleware/Native ServiceBSP Component<br />
  35. 35. Otraspartes de Android<br />Framework en Java con muchosobjetosyclasesparautilizar<br />Dalvik virtual machine: Dalvik-VM <br />Integrated browser based on the open source WebKit engine<br />Gráficos con OpenGL ES<br />SQLiteparaalmacenardatos<br />Multimedia: audio, video, eimagenes (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)<br />Telefonia (GSM, CDMA)<br />GPS, Bluetooth, WiFi, ymas, derivados de Linux<br />
  36. 36. Ahoravamos a Linux<br />Linux: Uso del “driver model,” open source, Abstraccion de Hardware (HAL), manejo de memoria, seguridad<br />LibreriasNativas: Manejo de Superficies via OpenGL yotraslibreriasnativascomo: Packet Video, SQL Lite, WebKit.<br />EL “Android Runtime”: Dalvik VM. DEX file support, .class files are converted are runtime ymapeadas a procesosnativos Linux<br />
  37. 37. Productos a Desarrollar en Android<br />Primero: Aplicaciones, son archivos “APK”<br />Desarrollo via Eclipse o MOTODEV, hasta “vi”.<br />Android SDK (Reciente version 2.2)<br />Segundo: Libreriasnativaspara Android, muchosparamejorarrendimientoyparafuncionalidadque no esta en el “framework” lasagregan locales (NDK)<br />Tercero: Crear imagines, se podriahacer un acuerdo de colaboración con un proveedor de hardware ysu BSP ycreartelefonosinteligentes<br />
  38. 38. Quemasnecesitamosparahacerunaaplicación?<br />Muchacreatividad!<br />Bajartodaslasherramients<br />Todaslasherramientas son gratuitas! <br />Diseñar el flow yempezar a probarlo en el emulador<br />
  39. 39. Ambiente de Desxarrollo<br />Eclipse/MotoDev<br />Bajar el SDK dehttp://source.android.com/source/download.html<br />Seguirinstrucciones de Google parainstalar SDK<br />Important components<br />ADB: Android Debug Build <br />DDMS: Debug Data Management System <br />Android script: Para crearAVDs (Android Virtual Device)<br />Emulator: QEMU parasimular el telefono<br />DX: Converte los .class a DEX<br />
  40. 40. Eclipse<br />
  41. 41. Android Script<br />
  42. 42. DDMS<br />
  43. 43. Emulator<br />
  44. 44. ADB: Android Debug Bridge<br />
  45. 45. DroidDraw<br />
  46. 46. Estructura de lasAplicaciones Android<br />SDK Demo utilizando Eclipse yAPIDemos<br />
  47. 47. Dentro de un APK file<br />
  48. 48. Componentes de un APK<br />Activity: Es la “actividad.” Muchoscrean un “Application” con muchas “actividades”<br />Intent: Mecanismoutilizadoparaactivarcomponentesycomunicarse entre actividades. <br />Broadcast Receiver: Estandiseñadospararegistrarse a leer “Intents” yrecibirlos<br />Content Providers: Proveendatos a todo el sistema, acceso a Contactos, Listado de Mensajes, DRM<br />Services: No tienen UI, ypor lo general correr en el “background”<br />
  49. 49. Estados de unaAplicacion en Android<br />
  50. 50. Service<br />
  51. 51. Activity<br />Unidad Principal. Unaactividades lo que se ejecutayesmanejadopor el Dalvik-VM en un “life-cycle”. <br />Unaaplicacionpuedetenervariasactividadesentrelazadas, perosolamenteunaes la que se lanza del icono principal<br />El UI se define via el archivo “Manifest,” DroidDrawo un XML Editor<br />El Archivo Manifest, contieneimportantesdefinicionespara la “Actividad,” UI, filtros de intents, otrasactividades, permisos de acceso. <br />
  52. 52. Service<br />Un servicio, probablemente no tiene UI<br />GeneralmenteutlizaNoticacionesy el Toolbar parapresentaractualizaciones<br />Generalmente se comienay se manaja en el background<br />Tratar de utilizar la claseAsyncTaskparacorrerprocesos en el “background”<br />
  53. 53. Intent<br />Mecanismo de comunicación entre actividades (Activities)<br />Puede ser implicito, oexplicito<br />Se puedehacer un Broadcast Intent, o se puedeseleccionar la claseque se quierelanzar.<br />Se puedendefinirnuevos intents, INTENT_WEBCONF si se desa via archivo manifest <br />
  54. 54. Broadcast Receiver<br />Se implementapararecibir un Intent, ya sea queeste en el sistema: e.g. ACTION_CALL ocualquier intent creadoporunaactividad<br />El BroadCastRecieveresutilapramanejareventos<br />Chequear los “Permissions” siempre, no todos los Intents puedenrecibirseporunaclases de estetipo<br />
  55. 55. Content Provider <br />Es simplementeunaabstraccionparaaccesarunaclase de datos, de unaovariastablas en SQLITE o en un archivo<br />El ContentProviderimplementa el acceso a la clase, se puedeutlizar de variasactividadesy no se necesitanhaceruso de comandostipo SELECT como en SQLITE<br />Muchos “Developers” no los utilizan<br />
  56. 56. SeguridadyPermisos<br />Cadaaplicacioncreada en /data/ tiene un UID unico<br />Cadaaplicacioncreada en /system es de otro UID ygeneralmente no se puedeborrar del sistema<br />La seguridad de aplicacionespuederequerirfirmar el APK con unamismallaveparaverificar sea valido<br />A suvez, Certificadosasociados con el “System” previeneningreso no autoizado<br />En un “rooted” phone estospermisos son validosperopueden ser reemplazados.<br />
  57. 57. Muchosotrosservicios en Android<br />Location: GPS a travez de LocationProviders<br />Multimedia <br />Mensajeria de Textoy Multimedia<br />Busqueda<br />Muchosmaslocalizados en: http://developer.android.com/resources/index.html<br />
  58. 58. VeamosEjemplo de “APIDemo”<br />Views<br />App<br />OS<br />WebViews<br />ListActivity<br />
  59. 59. Codigo de Android <br />Goldfish: ArquitecturaProveida en Android 2.2<br />
  60. 60. MyDroid : Open Source<br />Podemosrevisartodo el codigo de los “Repos” de Google, incluyendocodigo de HTC, yotros “Vendors”<br />Quepodemosencontrar:<br />Un Browser: Browser App<br />Un Provider: Digital Rights Management <br />Integracion con el Kernel: BSP es Goldfish Architecture.<br />Muchamemoria, 8GB mínimo. Seguirinstruccione en:<br />http://source.android.com/source/git-repo.html<br />
  61. 61. “Browser Activity”<br />
  62. 62. Codigo Nativo (NDK)<br />Resumen de funcionamiento : JNI – Java Native Interface<br />
  63. 63. NDK<br />Se puedencrearlibrerias de extension .so en C/C++<br />Ejemplos de combinacionNativo + Java<br />Bluetooth<br />RIL : Radio Interface Layer <br />Camera App<br />DRM: Digital Rights Management<br />Now your own applications! <br />
  64. 64. NDK<br />
  65. 65. NDK<br />Codigo en C<br />
  66. 66. Futuro de Desarrollo de Apps<br />App Inventor : Enlistarsepararevisar BETA<br />
  67. 67. MOTODEV DEMO<br />Motorola<br />
  68. 68. Desarrollo en BlackBerry y J2ME<br />Java Micro-Edition <br />MIDP, CLDC, net.rim.*<br />
  69. 69. Java: “En todos sabores”<br />
  70. 70. Java Micro-Edition<br />Nace en 1997-1998<br />Primer telefono con J2ME MIDP 1.0, Motorola iDEN i85<br />Features<br />2 socketsudp<br />1 sockettcp<br />Heap de 640K<br />Canvas<br />Muchas clases no-estandares, o com.motorola.*<br />
  71. 71. Comparación J2ME - Android<br />
  72. 72. Conceptos en J2ME<br />MIDlet: Unidad fundamental, es la aplicación en si<br />RMS: Record Management System, manejo de archivos en Java y una pequeña base de datos.<br />PushRegistry: Enviar un mensaje para despertar un midlet<br />Profile: Implementación de una serie de especificaciones.<br />Signatures: A midlet may requiresignaturetoaccesssomeAPIs<br />JSR: Java SpecificationReference: JSR-82: Bluetooth, JSR-179 Location, JSR-177: Security, etc.<br />PropietaryAPIs: com.mot.*, net.rim.*, others.<br />
  73. 73. Arquitectura de J2ME<br />
  74. 74. J2ME: Hoy<br />As of 22 December 2006, the Java ME source code is licensed under the GNU General Public License, and is released under the project name PhoneME.<br />
  75. 75. MIDLetLifecycle<br />AMS<br />Application Management System<br />
  76. 76. MIDLet: Estructura<br />import javax.microedition.midlet.*;<br />importjavax.microedition.lcdui.*;<br />public class HelloMidp extends MIDlet {<br /> Display display;<br /> Form mainForm;<br />public HelloMidp () {<br />mainForm = new Form ("HelloMidp");<br /> }<br />
  77. 77. Código de un MIDlet<br />public HelloMidp () {<br /> display = Display.getDisplay (this);<br />mainForm = new Form ("HelloMidp");<br /> try {<br />ImageItem logo = new ImageItem<br /> ("Copyright: ", Image.createImage ("/mcp.png"), <br />ImageItem.LAYOUT_CENTER | ImageItem.LAYOUT_NEWLINE_BEFORE<br /> | ImageItem.LAYOUT_NEWLINE_AFTER, "Macmillian USA");<br />mainForm.append (logo);<br /> }<br /> catch (IOExceptione) {<br />mainForm.append (new StringItem<br /> ("Copyright", "Sams Publishing; Image not available:" + e));<br /> }<br />}<br />
  78. 78. Ambientes para hacer MIDLets<br />WirelessToolkit<br />Eclipse con MIDP 2.0<br />Netbeans con varios plug-ins y mobiletools<br />“Edit” y compilación en “commandline”<br />
  79. 79. Blackberry Tools<br />JDE: Java Dev. Environm.<br />MDS (Mobile Data Systems): Simulador de red de Blackberry para usar datos<br />Eclipse runtimefor Bberry<br />Utilizar el WTK y los herramientas estandares de desarrollo.<br />
  80. 80. Que ha hecho RIM<br />Ha extendido la clase object con librerias propietarias net.rim* y muchas aplicaciones en lugar de derivarse de la clase MIDLet se derivan de UI Applictation.<br />
  81. 81. Desglosando algunas applicaciones de J2ME y BlackBerry<br />VNC para demo<br />
  82. 82. IOS: IPHONE OperatingSystem<br />Apple<br />pple has filed more than 200 patent applications related to the technology behind the iPhone<br />
  83. 83. Introducción<br />
  84. 84. IOS : Arquitectura<br />
  85. 85. Arquitectura de IOS<br />Multitasking oMultitares<br />AplicacionescontruidasutilizandoiPhone SDK 4.0 o superior no son terminadas al presionar la tecla de “Home” en lugar a eso, son enviadas al “background”<br />Data Protection oProteccion de Datos<br />Las aplicacionesqueutilizaninformacion sensible puedentomarventaja de la encriptacion “built-in”, guardandoarchivos en formatoprotegidocuando se require. <br />Notificacion via Push de Apple<br />Los usuarios de iPhonepuedencrearnotificaiones via Push a sususuarios, ya sea en formatotextoo beeps, siestosestansuscritos a la notificacion PUSH. <br />
  86. 86. Arquitectura IOS<br />Gestos<br />UIKit ahora incluye UIGestureRecognizer que define los comportamientos basicos de los gestos. Ud puede definir los suyos, incluyendo:<br /><ul><li>Tapping (tocar una o mas veces)
  87. 87. Pinching in and out (Usar dos dedos para zoom)
  88. 88. Panningordragging (halar, mover y agarrar)
  89. 89. Swiping (in anydirection) (Barrer la pantalla)
  90. 90. Rotating (fingers moving in oppositedirections) ( Dedos moviendose en direcciones opuestas)
  91. 91. Long presses (Presionar por largo rato)</li></li></ul><li>Herramientas para desarrollar<br />Xcode Tools – Proveelasherramientas de soporteparadesarrollar::<br /><ul><li>Xcode- Un IDE paradesarrollar, editar, compilar, yhacer debugging.
  92. 92. Interface Builder - Uneherramientahechaparacrear interfaces del usuario
  93. 93. Phone Simulator – a Applicacionquesimular la funcionalidad del IOS
  94. 94. iOS Reference Library- La referenciadle SDK paradesarrollarapplicacionespara IPHONE, IPOD. </li></li></ul><li>Xcode: Primero<br />CreateNew Iphone Project.<br />
  95. 95. Xcode: Project<br />
  96. 96. Xcode: Run<br />
  97. 97. Editar hellowviewcontroller.h<br />Agregando nuevas variables, como txtUserName1.<br />
  98. 98. Connection Inspector<br />Mapea funcione y parametros en el archivo .h, al InterfaceBuilder.<br />
  99. 99. Como es el UI que definimos<br />UITextField<br />UILabel<br />UIWebView<br />
  100. 100. Buildand Run<br />UIWebView con el contenido del UITextField URL<br />
  101. 101. Thanks! Gracias.<br />

×