presentacion plataformas moviles
DESCRIPTION
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.TRANSCRIPT
Plataformas MovilesPlataformas MovilesEdwin Hernandez, PhDEdwin Hernandez, PhD
Tegucigalpa, 10 de agosto de 2010Tegucigalpa, 10 de agosto de 2010
SEPLAN
FUNDACION FUNDACION
SALVADOR MONCADASALVADOR MONCADAPARA EL AVANCE DE PARA EL AVANCE DE LA CIENCIALA CIENCIA
• Introduccion• Mercado Movil de Aplicaciones• Desarrollo en Android• Desarrollo en BlackBerry (J2ME)• Desarrollo en iPhone• Brainstorming
TemarioTemario
Dr. Edwin Hernandez
Areas de mercado, evolucion de Smartphones, posibles aplicaciones.
Reportes de Admob
El caso de HondurasUso de “mensajería” de texto y multimediaGran cantidad de “Smartphones” Costo bajo de 3G ($15/mes)Hay en realidad un mercado de aplicaciones
móviles?
¿Que se puede hacer con los Smartphones de Hoy?Blackberry, Android, iPhone
Soporte multimedia (MP3, AAC, tiempo real, Video)
GPS y Localización (Quizás Wifi-based no funcione en Honduras)
Almacenamiento, SD Card, 2GB? O mas?Memoria: 64MB hasta 1GBProcesador : Qualcomm’s 1GHz Soporte de WiFi, Bluetooth, CameraInternet, Redes Sociales, …..
Oportunidades de Monetizacion
Caso: Encontrar mi teléfonoProblema: “Yo necesito encontrar algo, utilizo
mi teléfono para detectar su localización” GPS disponible en 99% de unidadesAplicaciones residentes y corriendo en el
backgroundEs posible que se necesite un “servidor” que
tenga un web service para localizar el dispositivo.
Tengo una idea novedosa para esto……
Investigación de Aplicaciones similares en (App Store):
Phone Tracker: locate any mobile phone ! Dworld Services Phone Tracker: locate any mobile phone !Cell Phone Tracker Pro Federal Bureau of Apps Cell Phone Tracker ProCell Phone Tracker Reza Alizadeh Cell Phone TrackerCell Phone Tracker Pro FREE Reza Alizadeh Cell Phone Tracker Pro FREEFriend Tracker ( locate any mobile phone ) Ying Mobile Friend Tracker ( locate any mobile phone )Mobile Locator Jaja & Co Mobile LocatoriTrack Phone Locator - Find any mobile phone location icoderz iTrack Phone Locator - Find any mobile phone locationPhone Tracker Presselite Phone TrackerGPS Phone Tracker FREE Patrick Giudicelli GPS Phone Tracker FREECell Phone Tracker Free Inner Four, Inc. Cell Phone Tracker FreeStolen Phone Tracker : Passwords Trap Nuvus Software LLC Stolen Phone Tracker : Passwords TrapGPS Phone Tracker Pro Patrick Giudicelli GPS Phone Tracker ProCell Phone Tracker - Phone Locator Krysis LLC Cell Phone Tracker - Phone LocatorPhoneTrace Design7 PhoneTraceBar Heist : Stolen iPhone Tracker Venkatramanan Krishnamani Bar Heist : Stolen iPhone TrackerAll phone GPS Tracker Global Agent Inc All phone GPS TrackerAll Phone Tracker Pro Global Agent Inc All Phone Tracker ProPhone Tracker Elite Sean Taylor Phone Tracker EliteMobile Tracker - Track any cell phone! JG Applications Ltd Mobile Tracker - Track any cell phone!Cell Usage Tracker iLegendSoft Cell Usage TrackerAAA phone GPS Tracker2 Free Global Agent Inc AAA phone GPS Tracker2 FreeStolen Phone Tracker: Bank Info Trap Nuvus Software LLC Stolen Phone Tracker: Bank Info TrapMyLove Tracker: keep an eye on your boyfriend! Palooza MyLove Tracker: keep an eye on your boyfriend!Phone Locator Palooza Phone LocatorSticker Collection Kaufcom GmbH Sticker CollectionAll Phone Tracker (Track Any Mobile Phone) Global Agent Inc All Phone Tracker (Track Any Mobile Phone)GPS Phone Tracker Patrick Giudicelli GPS Phone TrackerPeople/Phone Tracker Serenity Integration, LLC People/Phone TrackerAAA Phone GPS Tracker2 Pro Global Agent Inc AAA Phone GPS Tracker2 ProThe phone tracker intergoldex llc The phone trackerPhone Tracker Plus Sean Taylor Phone Tracker PlusMyLove Tracker: keep an eye on your girlfriend! Palooza MyLove Tracker: keep an eye on your girlfriend!Track Me + : Get Cordenates - Altitude - Current Location EmpoweredDesignApps Track Me + : Get Cordenates - Altitude - Current LocationWhere is it? Locate a phone number with your iphone jes6mac Where is it? Locate a phone number with your iphonemyMCLE California Law On My Phone myMCLE CaliforniaGPS Phone Marker Servin Corporation GPS Phone MarkermyCLE New York Law On My Phone myCLE New YorkWake Me There Lite Moshe Shitrit Wake Me There LitemyMCLE Louisiana Law On My Phone myMCLE LouisianamyMCLE Texas Law On My Phone myMCLE TexasWake Me There Moshe Shitrit Wake Me TheremyCLE Florida Law On My Phone myCLE FloridaNell McAndrew's Royal Parks Foundation Half Marathon Tips Content Podcasts Nell McAndrew's Royal Parks Foundation Half Marathon TipsMobilme MyphoneGoogle maps click to call
¿Parece que ya lo pensaron muchos?
“Zooming In”GPS Phone Tracker FREE Patrick Giudicelli GPS Phone Tracker FREE
Cell Phone Tracker Free Inner Four, Inc. Cell Phone Tracker FreeStolen Phone Tracker : Passwords Trap
Nuvus Software LLC
Stolen Phone Tracker : Passwords Trap
GPS Phone Tracker Pro Patrick Giudicelli GPS Phone Tracker Pro
Cell Phone Tracker - Phone Locator Krysis LLC Cell Phone Tracker - Phone Locator
PhoneTrace Design7 PhoneTrace
Bar Heist : Stolen iPhone TrackerVenkatramanan Krishnamani Bar Heist : Stolen iPhone Tracker
All phone GPS Tracker Global Agent Inc All phone GPS Tracker
All Phone Tracker Pro Global Agent Inc All Phone Tracker Pro
Dirigido a Ingenieros de Software y otros entusiastas
RequisitiosAndroid
Mac, Linux o WindowsEmulador incluido para desarrolloEntendimiento de Linux para el kernelJava
BlackberryWindows, Mac (hack), Linux (compilacion) Emulador incluido para desarrolloJava, y J2ME o Java Microedition.
Plataforma de Desarrollo
Contenido de la PresentaciónIntroducción a la architectura de AndroidFormas de trabajar en Android
Android SDK : Desarrollar ApplicacionesAndroid NDK: Desarrollar librerias nativasMyDroid: Codigo entero que corre en el
emulador o en el telefono.
AndroidAndroid es un “middleware” un software
stack para sistemas móviles que incluye: Una Máquina Virtual: DALVIK-VM (Comprado
por Google y Optimizado) Serie de Librerías y Recursos escritos en Java:
JDK, Jars, JNI, Reflexión KERNEL: LINUX 2.6-* que se continua
actualizando Cada “release” tiene nombres de postres,
“cupcake”, “donut”, “eclaire”, etc
Logica para programa en Android
Codigo en JAVA+C/C+
+
Recursos en XML
Compilacion a
.class
Generacion .DEX con
Optimizacion
Archivo APK
ModemGSM/3G/
CDMAAP
Android Runtime
Linux Kernel2.6.x
Modem Link
Application/Activity
Middleware/Native ServiceBSP Component
Java Native Interface
JNI (Java)
Android Service
Otras partes de AndroidFramework en Java con muchos objetos y clases
para utilizarDalvik virtual machine: Dalvik-VM Integrated browser based on the open source
WebKit engineGráficos con OpenGL ESSQLite para almacenar datosMultimedia: audio, video, e imagenes (MPEG4,
H.264, MP3, AAC, AMR, JPG, PNG, GIF)Telefonia (GSM, CDMA)GPS, Bluetooth, WiFi, y mas, derivados de Linux
Ahora vamos a LinuxLinux: Uso del “driver model,” open source,
Abstraccion de Hardware (HAL), manejo de memoria, seguridad
Librerias Nativas: Manejo de Superficies via OpenGL y otras librerias nativas como: Packet Video, SQL Lite, WebKit.
EL “Android Runtime”: Dalvik VM. DEX file support, .class files are converted are runtime y mapeadas a procesos nativos Linux
Productos a Desarrollar en AndroidPrimero: Aplicaciones, son archivos “APK”
Desarrollo via Eclipse o MOTODEV, hasta “vi”.Android SDK (Reciente version 2.2)
Segundo: Librerias nativas para Android, muchos para mejorar rendimiento y para funcionalidad que no esta en el “framework” las agregan locales (NDK)
Tercero: Crear imagines, se podria hacer un acuerdo de colaboración con un proveedor de hardware y su BSP y crear telefonos inteligentes
Que mas necesitamos para hacer una aplicación?
Mucha creatividad!Bajar todas las herramients
Todas las herramientas son gratuitas! Diseñar el flow y empezar a probarlo en el
emulador
Ambiente de DesarrolloEclipse/MotoDevBajar el SDK de
http://source.android.com/source/download.htmlSeguir instrucciones de Google para instalar SDK
Important componentsADB: Android Debug Build DDMS: Debug Data Management System Android script: Para crear AVDs (Android Virtual
Device)Emulator: QEMU para simular el telefonoDX: Converte los .class a DEX
Eclipse
Android Script
DDMS
Emulator
ADB: Android Debug Bridge
DroidDraw
SDK Demo utilizando Eclipse y APIDemos
Componentes de un APKActivity: Es la “actividad.” Muchos crean un
“Application” con muchas “actividades”Intent: Mecanismo utilizado para activar
componentes y comunicarse entre actividades. Broadcast Receiver: Estan diseñados para
registrarse a leer “Intents” y recibirlosContent Providers: Proveen datos a todo el
sistema, acceso a Contactos, Listado de Mensajes, DRM
Services: No tienen UI, y por lo general correr en el “background”
Estados de una Aplicacion en Android
Service
ActivityUnidad Principal. Una actividad es lo que se
ejecuta y es manejado por el Dalvik-VM en un “life-cycle”.
Una aplicacion puede tener varias actividades entrelazadas, pero solamente una es la que se lanza del icono principal
El UI se define via el archivo “Manifest,” DroidDraw o un XML Editor
El Archivo Manifest, contiene importantes definiciones para la “Actividad,” UI, filtros de intents, otras actividades, permisos de acceso.
ServiceUn servicio, probablemente no tiene UI
Generalmente utliza Noticaciones y el Toolbar para presentar actualizaciones
Generalmente se comiena y se manaja en el background
Tratar de utilizar la clase AsyncTask para correr procesos en el “background”
IntentMecanismo de comunicación entre
actividades (Activities)Puede ser implicito, o explicito
Se puede hacer un Broadcast Intent, o se puede seleccionar la clase que se quiere lanzar.
Se pueden definir nuevos intents, INTENT_WEBCONF si se desa via archivo manifest
Broadcast ReceiverSe implementa para recibir un Intent, ya sea
que este en el sistema: e.g. ACTION_CALL o cualquier intent creado por una actividad
El BroadCast Reciever es util apra manejar eventos
Chequear los “Permissions” siempre, no todos los Intents pueden recibirse por una clases de este tipo
Content Provider Es simplemente una abstraccion para accesar
una clase de datos, de una o varias tablas en SQLITE o en un archivo
El ContentProvider implementa el acceso a la clase, se puede utlizar de varias actividades y no se necesitan hacer uso de comandos tipo SELECT como en SQLITE
Muchos “Developers” no los utilizan
Seguridad y PermisosCada aplicacion creada en /data/ tiene un UID
unicoCada aplicacion creada en /system es de otro UID
y generalmente no se puede borrar del sistemaLa seguridad de aplicaciones puede requerir
firmar el APK con una misma llave para verificar sea valido
A su vez, Certificados asociados con el “System” previenen ingreso no autoizado
En un “rooted” phone estos permisos son validos pero pueden ser reemplazados.
Muchos otros servicios en AndroidLocation: GPS a travez de LocationProvidersMultimedia Mensajeria de Texto y MultimediaBusqueda Muchos mas localizados en:
http://developer.android.com/resources/index.html
Veamos Ejemplo de “APIDemo”ViewsAppOSWebViewsListActivity
Goldfish: Arquitectura Proveida en Android 2.2
MyDroid : Open SourcePodemos revisar todo el codigo de los “Repos”
de Google, incluyendo codigo de HTC, y otros “Vendors”
Que podemos encontrar:Un Browser: Browser AppUn Provider: Digital Rights Management Integracion con el Kernel: BSP es Goldfish
Architecture.Mucha memoria, 8GB mínimo. Seguir
instruccione en:http://source.android.com/source/git-repo.html
“Browser Activity”
Resumen de funcionamiento : JNI – Java Native Interface
NDKSe pueden crear librerias de extension .so en
C/C++Ejemplos de combinacion Nativo + Java
BluetoothRIL : Radio Interface Layer Camera AppDRM: Digital Rights ManagementNow your own applications!
NDK
NDK
Codigo en C
Futuro de Desarrollo de AppsApp Inventor : Enlistarse para revisar BETA
MOTODEV DEMO
Motorola
Java Micro-Edition MIDP, CLDC, net.rim.*
Java Micro-EditionNace en 1997-1998Primer telefono con J2ME MIDP 1.0,
Motorola iDEN i85Features
2 sockets udp 1 socket tcpHeap de 640KCanvasMuchas clases no-estandares, o com.motorola.*
J2ME Hoy