Mostrando entradas con la etiqueta Manual de Programación en Android. Mostrar todas las entradas
Mostrando entradas con la etiqueta Manual de Programación en Android. Mostrar todas las entradas

lunes, 4 de septiembre de 2017

Cómo crear la primera aplicación con android



A continuación, vamos a explicar cómo crear un proyecto sencillo usando Eclipse y las librerías Android.

Vamos a partir del proyecto de ejemplo que hemos creado en el punto anterior.

El primer proyecto Android consiste en una pantalla muy sencilla que muestra un mensaje de bienvenida.

En la barra lateral Package Explorer de Eclipse, desplegamos las entradas haciendo clic en las flechas de los diferentes paquetes.


Si abrimos el fichero BienvenidoActivity.java, veremos el código fuente de la aplicación Android:

package es.mentor.unidad1.eje1.bienvenido;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class BienvenidoActivity extends Activity {
/** Método que se llama cuando se crea una actividad. */
public void onCreate(Bundle savedInstanceState) {
// Llamamos al método de la clase superior (Activity)
super.onCreate(savedInstanceState);
// Establecemos los contenidos de la Intefaz de usuario
// de forma “programada”.
TextView tv = new TextView(this);
tv.setText("¡Bienvenido al curso de Android de Mentor!");
setContentView(tv);
// Descomentar la siguiente sentencia para usar los layout en
// el diseño de la Interfaz Usuario. Si lo haces, debes
// comentar las 3 sentencias anteriores.
// setContentView(R.layout.main);
}
}

Fíjate en que la clase principal BienvenidoActivity de la aplicación se basa en la clase Activity de Android.
Una actividad (Activity) es el componente de la aplicación que realiza acciones. Una aplicación puede tener muchas actividades, si bien el usuario sólo interactúa con ellas de una en una. Android llama al método onCreate() cuando una actividad se inicia. En este método se lleva a cabo toda la inicialización de variables y configuración de la interfaz de usuario. Una actividad no está obligada a tener una interfaz de usuario, aunque generalmente la suele tener.

La interfaz de usuario de Android se compone de vistas (Views). Una vista es un objeto que define el diseño de la interfaz de usuario. como un botón, una imagen, una etiqueta de texto, etcétera. Cada uno de estos objetos se hereda de la clase principal View. En este ejemplo hemos utilizado la subclase TextView, que crea una etiqueta de texto.
En el ejemplo se crea una etiqueta TextView en el constructor de la Actividad. Para crear esta etiqueta es necesario pasar como parámetro una instancia del Contexto (Context) de la aplicación Android. Un Contexto es un identificador del sistema que sirve para tener acceso a recursos, a preferencias, a bases de datos, etcétera, de la aplicación. La clase Actividad se hereda de la clase Contexto; por lo tanto, se puede pasar esta Actividad como el Contexto de la aplicación escribiendo this.
Con el método setText() establecemos el texto contenido en la etiqueta.

Para acabar, usamos el método setContentView() para indicar a la Actividad el contenido de la interfaz de usuario.

Si ejecutas la aplicación en Eclipse deberás ver la siguiente ventana en el emulador:


Nota:
Al ejecutar varias veces una aplicación desde Eclipse puede ocurrir que aparezcan los siguientes mensajes de error en la consola:


Estos mensajes de error:
[2011‐11‐20 09:18:15 ‐ unidad1.eje1.bienvenido] Application already deployed.
No need to reinstall.
[2011‐11‐20 09:18:15 ‐ unidad1.eje1.bienvenido] Starting activity
es.mentor.unidad1.eje1.bienvenido.BienvenidoActivity on device emulator‐5554
[2011‐11‐20 09:18:16 ‐ unidad1.eje1.bienvenido] ActivityManager: Starting:
Intent { act=android.intent.action.MAIN
cat=[android.intent.category.LAUNCHER]
cmp=es.mentor.unidad1.eje1.bienvenido/.BienvenidoActivity}
[2011‐11‐20 09:18:16 ‐ unidad1.eje1.bienvenido] ActivityManager: Warning:
Activity not started, its current task has been brought to the front
Indican únicamente que no se ha modificado el código fuente y que la aplicación se muestra
de nuevo en el primer plano de la pantalla del dispositivo virtual.


Cambio en la Interfaz de usuario con Layout

Los Layout son elementos no visibles que establecen cómo se distribuyen en la interfaz del usuario los componentes (widgets) que incluyamos en su interior. Podemos pensar en estos elementos como paneles donde vamos incorporando, de forma diseñada, los componentes con los que interacciona el usuario.
Nota: La clase Layout se hereda, como el resto de componente, de la clase Vista. A lo largo del curso nos referimos a los componentes de Android como Vistas (Views) o como Widgets, tanto si son visibles (botones, texto, menús….) como si son elementos de diseño (layout).
En el ejemplo anterior hemos utilizado un diseño de interfaz de usuario "programado", es decir, se construye esta interfaz con sentencias Java en el código fuente. Si ya has desarrollado interfaces de esta manera, sabrás que pequeños cambios en su diseño pueden dar lugar a grandes modificaciones en el código fuente.

Al ser Android un lenguaje nuevo, permite desarrollar interfaces usando archivos de diseño (Layout) XML. La forma más fácil de explicar este concepto es mostrar un ejemplo. El fichero res/layout/main.xml define el diseño de la interfaz del usuario:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/bienvenido"/>
</LinearLayout>

La estructura general de un archivo de diseño de interfaz XML de Android es simple. Se trata de un árbol de elementos XML, donde cada nodo es el nombre de una clase Vista (en este ejemplo, usamos las clases LinearLayout y TextView). Puedes utilizar el nombre de cualquier clase de tipo Vista (View) de Android o, incluso, una clase Vista personalizada por el programador.
El Layout LinearLayout apila secuencialmente todos sus elementos hijos de forma horizontal o vertical. En el apartado siguiente veremos diferentes tipos de paneles de diseño y sus características.
Esta estructura XML hace que sea más fácil y rápido crear las interfaces de usuario. 
Este modelo se basa en el modelo de desarrollo web, donde se separa la presentación (interfaz de usuario) de la lógica de la aplicación (encargada de leer y escribir la información).
En el ejemplo de XML anterior sólo hay un elemento Vista: TextView, que tiene tres atributos y un elemento de diseño Layout: LinearLayout, que tiene cuatro atributos. A continuación, mostramos una descripción de los atributos:

AtributoDescripción
xmlns:androidEsta declaración indica que vamos a usar el espacio de nombres (la terminología) de Android para referirnos a los atributos que se definen a continuación.
android:idAsigna un identificador único para el elemento correspondiente. Este identificador sirve para poder acceder al componente desde el código fuente o desde las declaraciones de otros elementos en este archivo XML.
android:layout_widthDefine el largo que debe ocupar la Vista. En este caso, indicamos que el TextView debe ocupar toda la pantalla con "fill_parent".
android:layout_heightSimilar al atributo anterior, en este caso, se refiere al ancho de la Vista.
android:textEstablece el texto que la Vista TextView debe mostrar. En este ejemplo se utiliza una cadena que se establece en el archivo res/values/strings.xml.

El título de la aplicación “Unidad1 - Ejemplo 1: Bienvenido” y la frase "¡Bienvenido al curso de Android de Mentor!", que aparecen en el área del usuario, se definen en el fichero res/values/strings.xml.

El SDK de Android permite definir los ficheros de tipo XML de dos formas: a través de un editor visual o directamente en el archivo XML. Se puede cambiar entre las dos formas haciendo clic en la pestaña de la parte inferior de la ventana. Por ejemplo, en el Package Explorer, seleccionamos res/layout/main.xml y hacemos clic en “Graphical Layout”:


En esta ventana podemos diseñar visualmente la pantalla de la aplicación Android arrastrando con el ratón los componentes que aparecen en el apartador “Palette”. 
Si en el Package Explorer seleccionamos res/layout/strings.xml y hacemos clic en “Resources”:


Usando en esta ventana el botón “Add” podemos añadir visualmente los diferentes tipos de recursos de Android.
Para crear la primera aplicación hemos usado componentes (Widgets o Vistas) usuales de Android. En el siguiente apartado de teoría explicaremos en detalle el tipo de componentes disponibles por defecto y cómo usarlos para diseñar las pantallas que servirán de interfaz gráfica al usuario.
Fichero AndroidManifest.xml: contiene la definición en formato XML de las características principales de la aplicación, como su identificación (nombre, versión, icono, etcétera), sus componentes (Actividades, Mensajes, Servicios, etcétera) o los permisos necesarios para su ejecución. Más adelante veremos otros detalles de este fichero. 
En este fichero hay que declarar la Actividad para que Android tenga acceso a la misma. 
Si abres el archive manifest, verás que existe el siguiente elemento <activity>:

<?xml version="1.0" encoding="utf‐8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
...
<activity android:name=".BienvenidoActivity"
android:label="@string/app_name">
...
</manifest>

En este fichero se pueden definir varios atributos para establecer la etiqueta de la actividad, su icono o el tema de estilo de la interfaz de usuario. El único atributo obligatorio es android:name, que especifica el nombre de clase de la actividad. Es importante usar siempre el mismo nombre de Actividad ya que otra aplicación puede iniciarla.

Importante: Aunque el código fuente de este ejemplo se encuentra disponible en la carpeta de ejemplos de esta unidad, es fundamental que crees este proyecto Android desde el principio para entender la secuencia de pasos dados y los ficheros necesarios. 
Además, si no has usado nunca el entorno de desarrollo Eclipse - Android, adquirirás soltura utilizándolo.


Compartamos el conocimiento. Hasta la próxima oportunidad!











  

viernes, 1 de septiembre de 2017

Cómo crear un proyecto Android - 2 de 2



4. Ejecución del proyecto Android

Una vez hemos creado el proyecto, vamos a explicar cómo ejecutamos esta aplicación de prueba con Eclipse y el emulador de Android (AVD: Android Virtual Device).
Para ello, hacemos clic en el botón "Ejecutar" de la barra de herramientas principal 


o en la opción "Run" de menú “Run”. También disponemos del atajo del teclado [Ctrl+F11]


Si no aparece ningún problema de compilación, entonces aparecerá la siguiente ventana:


Eclipse inicia el emulador de Android AVD en el ordenador que estés utilizando, para que puedas probar el proyecto que has desarrollado. Ten en cuenta que el dispositivo virtual tarda un rato en cargar cada vez que lo inicias. Hay que tener un poco de paciencia hasta que parezca la ventana de inicio.


En la consola de Eclipse puedes ir viendo el progreso de todo el proceso. Eclipse instala automáticamente la nueva aplicación en el AVD y la ejecuta:


Cuando accedemos por primera vez al emulador, aparece la pantalla de bienvenida con el terminal bloqueado:


Para desbloquear la pantalla hay que arrastrar el icono "candado" con el ratón hacia la derecha.
Una vez desbloqueado el AVD, podemos ver el aspecto de la aplicación instalada:


Importante: En general, cada vez que modifiquemos el código fuente y deseemos probar de nuevo nuestro proyecto no es necesario parar el emulador de aplicaciones y arrancarlo de nuevo; simplemente hacemos clic de nuevo en el botón “Run” y Eclipse compilará, reinstalará y ejecutará la aplicación modificada.
Una vez hayamos acabado de probar nuestro proyecto, es necesario parar el emulador de Android.
Atención: En el Emulador de Android es posible probar varios proyectos a la vez.
Nota: En esta Unidad 1 puedes encontrar el vídeo “Cómo ejecutar un proyecto Android”, que muestra cómo usar Eclipse para compilar y ejecutar los proyectos que son los ejemplos del curso.

5. Cómo usar el emulador de Android (AVD)

Como puedes observar, el Emulador de Android simula un teléfono con botones (lado derecho de la ventana). Si ya sabes utilizar este tipo de teléfonos no tendrás ningún problema en manejar el emulador como si fuera un teléfono más. Si no conoces Android, lee las siguientes instrucciones para ver cómo se maneja. Cambiaremos el idioma del sistema operativo. 

El botón “Volver a atrás”, permite cerrar la aplicación y volver al “Escritorio” de Android:


En la pantalla que aparece a continuación, debemos desbloquear el dispositivo virtual.
Para ello, arrastramos con el ratón la barra que tiene un candado dibujado hacia la derecha:


Después, aparece la pantalla denominada “Pantalla Inicial” (en inglés se denomina Home Screen), podemos acceder a todas las actividades instaladas haciendo clic en el icono marcado con una flecha roja en la imagen siguiente:


Si lo hacemos, veremos las aplicaciones instaladas. A esta pantalla se la denomina Pantalla de lanzamiento (en inglés se denomina Launcher Screen):


Para movernos en esta pantalla, podemos usar el ratón como si fuera el dedo de tu mano. Es decir, para ver los iconos que están abajo hay que hacer clic en la pantalla y, sin soltar el botón del ratón, arrastrar la ventana hacia arriba:


Haciendo clic con el ratón sobre el icono de una de las aplicaciones, el emulador la ejecutará.

A continuación, vamos a modificar el idioma del sistema operativo. Para ello, haciendo clic en el icono “Settings” aparece la siguiente pantalla:


Desplazando con el ratón hacia arriba esta ventana hacemos clic en “Language & keyboard”:


En la siguiente pantalla hacemos clic en “Select language”:


Para acabar, desplazamos de nuevo la pantalla hacia arriba hasta que veamos el idioma en el que deseamos configurar Android:


Hacemos clic sobre el idioma correspondiente y el sistema operativo queda configurado:


Después, debemos desmarcar la opción “Japanese IME” de esta pantalla:


Si usamos el botón “Volver atrás”, veremos que el idioma del sistema operativo ha cambiado en la Pantalla Inicial (Home Screen):



Compartamos el conocimiento. Hasta la próxima oportunidad!












  

viernes, 25 de agosto de 2017

Cómo crear un proyecto Android - 1 de 2



A continuación, vamos a describir cómo crear un proyecto usando Eclipse y las librerías de Android que hemos instalado con anterioridad.
Se trata del primer proyecto que el alumno va a crear, por lo que es muy importante prestar atención a los pasos seguidos, ya que los proyectos siguientes se generan de manera similar.

1. Creación de un nuevo proyecto

En el menú de Eclipse hacemos clic en File->New->Project:


También podemos hacer clic en el botón del menú de herramientas de Eclipse haciendo clic en la opción “Open a wizard to help create a new Android project”:


A continuación, aparece una nueva ventana en la que escribimos el nombre de proyecto "unidad1.eje1.bienvenido", "es.mentor.unidad1.eje1.bienvenido" para el paquete de java (Package) y “Bienvenido” para Activity.

El resto de opciones las dejamos como aparecen en la siguiente captura de pantalla:


Pulsamos el botón “Finish” para crear los ficheros del proyecto.

A continuación, describimos los apartados que genera un proyecto Android:
  • Project Name: como su nombre indica es el nombre del proyecto Eclipse; corresponde con el nombre del directorio que contiene los ficheros del proyecto.
  • Build Target: indica la versión del Android SDK que vamos a usar para compilar la aplicación. Por ejemplo, si seleccionas Android 2.3, la aplicación se compilará para funcionar en esta versión de Android y las siguientes. La versión seleccionada aquí no tiene que coincidir con la versión del Emulador de Android (AVD), ya que las aplicaciones de Android están diseñadas de manera que se ejecutan en la plataforma en la que se desarrollaron y en todas las versiones superiores de Android. Por ejemplo, una aplicación que de desarrolló para la versión 2.1 se ejecutará bien en la versión 2.3.3. Al contrario no funciona.
  • Application Name: es el nombre de la aplicación que aparece en el icono del Escritorio de Android. Es el texto que ve el usuario del teléfono.
  • Package Name: es el nombre del paquete Java en el que se almacena todo el código fuente de la aplicación.
  • Create Activity: define el nombre de la Actividad.
Importante: El nombre del paquete debe ser único en relación con todos los paquetes instalados en Android. Por esta razón, es importante utilizar el estándar de dominio para nombrar los paquetes de las aplicaciones. En el ejemplo anterior se utiliza el nombre de paquete "es.mentor". A la hora de desarrollar tus propias aplicaciones y distribuirlas en el Android Market (Mercado de aplicaciones Android) debes utilizar nombres propios de paquetes.
En ningún caso debes utilizar el nombre “es.mentor” para distribuir aplicaciones en el Android Market, pues sólo es válido para los ejemplos del curso.


2. Nombre de la actividad

Importante: El nombre de la actividad no puede incluir tildes, la letra “ñ”, ni caracteres raros.


3. Descripción de los ficheros por defecto del proyecto

Para ver los ficheros del proyecto Android creados por Eclipse, en la barra lateral Package Explorer, desplegamos las entradas haciendo clic en los ficheros marcados con flechas rojas de los diferentes paquetes:


A continuación, vamos a explicar la estructura y contenido de los ficheros del proyecto.
  • Carpeta/src/
Contiene todo el código fuente de la aplicación, código de la interfaz gráfica, clases auxiliares, etcétera. Inicialmente, Eclipse crea el código básico de la Actividad (Activity) principal de la aplicación, debajo del paquete Java definido.
  • Carpeta /res/
Contiene todos los ficheros de recursos necesarios para el proyecto: imágenes, vídeos, cadenas de texto (para internacionalización de la aplicación), etcétera. Los diferentes tipos de recursos se deben distribuir entre las siguientes subcarpetas:
    • /res/drawable-X/: contiene las imágenes de la aplicación. Se divide en /drawableldpi, /drawable-mdpi y /drawable-hdpi para utilizar diferentes recursos dependiendo de la resolución del dispositivo.
    • /res/layout/: contiene los ficheros de definición de las diferentes pantallas de la interfaz gráfica. Se puede usar la carpeta /layout y /layout-land para definir los diferentes diseños en función de la orientación del dispositivo.
    • /res/anim/. alberga la definición de las animaciones utilizadas por la aplicación.
    • /res/menu/: contiene la definición de los menús de la aplicación.
    • /res/values/: contiene otros recursos de la aplicación como, por ejemplo, cadenas de texto (strings.xml), estilos (styles.xml), colores (colors.xml), etcétera.
    • /res/xml/: contiene los ficheros XML utilizados por la aplicación.
    • /res/raw/: contiene los recursos adicionales, normalmente en diferente formato a XML, que no se incluyan en el resto de carpetas de recursos.
  • Carpeta /gen/
Reúne una serie de elementos de código generados automáticamente al compilar el proyecto. Cada vez que compilamos el proyecto, Android genera una serie de ficheros fuente Java dirigidos al control de recursos de la aplicación.
El archivo más importante es el que se puede observar en la imagen anterior, el fichero R.java que define la clase Java denominada R.
Esta clase R contiene un conjunto de constantes con los ID de todos los recursos de la aplicación incluidos en la carpeta /res/, de forma que el programador pueda acceder fácilmente a estos recursos desde el código fuente a través de esta clase. Así, por ejemplo, la constante R.drawable.icon define el ID de la imagen “icon.png” contenida en la carpeta /res/drawable/. Veamos como ejemplo la clase R creada por defecto para el proyecto nuevo:
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package es.mentor.unidad1.eje1.bienvenido;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}
}

Importante: Esta clase la crea automáticamente Android por lo que no debemos modificarla.
  • Carpeta /assets/
Alberga el resto de ficheros auxiliares necesarios para que aplicación funcione, como los ficheros de configuración, de datos, etcétera.
La diferencia entre los recursos incluidos en la carpeta /res/raw/ y los incluidos en la carpeta /assets/ es que para los primeros se generará un ID en la clase R y se deberá acceder a ellos usando un método de esta clase. Sin embargo, para los segundos no se generarán un ID y se puede acceder a ellos por su ruta como a cualquier otro fichero del sistema.
Aplicaremos unos u otros según las necesidades de nuestra aplicación.
  • Carpeta /bin/
Es el directorio donde se guarda la aplicación una vez se ha compilado.
  • Carpeta /libs/
Es el directorio donde se almacenan las librerías de tipo JAR que amplían las funcionalidades de la aplicación.

Fichero AndroidManifest.xml:

Contiene la definición en formato XML de las características principales de la aplicación, como, por ejemplo, su identificación (nombre, versión, icono, etcétera), sus componentes (Actividades, Mensajes, Servicios, etcétera) o los permisos necesarios para su ejecución. Veremos más adelante otros detalles de este fichero.
Importante: Haciendo doble clic sobre estos ficheros podemos abrirlos en el Editor de Eclipse. Es importante que el alumno se familiarice con este entorno de desarrollo y pruebe las distintas opciones del mismo.

Al abrir los distintos ficheros veremos la siguiente ventana:



Compartamos el conocimiento. Hasta la próxima oportunidad!












  

jueves, 24 de agosto de 2017

Un vistazo general al IDE de Eclipse



Antes de crear el primer proyecto de Android, vamos a echar un primer vistazo al entorno de desarrollo de Eclipse para conocer sus características básicas, la forma en que organiza el proyecto y las herramientas adicionales que ofrece.

La primera vez que se ejecuta Eclipse se puede ver una pantalla muy similar a la que se muestra a continuación.


1. Editores

La ventana principal (la más grande) se llama “Editor”. El Editor es el espacio donde se escribe el código fuente de los programas que estamos desarrollando.

Es posible tener varios ficheros de código fuente abiertos a la vez, apilados uno encima de otro. En la parte superior de la ventana del Editor se muestran las pestañas que permiten acceder a cada uno de los ficheros abiertos (o bien cerrarlos directamente).


2. Vistas

Además del Editor, existe un segundo tipo de ventanas “secundarias”, que se llaman Vistas.

Las Vistas son ventanas auxiliares para mostrar información, introducir datos, etcétera.
Las Vistas se usan con múltiples propósitos, desde navegar por un árbol de directorios, hasta mostrar el contenido de una consulta SQL.


En función de las librerías de desarrollo (Android, GWT, Java, Delphi...) se definen Editores propios y todas las Vistas necesarias.
En la ventana anterior están abiertas dos Vistas:
  • La Vista vertical de la izquierda muestra el árbol de directorios de los proyectos con los ficheros del mismo.
  • La Vista horizontal inferior muestra una pequeña “agenda” de tareas pendientes que pueden ser introducidas por el usuario, de forma directa, o por Eclipse, en función de determinados eventos (compilación del proyecto, depuración de código, etcétera).
Si deseamos cambiar las Vistas, se puede usar la opción “Show View” en el menú de la pestaña “Window”.


3. Barras de Herramientas principal y secundarias

La barra de herramientas principal contiene los accesos directos a las operaciones más comunes, como abrir y guardar archivos. Además, también es posible ejecutar herramientas externas y tareas relacionadas con el Editor activo, como ejecutar un programa, depurar el código fuente, etcétera.


Además de la barra de herramientas principal (imagen anterior), cada Vista puede tener su propia barra de herramientas secundaria.


4. Perspectivas

Una Perspectiva es un conjunto de ventanas (Editores y Vistas) agrupadas que simplifican el desarrollo de un proyecto.

Al seleccionar una Perspectiva se carga una configuración guardada de las Vistas y Editores de nuestro entorno de desarrollo Eclipse.

Por ejemplo, existe una Perspectiva "Java Browsing" que facilita el desarrollo de aplicaciones Java y que incluye, además del Editor, Vistas para navegar por las clases, los paquetes, etcétera.

Se puede cambiar la perspectiva activa utilizando la opción “Open Perspective” del menú de Windows. Desde este mismo menú también es posible definir Perspectivas personalizadas.


También existe un botón en la barra de herramientas principal para cambiar de Perspectiva:


Si el alumno tiene dudas sobre el uso avanzado de Eclipse, en Internet existen muchos tutoriales que indican cómo utilizarlo. 

Además, es posible usar el menú "Help" o la tecla [F1] para solicitar ayuda.
Desgraciadamente, a día de hoy, esta ayuda sólo se encuentra en inglés.
Importante: para importar en Eclipse el código fuente de los ejemplos del curso hay que usar la opción del menú principal: File -> Import.

Después, hay que marcar Existing Proyects into Workspace en la ventana emergente y pulsar en el botón “Next”:


Finalmente, seleccionamos el directorio de trabajo donde debemos haber copiado previamente los ficheros con el código fuente de los ejemplos:
“C:\cursos_Mentor\Android\proyectos” y hacemos clic en “Finish”:




Compartamos el conocimiento. Hasta la próxima oportunidad!












  

miércoles, 23 de agosto de 2017

Conceptos de las Aplicaciones Android



1. Características de las aplicaciones Android

Las Aplicaciones Android se forman con uno o más de los siguientes componentes: actividades, servicios, proveedores de contenidos y receptores de mensajes. Cada componente tiene una funcionalidad diferente en la aplicación; incluso la aplicación puede activar cada uno de los componentes de forma individual; es más, otras aplicaciones también los pueden activar.

El archivo de manifestación (manifest) indica todos los componentes que usa la aplicación; en él también deben declararse todos los requisitos necesarios de la misma como, por ejemplo, la versión mínima de Android, las configuración mínima de hardware, etcétera.

El código que no es de la aplicación, como las imágenes, cadenas de internacionalización, diseño de la interfaz de usuario, otros recursos, etcétera, puede incluir distintas configuraciones en función del idioma del teléfono o diseños de la interfaz del usuario en función de los diferentes tamaños de pantalla.

Las aplicaciones de Android están escritas en el lenguaje de programación Java. Las herramientas de SDK de Android compilan este código, junto con sus datos y los archivos de recursos, en un paquete Android. Este archivo tiene la extensión .apk y lo utiliza Android para instalar la aplicación.

Una vez instalada una aplicación en un dispositivo, Android la aloja en su propia caja de arena (sandbox). Sandbox, palabra del inglés que significa caja de arena (Sand+box), es un sistema informático que aísla los procesos; de esta manera se pueden ejecutar aplicaciones de forma independiente. Se utiliza para evitar la corrupción de datos del sistema donde éstos se ejecutan.

El sistema Android aplica el principio de “privilegios mínimos” (recuerda que Android se basa en el kernel de Linux). Es decir, cada aplicación, por defecto, sólo tiene acceso a los componentes que necesita para hacer su trabajo y nada más. Esto crea un entorno muy seguro en el que una aplicación no puede acceder a las partes de un sistema para las que no tiene permiso.


2. Componentes de las aplicaciones

Los Componentes de las aplicaciones son los elementos esenciales de una aplicación Android. Cada componente es un punto diferente de entrada por el que el sistema operativo puede interaccionar con la aplicación. No todos los componentes son verdaderos puntos de entrada, sino que algunos dependen unos de otros, aunque cada uno exista como una entidad separada en Android y desempeñe un papel específico que define el comportamiento general de la aplicación.

Existen los siguientes tipos de componentes de la aplicación:

  • Actividades (Activities): una actividad representa una pantalla única con una interfaz de usuario. Por ejemplo, una aplicación de correo electrónico puede tener una actividad que muestra una lista de correo electrónico nuevo, otra actividad que compone un correo y otra actividad que lee los mensajes. Aunque las actividades trabajan conjuntamente para dar la sensación de una única aplicación, cada una de ellas es independiente de las otras. Por lo tanto, otra aplicación externa diferente podría iniciar cualquiera de estas actividades (si la aplicación de correo electrónico lo permite). Por ejemplo, una aplicación que gestiona los contactos podría iniciar la actividad que compone nuevos mensajes de correo indicando como destinatario del mensaje al contacto seleccionado en la primera aplicación.
Una actividad se implementa a partir de la clase Java Activity. Más adelante veremos cómo se usa.
Puedes pensar en una actividad de Android como si fuera una ventana en una aplicación de escritorio o una página HTML en una aplicación Web. Android está diseñado para cargar muchas actividades pequeñas, por lo que se permite al usuario abrir nuevas actividades y pulsar el botón “Atrás” para ir a un estado anterior, al igual que se hace en un navegador web.
  • Servicios (Services): un servicio es un componente que se ejecuta en segundo plano y que realiza operaciones cada cierto tiempo. Un servicio no proporciona una interfaz gráfica al usuario. Por ejemplo, un servicio puede reproducir música en segundo plano mientras el usuario está en otra aplicación, o puede obtener información de Internet sin la interacción del usuario. Otros componentes, como una actividad, pueden iniciar un servicio e interactuar con él si es necesario.
Un servicio se implementa a partir de la clase Java Service. Más adelante veremos cómo se usa.

  • Proveedores de contenidos (Content providers): un proveedor de contenidos maneja el conjunto de datos compartido de la aplicación. Puede almacenar información en el sistema de archivos, en una base de datos SQLite, en Internet o en cualquier otro lugar de almacenamiento permanente al que la aplicación tenga acceso.
A través del proveedor de contenidos, otras aplicaciones pueden consultar e incluso modificar los datos (si el proveedor de contenidos lo permite). Por ejemplo, Android proporciona un proveedor de contenidos que gestiona la información de los contactos del teléfono. Por lo tanto, cualquier aplicación, con los permisos adecuados, puede hacer una consulta al proveedor de contenido de los contactos (ContactsContract.Data) para leer y escribir información sobre una persona en particular.
Los proveedores de contenidos se utilizan también para escribir y leer datos que son privados de la aplicación y no se comparten. Por ejemplo, una aplicación de Notas puede utilizar un proveedor de contenidos para guardar las notas.
Un proveedor de contenidos se implementa a partir de la clase ContentProvider y debe implementar un conjunto estándar de métodos (API) que permiten a otras aplicaciones interaccionar con él. Más adelante veremos cómo se usa.

  • Receptores de mensajes (Broadcast receivers): un receptor de mensajes responde a mensajes difundidos (broadcast) a todos los elementos del sistema. Por ejemplo, un mensaje puede anunciar que la pantalla se ha apagado, la batería está descargada o que se ha capturado una foto. Las aplicaciones también pueden emitir este tipo de mensajes para, por ejemplo, indicar a otras aplicaciones que ciertos datos ya han sido descargados en el dispositivo y están disponibles para ser utilizados. Aunque estos receptores de mensajes no muestran información en la interfaz del usuario, sí que pueden crear una notificación en la barra de estado (la barra que aparece arriba en Android) para alertar al usuario cuando se produce este tipo de mensajes. 
Un receptor de mensajes se implementa a partir de la clase BroadcastReceiver y cada mensaje emitido es un objeto del tipo Intent (Intención). Más adelante veremos cómo se usa.

  • Componentes de la pantalla de inicio (Widgets): estos componentes visuales se usan principalmente en la Pantalla de inicio (HomeScreen) de Android para mostrar información que se actualiza periódicamente como, por ejemplo, un reloj, la previsión del tiempo, etcétera. Al tratarse de programación avanzada no los estudiaremos en este curso de iniciación a Android.
  • Otros componentes de Android son las Carpetas animadas (Live Folders) y los Fondos de pantalla animados (Live Wallpapers) en la Pantalla de Inicio. Las carpetas animadas permiten a Android mostrar información en la pantalla inicial sin necesidad de lanzar la aplicación correspondiente. Igualmente, al tratarse de programación avanzada, no los estudiaremos en este curso de iniciación a Android.
Un aspecto único del diseño del sistema Android es que cualquier aplicación puede iniciar un componente de otra aplicación. Por ejemplo, si es necesario para la aplicación abierta capturar una imagen con la cámara de fotos, seguramente ya exista otra aplicación que hace eso y que la aplicación inicial puede reutilizar en lugar de desarrollar el código necesario para capturar la foto. Únicamente hay que iniciar la actividad de la aplicación de la cámara de fotos y capturar la imagen. La sensación del usuario es como si la cámara formara parte de la aplicación inicial.

Cuando el sistema arranca un componente, éste inicia un proceso (si no está ya en ejecución) para que la aplicación cree las instancias de las clases necesarias del componente.
Por ejemplo, si una aplicación inicia la actividad de la aplicación de la cámara que hace fotos, la actividad se ejecuta en el proceso que pertenece a la aplicación de la cámara, no en el proceso de la aplicación original que ha hecho la llamada a la otra aplicación. Por lo tanto, a diferencia de otros sistemas operativos, las aplicaciones de Android no tienen un punto de entrada único (no hay función main()).

Debido a que el sistema ejecuta cada aplicación en un proceso independiente con permisos restringidos, ésta no puede activar directamente un componente de otra aplicación, sino que es el sistema operativo Android el encargado de hacerlo. Por lo tanto, para activar un componente de otra aplicación es necesario enviar un mensaje al sistema que especifica su intención (clase Intent) de iniciar un componente en particular. Por lo tanto, el sistema operativo es el encargado de activar el componente solicitado.


Compartamos el conocimiento. Hasta la próxima oportunidad!












  

martes, 22 de agosto de 2017

Introducción al entorno de Android




Introducción

En esta Unidad vamos a explicar las características y la arquitectura de Android.
Además, describiremos el entorno de desarrollo Eclipse y crearemos nuestro primer proyecto Android.

También, detallaremos los ficheros básicos que componen un proyecto Android.
Finalmente, usaremos Paneles de diseño (Layout) y Componentes (View) para diseñar la interfaz de usuario en ejemplos de aplicaciones de Android.

Características de Android

A continuación se muetra un resumen de las características más importantes:

CaracterísticaDescripción
Diseñado para dispositivo pequeños El sistema operativo es compatible con pantallas VGA (y mayores), gráficos 2D y gráficos 3D presentes en muchos teléfonos tradicionales.
AlmacenamientoDispone de la base de datos ligera SQLite donde se almacenan los datos de las aplicaciones.
ConectividadAndroid soporta las siguientes tecnologías de conectividad: GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, Wi-Fi, LTE y WiMAX. Algunas son muy populares en los teléfonos actuales y otras se están desarrollando.
MensajeríaSe pueden usar tanto SMS como MMS.
Navegador webEl navegador web incluido en Android está basado en el motor del navegador de código abierto WebKit. Este navegador es muy eficiente y permite cargar las páginas Web rápidamente.
Soporte de JavaAunque las aplicaciones se escriben en el lenguaje Java, no hay una Máquina Virtual de Java en el sistema operativo para ejecutar el código. Este código Java se compila en un ejecutable Dalvik y se ejecuta en la Máquina Virtual Dalvik. Dalvik es una máquina virtual especializada, diseñada específicamente para Android y optimizada para dispositivos móviles que funcionan con batería y que tienen memoria y procesador limitados. Es posible incluir las librerías J2ME nativas de Java mediante aplicaciones de terceros, como J2ME MIDP Runner.
Soporte multimediaAndroid soporta los siguientes formatos multimedia: WebM, H.263, H.264 (en 3GP o MP4), MPEG-4 SP, AMR, AMR-WB (en un contenedor 3GP), AAC, HE-AAC (en contenedores MP4 o 3GP), MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF y BMP.
Soporte para streaming (distribución en Internet)Android soporta los siguientes formatos de streaming: RTP/RTSP, descarga progresiva de HTML (tag <video> de HTML5). Adobe Flash Streaming (RTMP) es soportado mediante la instalación de Adobe Flash Player, pero sólo para algunos terminales.
Soporte para hardware adicionalAndroid puede manejar cámaras de fotos, de vídeo, pantallas táctiles, GPS, acelerómetros, giroscopios, magnetómetros, sensores de proximidad y de presión, termómetro, aceleración 2D y 3D.
Entorno de desarrolloEl entorno de desarrollo es Eclipse 3.7 y el plugin de Herramientas de Desarrollo de Android (ADT) que incluye un emulador de dispositivos, herramientas de depuración y análisis de rendimiento.
Market (Mercado de aplicaciones)El Android Market es un catálogo de aplicaciones gratuitas y de pago que pueden ser descargadas e instaladas desde los propios dispositivos Android.
Multi-táctilAndroid tiene soporte nativo para pantallas multi-táctiles que permiten manejar la pantalla táctil con más de 1 dedo.
BluetoothBluetooth En la versión 2.2 de Android se incluye la funcionalidad completa.
VideollamadaAndroid incluye la posibilidad de videollamada a través de Google Talk.
MultitareaExiste la multitarea real de aplicaciones, es decir, las aplicaciones que no se están ejecutando en primer plano reciben ciclos de reloj del procesador para actualizar su estado.
Características basadas en vozEs posible dar órdenes de voz al terminal. Por ejemplo, la búsqueda en Google a través de la voz ya estaba disponible desde la primera versión.
Tethering (compartición de conexión a Internet)Android incluye la compartición de la conexión a Internet (en inglés, tethering), que permite usar el teléfono como un punto de acceso inalámbrico, de manera que un ordenador puede usar la conexión 3G del móvil Android.

Arquitectura de Android

Los componentes principales de la arquitectura del sistema operativo Android son los siguientes:

  • Aplicaciones: todas las aplicaciones están escritas en lenguaje de programación Java. Las aplicaciones incluidas por defecto son un cliente de correo electrónico, programa de SMS, calendario, mapas, navegador, contactos, etcétera. Todas las aplicaciones de Android usan el siguiente conjunto de servicios y sistemas: 
    • Un conjunto de componentes (Views) que se usan para crear las interfaces de usuario. Por ejemplo, botones, listas, tablas, cajas de texto, etcetera.
    • Proveedores de contenidos (Content Providers) que permiten a las aplicaciones acceder a la información de otras aplicaciones (por ejemplo, los Contactos del teléfono) o compartir datos entre ellas.
    • Gestor de recursos (Resource Manager), que permite acceder a recursos que no sean del código fuente, tales como textos de internacionalización, imágenes y ficheros de estilos (layout).
    • Gestor de notificaciones (Notification Manager), que permite a todas las aplicaciones mostrar alertas en la barra de estado de Android.
    • Gestor de actividades (Activity Manager), que controla el ciclo de vida de la aplicación.
  • Marco de desarrollo de aplicaciones: los programadores tienen acceso completo a las mismas APIs (librerías) del Framework (marco de desarrollo) utilizadas por las aplicaciones base. La arquitectura está diseñada para simplificar la reutilización de componentes, es decir, cualquier aplicación puede publicar sus capacidades y cualquier otra aplicación puede hacer uso de estas capacidades.
  • Librerías: Android incluye también un conjunto de librerías de C/C++ usadas por varios componentes del sistema. Entre ellas, se encuentran: System C library (implementación de la librería C estándar), librerías de medios, bibliotecas de gráficos, 3D y SQLite, entre otras. El programador puede hacer uso de estas librerías.
  • Runtime (ejecutable) de Android: Android también incluye un conjunto de librerías base que proporcionan la mayor parte de las funciones del lenguaje Java. Cada aplicación Android ejecuta un proceso con instancia individual de la máquina virtual Dalvik.
  • Núcleo Linux: Android está basado en Linux para los servicios base del sistema, como seguridad, gestión de memoria, procesos y controladores.

DIAGRAMA DE LA ARQUITECTURA ANDROID


La utilidad de línea de comandos genera automáticamente todos los archivos necesarios para crear un proyecto Android; incluso permite crear un proyecto para Eclipse.

Android usa Java como lenguaje base para el desarrollo de las aplicaciones. Por lo tanto, hace uso de los Paquetes Java (Package en inglés). Estos paquetes son contenedores de clases que permiten agrupar las distintas partes de un programa cuya funcionalidad tienen elementos comunes.

El uso de paquetes proporciona las siguientes ventajas:
  • Agrupamiento de clases con características comunes
  • Reutilización de código
  • Mayor seguridad al existir niveles de acceso

Creación de un proyecto por líneas de comando

Usando la línea de comandos vamos a crear un proyecto Android. Es importante usar
el directorio de trabajo que hemos creado anteriormente con Eclipse:

C:\cursos_Mentor\Android\proyectos.

Desde este directorio, debemos ejecutar el siguiente comando:

android create project --package es.mentor.eje1.unidad1.bienvenido --activity
Bienvenido --target android-10 --path unidad1.eje1.bienvenido

para crear los ficheros básicos de un proyecto Android. Fíjate en qué la orden anterior es una única línea que debes ejecutar en la línea de comandos de tu sistema operativo.

C:\>cd C:\cursos_Mentor\Android\proyectos
C:\cursos_Mentor\Android\proyectos> android create project --package
es.mentor.unidad1.eje1.bienvenido --activity Bienvenido --target android-10 --path
bienvenido
Created project directory: C:\cursos_Mentor\Android\proyectos\bienvenido
Created directory
C:\cursos_Mentor\Android\proyectos\bienvenido\src\es\mentor\eje1\unidad1\bienvenido
Added file
C:\cursos_Mentor\Android\proyectos\bienvenido\src\es\mentor\eje1\unidad1\bienvenido\Bienv
enido.java
Created directory C:\cursos_Mentor\Android\proyectos\bienvenido\res
Created directory C:\cursos_Mentor\Android\proyectos\bienvenido\bin
Created directory C:\cursos_Mentor\Android\proyectos\bienvenido\libs
Created directory C:\cursos_Mentor\Android\proyectos\bienvenido\res\values
Added file C:\cursos_Mentor\Android\proyectos\bienvenido\res\values\strings.xml
Created directory C:\cursos_Mentor\Android\proyectos\bienvenido\res\layout
Added file C:\cursos_Mentor\Android\proyectos\bienvenido\res\layout\main.xml
Created directory C:\cursos_Mentor\Android\proyectos\bienvenido\res\drawable-hdpi
Created directory C:\cursos_Mentor\Android\proyectos\bienvenido\res\drawable-mdpi
Created directory C:\cursos_Mentor\Android\proyectos\bienvenido\res\drawable-ldpi
Added file C:\cursos_Mentor\Android\proyectos\bienvenido\AndroidManifest.xml
Added file C:\cursos_Mentor\Android\proyectos\bienvenido\build.xml
Added file C:\cursos_Mentor\Android\proyectos\bienvenido\proguard.cfg
C:\cursos_Mentor\Android\proyectos>

Ahora no vamos a examinar en detalle los ficheros que hemos creado y que conjuntamente forman el proyecto Android. En el siguiente apartado de esta Unidad los detallaremos con un ejemplo real en Eclipse.

Este script genera los siguientes directorios y archivos principales:

  • /src: en este directorio es donde se almacenan los archivos de código fuente Java (con extensión .java).
  • /assets: en este directorio se guardan los recursos que utiliza la aplicación.
  • /res: es el directorio principal de recursos (resources). Aquí guardaremos imágenes o archivos multimedia que utilice nuestra aplicación.
  • /res/drawable-Xdpi: son los directorios de recursos gráficos o imágenes que utilizará nuestra aplicación con los nombres drawable-hdpi, drawable-mdpi y drawable-ldpi; en ellos se almacenan las imágenes dependiendo de la densidad de puntos por pulgada que tenga el dispositivo en el que se ejecute la aplicación.
  • /res/layout: en Android hay que separar el código Java de la aplicación y la interfaz gráfica. En este directorio es donde colocaremos los archivos xml que definen las vistas que utilizará la aplicación.
  • /res/values: de igual forma que separamos el código Java y la interfaz gráfica, Android separa también las cadenas constantes de texto (Internacionalización de la aplicación), las matrices, la paleta de colores, etcétera.
  • AndroidManifest.xml: es el archivo de configuración de la aplicación en el que se define lo que puede hacer nuestra aplicación, es decir, en él informamos al sistema operativo de las capacidades que tiene esta aplicación. En este archivo también indicaremos las actividades o servicios que ejecutará nuestra aplicación y los permisos de seguridad especiales necesarios si va a acceder a recursos compartidos del sistema, como por ejemplo el acceso al listado de contactos, empleo del GPS o la posibilidad de enviar mensajes SMS.
  • default.properties: fichero de proyecto para Eclipse.
  • Nota: una vez analizado los ficheros básicos del proyecto, podríamos importarlo en Eclipse. No obstante, por simplificación, no lo vamos a hacer, pues es más sencillo crear un proyecto nuevo directamente desde Eclipse.

Así pues, borramos el directorio C:\cursos_Mentor\Android\proyectos\bienvenido, para crear este mismo proyecto desde Eclipse directamente.


Compartamos el conocimiento. Hasta la próxima oportunidad!











  
       
free counters

Páginas vistas en total según Google