08 Oct

Introducción a Android

  • Basado en Linux.
  • Nace en 2003 en Palo Alto, California.
  • Orientado hacia dispositivos móviles.
  • En 2005, Google adquiere Android.
  • En 2007, se anexa a la Open Handset Alliance.

Open Handset Alliance (OHA)

La OHA está compuesta por:

  • Operadores móviles
  • Fabricantes de móviles
  • Compañías de semiconductores
  • Empresas de software

Bibliotecas y Motores Esenciales de Android

SGL (Scalable Graphics Library)

Se encarga de representar elementos en dos dimensiones; es el motor gráfico de Android.

Open-GL ES

Motor gráfico 3D basado en las APIs ES 1.0 y 1.1. Utiliza aceleración de hardware o un motor de software altamente optimizado.

WebKit

Motor web utilizado por el navegador. Es el mismo motor que utiliza Google Chrome y Safari.

SSL (Secure Socket Layer)

Proporciona seguridad para acceder a internet por medio de criptografía.

Freetype

Permite mostrar fuentes tipográficas, tanto basadas en mapas de bits como vectoriales.

SQLite

Motor de base de datos relacionales, disponible para todas las aplicaciones.

Bibliotecas C/C++

Funcionalidad básica para aplicaciones en sistemas embebidos Linux.

Runtime de Android

Conjunto de bibliotecas para funcionalidad mayormente JAVA.

Marco de Trabajo de Aplicaciones (Application Framework)

Arquitectura diseñada para simplificar la reutilización de componentes. Una aplicación puede publicar sus recursos y otra aplicación puede hacer uso de los mismos, siempre que atienda las reglas de seguridad del framework. Los desarrolladores tienen acceso total a las APIs del framework usadas por las aplicaciones base.

Administrador de Actividades (Activity Manager)

Se encarga de controlar el ciclo de vida de las actividades y la propia pila de las mismas.

Administrador de Ventanas (Window Manager)

Se encarga de organizar lo que se muestra en la pantalla, creando superficies que pueden ser rellenadas por las actividades.

Proveedor de Contenidos (Content Provider)

Permite encapsular un conjunto de datos que se compartirá entre aplicaciones, creando una sola capa de abstracción que hace accesibles dichos datos sin perder el control de acceso a la información.

Vista (Views)

Las vistas son comparables con controles que se suelen incluir en las ventanas.

Administrador de Paquetes (Package Manager)

Permite obtener información sobre los paquetes actualmente instalados en el dispositivo Android, además de gestionar la instalación de nuevos paquetes.

Administrador de Telefonía (Telephony Manager)

Proporciona acceso a la pila del hardware de telefonía del dispositivo Android. Permite realizar llamadas o enviar y recibir SMS/MMS, aunque no permite reemplazar o eliminar la actividad que se muestra cuando una llamada está en curso (por motivos de seguridad).

Administrador de Recursos (Resource Manager)

Proporciona acceso a todos los elementos propios de una aplicación que se incluyen directamente en el código: cadenas de texto traducidas a diferentes idiomas, imágenes, sonidos e incluso disposiciones de las vistas dentro de una actividad.

Administrador de Ubicaciones (Location Manager)

Permite determinar la posición geográfica del dispositivo Android (usando GPS o las redes disponibles) y trabajar con mapas.

Administrador de Sensores (Sensor Manager)

Permite gestionar todos los sensores disponibles en el dispositivo Android: acelerómetro, giroscopio, luminosidad, campo magnético, brújula, proximidad, temperatura, etc.

Cámara

Proporciona acceso a la cámara.

Multimedia

Conjunto de bibliotecas que permiten reproducir y visualizar audio, video e imágenes en el dispositivo.

Aplicaciones del Sistema

Las aplicaciones base incluyen un navegador, cliente de correo, programa de mensajería, calendario, mapas, juegos e inicio (launcher), que es donde se muestran las aplicaciones instaladas, permitiendo lanzarlas, así como mostrar widgets. Las aplicaciones están desarrolladas con base en C++ y/o Java.

Definiciones de Componentes de Desarrollo

Service

Es un componente que puede realizar operaciones en segundo plano sin que exista una interfaz para el usuario. Más fácil de entender: ejecuta una serie de instrucciones en segundo plano.

Intent

Permiten llamar a aplicaciones externas a nuestra aplicación, además de que también sirven para lanzar eventos para que otras aplicaciones puedan responder.

Layout

Es el elemento que se encarga de representar el diseño de la interfaz que se le mostrará al usuario para que interactúe una vez terminada la aplicación. Dentro de ellos se muestran los View y la información de la interfaz.

Frame Layout

Los Frame Layouts son uno de los tipos de layouts más sencillos y eficientes utilizados por los desarrolladores Android para organizar los controles view. Se usan para mostrar solamente una view. Se utiliza como un contenedor layout, ya que generalmente tiene solamente un solo view child.

Activity

Representa una única pantalla de una aplicación. Son las pantallas que generan una aplicación, pantallas con las que los usuarios pueden interactuar; es la representación que visualiza y con la que interactúa el usuario con la aplicación.

Broadcast Receiver

Permite el registro de eventos de la aplicación; en otras palabras, responde a una acción de la misma aplicación. Para esto se tiene que crear una clase. Es un componente que se encarga de recibir y responder los eventos que genera el sistema.

Content Provider

Es un mecanismo que implementa el mismo Android para poder compartir datos entre las aplicaciones. Se utiliza por lo general cuando se usa base de datos SQLite. A través del Content Provider se puede realizar el acceso a información que se quiera compartir con aplicaciones.

View

Son las características de cada uno de los elementos que se encuentran en la pantalla que se muestra de cómo se verá en la aplicación una vez terminada. En el View se pueden tener los demás elementos como lo son layout, scrolling, entre otros.

Resources

Son archivos y contenido estático que se usa en el código para generar la aplicación. Aquí se encuentra lo que es el diseño, strings, además de otras cosas de diseño. En cualquier tipo de recurso se pueden especificar recursos predeterminados y recursos alternativos.

Versiones Históricas de Android

NombreVersión
Apple Pie1.0
Banana Bread1.1
Cupcake1.5
Donut1.6
Eclair2.0 – 2.1
Froyo2.2 – 2.2.3
Gingerbread2.3 – 2.3.7
Honeycomb3.0 – 3.2.6
Ice Cream Sandwich4.0 – 4.0.5
Jelly Bean4.1 – 4.3.1
Kitkat4.4 – 4.4.4
Lollipop5.0 – 5.1.1
Marshmallow6.0 – 6.0.1
Nougat7.0 – 7.1.2
Oreo8.0 – 8.1
Pie9.0
Android 1010.0

Capas de la Arquitectura de Android

  1. Kernel de Linux

    La base de la plataforma Android es el kernel de Linux. El uso del kernel de Linux permite que Android aproveche funciones de seguridad claves y, al mismo tiempo, permite a los fabricantes de dispositivos desarrollar controladores de hardware para un kernel conocido.

  2. Capa de Abstracción de Hardware (HAL)

    La Capa de Abstracción de Hardware (HAL) brinda interfaces estándares que exponen las capacidades de hardware del dispositivo al framework de la Java API de nivel más alto. La HAL consiste en varios módulos de biblioteca, y cada uno de estos implementa una interfaz para un tipo específico de componente de hardware, como el módulo de la cámara o de Bluetooth.

  3. Tiempo de Ejecución de Android (ART/Dalvik)

    Para los dispositivos con Android 5.0 (nivel de API 21) o versiones posteriores, cada aplicación ejecuta sus propios procesos con sus propias instancias del Tiempo de Ejecución de Android (ART). El ART está escrito para ejecutar varias máquinas virtuales en dispositivos de memoria baja ejecutando archivos DEX. Crea cadenas de herramientas, como Jack, y compila fuentes de Java en código de bytes DEX que se pueden ejecutar en la plataforma Android. Estas son algunas de las funciones principales del ART:

    • Compilación Ahead-of-Time (AOT) y Just-in-Time (JIT).
    • Recolección de elementos no usados (GC) optimizada.
    • Mejor compatibilidad con la depuración, como un generador de perfiles de muestras dedicado, excepciones de diagnóstico detalladas e informes de fallos, y la capacidad de establecer puntos de control para controlar campos específicos.

    Antes de Android 5.0 (nivel de API 21), Dalvik era el tiempo de ejecución del sistema operativo. Si tu aplicación se ejecuta bien en el ART, también debe funcionar en Dalvik, pero es posible que no suceda lo contrario.

  4. Bibliotecas C/C++ Nativas

    Muchos componentes y servicios centrales del sistema Android, como el ART y la HAL, se basan en código nativo que requiere bibliotecas nativas escritas en C y C++. La plataforma Android proporciona la API del framework de Java para exponer la funcionalidad de algunas de estas bibliotecas nativas a las aplicaciones.

  5. Framework de la Java API

    Todo el conjunto de funciones del SO Android está disponible mediante APIs escritas en el lenguaje Java. Estas APIs son los cimientos que necesitas para crear aplicaciones de Android, simplificando la reutilización de componentes del sistema y servicios centrales y modulares. Los desarrolladores tienen acceso total a las mismas APIs del framework que usan las aplicaciones del sistema Android.

  6. Aplicaciones del Sistema

    En Android se incluye un conjunto de aplicaciones centrales para correo electrónico, mensajería SMS, calendarios, navegación en Internet y contactos, entre otros elementos. Las aplicaciones incluidas en la plataforma no tienen un estado especial entre las aplicaciones que el usuario elige instalar; por ello, una aplicación externa se puede convertir en el navegador web, el sistema de mensajería SMS o, incluso, el teclado predeterminado del usuario (existen algunas excepciones, como la aplicación Settings del sistema).

    Las aplicaciones del sistema funcionan como aplicaciones para los usuarios y brindan capacidades claves a las cuales los desarrolladores pueden acceder desde sus propias aplicaciones. Por ejemplo, si en tu aplicación se intenta entregar un mensaje SMS, no es necesario que compiles esa funcionalidad tú mismo; como alternativa, puedes invocar la aplicación de SMS que ya está instalada para entregar un mensaje al receptor que especifiques.

Layouts XML para la Interfaz de Usuario

Linear Layout

Dispone los elementos en una fila o en una columna. Es uno de los Layout más utilizados en la práctica. Distribuye los elementos uno detrás de otro, bien de forma horizontal o vertical.

Table Layout

Distribuye los elementos de forma tabular. Se utiliza la etiqueta <TableRow> cada vez que queremos insertar una nueva línea.

Constraint Layout

Versión mejorada de RelativeLayout, que permite una edición visual desde el editor y trabajar con porcentajes. Versión más flexible y eficiente de RelativeLayout. Permite comenzar a situar los elementos en cualquiera de los cuatro lados del contenedor e ir añadiendo nuevos elementos pegados a estos.

Deja un comentario