Usuario:ManuelRomero/Android2/Introduccion

Qué es android

 * Es una plataforma software y un Sistema Operativo basada en el núcleo de Linux.
 * Aplicado a un subconjunto de dispositivos móviles y tablet;
 * Como cualquier sistema operativo permite gestionar y controlar el hardware del dispositivo, como GPS, cámara de fotos,etc;
 * También la ejecución de programas en dicho entorno.
 * Para gestionar hardware tan variado (el que pueden contener dispositivos móviles), se usan bibliotecas desarrolladas o adaptadas por principalmente por Google.
 * Para el desarrollo de aplicaciones se usa el lenguaje de programación Java

Código abierto
Android es una plataforma de código abierto.
 * Esto quiere decir, que cualquier desarrollador puede crear y desarrollar aplicaciones escritas con lenguaje C u otros lenguajes y compilarlas a código nativo de ARM (API de Android)
 * Android se puede desarrollar usando diferentes lenguajes :C, VisualBasic (.NET), C++, C#, QT (Que no deja de ser C++)

Entornos de desarrollo

 * Existen diferentes entornos para desarrollar aplicaciones en android.
 * 1) Basic4Android
 * 2) Visual Studio con SDK:  Android de Mono. C y C#
 * 3) App Inventor
 * 4) Live Code Entorno para desarrollar para aplicaciones móviles de diferentes plataformas
 * 5) In Design CS6
 * 6) En java con IDE Eclipse, Intellij Idea, y ahora en pruebas Android studio

Comunidad de desarrolladores de Android

 * Stack Overflow
 * un sitio colaborativo de preguntas y respuestas para desarrolladores
 * Los desarrolladores votan las respuestas lo cual da confianza sobre las buenas respuestas


 * Google Android Training
 * Tenemos numerosas clases agrupadas por temas
 * Tenemos un manual de como empezar e ir avanzando
 * Es una importante y garantizada fuente de información


 * Android Discuss
 * es un grupo de debate y discusión alojado en google; Seguido muy de cerca por el equipo de Android en Google
 * Buen sitio para aclarar dudas y aprender trucos y consejos.

Historia de Android

 * 1) Inicialmente desarrodo por Android Inc., una pequeña compañía o startup (''así se conoce a los negocios con amplias posibilidades de crecimiento el EEUU) fundada en California en 2003
 * 2) En julio de 2005, Google adquirió Android Inc.
 * 3) En diciembre de 2006 aumentó notablemente la especulación sobre que el sistema Android de Google entraría en el mercado de la telefonía móvil.
 * 4) En septiembre de 2007, se conocía que Google había solicitado diversas patentes en el área de la telefonía móvil.
 * 5) El 5 de noviembre de 2007 se creó la Open Handset Alliance, un consorcio de más de 48 compañias de software y hardware  que concluyeron la finalidad de desarrollar est´ndares abiertos para dispositivos móviles.
 * 6) La Open Handset Alliance, la OHA estrenó su primer producto, Android, una plataforma para dispositivos móviles construida sobre la versión 2.6 de Linux.
 * 7) El 9 de diciembre de 2008, se anunció que 14 nuevos miembros se unirían al proyecto Android, incluyendo PacketVideo, ARM Holdings, Atheros Communications, Asustek, Garmin, Softbank, Sony Ericsson, Toshiba, Vodafone y ZTE.

Qué version usan los dispositivos
http://developer.android.com/about/dashboards/index.html
 * A la hora de desarrollar una aplicación habría que ver qué versiones tienen los dispositivos
 * Google facilita un estudio con esta información
 * Conviene echarle un vistazo
 * Esto es muy importante ya que nosotros dependemos de versiones de API
 * si mi aplicación usa API de version 15 por ejemplo, no se podrá ejecutar en dispositivos que tengan API de inferior version
 * Solución de compromiso
 * No usar API de versión moderna implica llegar a más público
 * No usar API de versión moderna implica no poder usar nuevas funionalidades

Carácterísticas de Android

 * Almacenamiento
 * Utiliza SQLite: base de datos relacional y ligera.

GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, incluyendo A2DP, AVRCP), Wi-Fi, LTE, WiMAX
 * Conectividad: Soporta las siguientes tecnologías para conexiones
 * Mensajería
 * tanto SMS como MMS


 * Navegador Web
 * Basado en código abierte de WebKit junto con JavaScript V8 de Chrome

Carácterísticas de Android

 * Multimedia
 * Soporte para medios con formatos comunes de audio, video e imágenes planas
 * incluye los siguientes soportes

H.263, H.264(1) ,MPEG-4 SP, AMR, AMR-WB(2), AAC, HE-AAC(1), MP3, MIDI, Ogg Vorgis, WAV, JPEG, PNG, GIF Y BMP
 * 1) En contenedor 3GP o MP4
 * 2) En contenedor 3GP
 * Soporte Harware (Siempre que el dispositivo disponga del hardware)
 * Sensor acelerómetro, cámaram brújula digital, sensor de proximidad y GPS

Carácterísticas de Android

 * Multipantalla táctil multipunto
 * entre 5 y 10 puntos de reconocimeintos simultáneos


 * Multitarea
 * Soporte Flash:La versión 2.1 de Android soporta Flash 10.1
 * Tethering
 * Soporta el uso compartido de conexiones a Internet como un punto de acceso por cable/inalámbrico


 * Framework de aplicaciones
 * permite el reemplazo y la reutilización de los componentes.


 * Máquina virtual Dalvik
 * Base de llamadas de instancias muy similar a Java. Para entornos de desarrollo

Arquitectura de Android
Imagen:ArquitecturaAndroid.png

Arquitectura del sistema operativo Android
Consta de los siguientes niveles que posteriormente comentaremos
 * El sistema operativo Android se divide en 5 secciones de 4 niveles principales
 * 1) Nivel de aplicación
 * 2) Nivel de arquitectura  de software de la aplicación o framework de aplicaciones
 * 3) Nivel de librerías (Formado por librerías y y nivel de tiempo de ejecución de android
 * 4) Nivel de Kernel de Linux

NIVEL DE APLICACIONES

 * Este nivel referencia a todas las aplicaciones que se distribuyen con el sistema operativo
 * Cada una de ellas ha de correr en una máquina virutal Dalvik
 * Entre ellas tendremos seguro:
 * 1) contactos
 * 2) cliente de correo
 * 3) calendario, y algun otro servicio mínimo
 * 4) También se incluyen todas las aplicaciones que podemos descargar e instalar desde Google Play

Arquitectura : FrameWork

 * El Framework proporciona muchas interfaces de programación
 * Esto posibilita una programación sencilla simplificando el desarrollo y reutilizando recursos
 * Todos los desarrolladores de aplicaciones Android, tienen acceso total al código fuente usado en las aplicaciones base.

Arquitectura : FrameWork (entorno de desarrollo de aplicaciones)
En ella tenemos una serie de componentes, accesibles para los desarrollo de aplicaciones. Lo que desarrollemos se puede reutilizar ya que puede implementar uno de los componentes disponibles Es la base de los componentes gráficos p.e. un botón es una clase que extiende de view. El SDK de android aunque accede a gran parte de JRE, p.e. la clase Swing no lo incorpora
 * Tenemos las siguientes elementos:
 * 1) View

Arquitectura : FrameWork (entorno de desarrollo de aplicaciones)

 * 1) Activity
 * Gestiona las actividades y la pila de ejecución arrancando, parando ocultano o eliminando actividades


 * 1) Content Provider
 * Para permitir a las aplicaciones acceder a datos y otros programas de aplicación


 * 1) Gestor de recursos
 * para gestionar las partes que no son programa como codificación multilenguaje, fotos y efectos de sonido.


 * 1) Gestor de notificaciones
 * para permitir a las aplicaciones notificar a la interfaz de mensajes de usuarios, meidante la barra de estado

Arquitectura : Librerías

 * Son librerías enlazadas de C y C++, conectadas en dos direciones
 * 1) Hacia arriba con el framework de aplicaciones
 * 2) Hacia abajo con el kernel del SO

Arquitectura : Librería principal o nativas

 * La libería principal incluye las siguientes:
 * 1) Una librería de sistema C
 * 2) Una librería multimedia (Soporta MPEG4, H.264, MP3, AAC, AMR, JPG, PNG)
 * 3) Librería de administrador de superficies: acceso a la representación 2D y 3D.
 * 4) SGL Motor gráfico 2D
 * 5) Una librería de base de datos SQLite

Arquitectura : Librería principal o nativas

 * 1) Una librería de 3D implemntación de OpenGL ES 1.0
 * 2) Una librería de fuentes bitmap y renderizado vectorial
 * 3) Una librería de WebKit para funcionalidades de navegación web.
 * 4) Librería de seguridad : SSL cifrado de Secure Socket Layer

Arquitectura : RunTime

 * A este nivel tenemos la librería del kernel y la máquina virtual de Dalvik
 * Se usa esta MV y no la de Java por las limitaciones de memoria y velocidad de los dispositivos.
 * Android incorpora un set de librerías que aportan la mayor parte de las funcionalidades disponibles en las librerías base del lenguaje de programación Java.
 * La Máquina Virtual está basada en registros, y corre clases compiladas por el compilador de Java que anteriormente han sido transformadas al formato .dex (Dalvik Executable) por la herramienta dx.

Arquitectura : RunTime

 * Los ficheros dex están obtimizados en espacio (menos instrucciones menos espacio y más rápida la ejecución)
 * Cada aplicación se ejecuta en una instancia de una máquia virtual.
 * Linus crfea un thread con una instanacia de la MV Dalvik
 * Esto es un principio de seguridad importante, y por ese motivo hay que dar permisos para acceder al hardware en el desarrollo de la aplicación.-

Arquitectura: Nivel de kernel de Linux

 * Esta basado en un kernel 2.6
 * Éste es el kernel sobre el que se basa Android.
 * Contienen todos los controladores de dispositivos de bajo nivel para los diversos componentes de hardware

Dónde está presente Android

 * 1) Smartphones
 * 2) Tablets
 * 3) Dispositivos de libros electrónicos
 * 4) NetBooks
 * 5) Reproductores MP4
 * 6) Internet TV

Referencias

 * 1) http://es.wikipedia.org/wiki/Android
 * 2) http://androideity.com/2012/07/16/5-lenguajes-para-programar-en-android/