Professional Documents
Culture Documents
1. Introduccin.
1.1. Historia.
1.2. Qu es Android?
1.3. Qu necesito para programar en Android?
2. Arquitectura del sistema operativo
2.1. Arquitectura general
2.2. La mquina virtual de Android
2.3. Procesos en Android
3. Componentes de una aplicacin
3.1. Actividades (Activities)
3.1.1. Callbacks de una Actividad
3.2. Intenciones (Intents)
3.2.1. Tipos de Intents
3.2.2. Intent Filter
3.3. Proveedores de contenido (Content Provider)
3.4. Servicios (Services)
3.5. Receptores de radiodifusin (Broadcast Receiber)
4. Entorno de desarrollo
4.1. Instalacin de Android Studio
4.1.1. Requisitos del sistema
4.2. Instalacin de plataformas
4.3. Android Virtual Device (AVD) Manager
4.4. Comandos para AVD
5. Fundamentos de una aplicacin.
5.1. Creacin y estructura de un proyecto Android
5.1.1. Estructura de un proyecto
5.2. Trabajando con el archivo AndroidManifest.xml
5.3. Trabajando con el archivo Build.gradle
5.3.1. Archivo Proyect Build
5.3.2. Archivo Module Build
6. Creacin y manejo de Actividades.
6.1. Uso de recursos en una aplicacin
6.2. Seguridad y permisos
6.3. Uso de los mensajes Log
7. Interfaz de usuario y controles
7.1. Unidades y layout
7.2. Objetos Widgets
7.3. Uso de ListView
7.3.1. Listas simples
7.3.2. Listas personalizadas
7.4. Uso de TabLayout
8. Temas, estilos y elementos grficos
8.1. Creacin y uso de estilos
8.2. Creacin de iconos y comprensin de tamaos
8.3. Uso de la herramienta draw9patch
1
18.2.
Twitter
19. Conectividad
19.1.
Http
19.2.
Wifi
19.3.
Bluetooth
20. Realidad aumentada
21. Tpicos avanzados
21.1.
Servicios
21.1.1.
Servicio iniciado
21.1.2.
Servicio vinculado
21.2.
Content Provider
22. Publicacin de una aplicacin
22.1.
Preparacin de la aplicacin
22.2.
Firma y creacin del archivo APK
22.3.
Publicacin en Google Play
22.4.
Control de versiones
22.5.
Monetizacin de una aplicacin
1. Introduccin
1.1.
Historia
Breve historia de los inicios del sistema operativo Android, los creadores, el
primer dispositivo mvil que se bas en Android y alguno de los principales hitos
en su historia.
En el ao 2003, cuatro expertos en tecnologa, Andy Rubin, Rich Miner, Nick
Sears y Chris White, se unieron para crear la empresa Android Inc., esta
empresa fue ubicada en Palo Alto California. Los cuatro trabajaron para crear un
sistema operativo para dispositivos mviles que pudiera ser consiente tanto de
la ubicacin de un usuario y permitiera ser configurado en base a las
preferencias de este.
En Agosto de 2005, Google compro Android Inc., aunque el precio de la compra
nunca ha sido revelado, se estima que ronda los 50 millones de dlares. Andy
Rubin, uno de los creadores de Android, trabaj de 2005 a 2013 como
vicepresidente de ingeniera de Google. El 13 de Marzo de 2013, Rubin anuncia
en su blog personal que se retira de Google para dedicarse a otros proyectos
externos, ocupando su lugar Sundar Pichai.
El 5 de Noviembre de 2007 Google dio a conocer la Open Handset Alliance
(OHA), una agrupacin de fabricantes de tecnologa que trabajan en conjunto
para crear estndares abiertos para dispositivos mviles. Las empresas de la
coleccin
incluan
proveedores
de
servicios
inalmbricos
de
telecomunicaciones, fabricantes de telfonos mviles y fabricantes de chipsets.
Con este anuncio, Google dejaba en claro que sera diferente a otros sistemas
operativos mviles, ya que no se limitara simplemente a un dispositivo o
fabricantes. En octubre de 2008, fue lanzado al mercado el primer dispositivo
inteligente con Android, el HTC Dream.
Los inicios de Android fueron un poco lentos, ya que primero fue lanzado el
sistema operativo (Octubre de 2008) y posteriormente el primer dispositivo mvil,
el HTC Dream, tambin conocido como T-Mobile G1 (2010). Esto no ha sido
problema para que el sistema operativo tenga ganados muchos adeptos y ha
demostrado una velocidad de madurez importante debido a los diferentes
fabricantes de hardware, que han adaptado interesantes piezas para acompaar
las diferentes funcionalidades del sistema operativo.
1.2.
Qu es Android?
1.3.
Herramientas de software.
Sistema operativo. Una computadora que corra con Windows, Linux o Mac
OS. En Windows y en Linux no importa la arquitectura (32 bits o 64 bits).
Java. Se recomienda la ltima versin de Java disponible, puede
descargarse desde la siguiente pgina.
http://www.oracle.com/technetwork/es/java/javase/downloads/index.html
Kit de desarrollo. La ltima versin del SDK de Android, puede descargarse
de la siguiente pgina.
https://developer.android.com/intl/es/sdk/index.html
IDE. Android ha puesto a disposicin de los desarrolladores su propio IDE,
Android Studio. Este entorno de desarrollo ya incluye la ltima versin del
SDK y puede ser descargado de la siguiente pgina.
https://developer.android.com/intl/es/sdk/index.html
6
Conocimientos tcnicos.
Programacin orientada a objetos (POO). Si se ha programado en algn
lenguaje que se base en este paradigma (PHP, Python, Java, .NET, C o C++,
etc.) no debera implicar mayor problema empezar a desarrollar aplicaciones
para Android.
Conocimientos Java. Si se ha programado en Java, la migracin a Android
ser mucho ms sencilla ya que las aplicaciones de Android se crean en este
lenguaje de programacin.
Manejo de un IDE de desarrollo. Cualquiera que sea el lenguaje en el que
se tenga un poco de experiencia programando seguramente se ha hecho uso
de algn IDE (entorno de desarrollo integrado). Esto te ser til en el curso.
Herramientas hardware.
Equipo Android. Uno de los puntos importantes que se recomienda, es tener
es un telfono que corra con Android. Esto es porque de esta manera se
tendr una autntica forma de probar cmo es que corren las aplicaciones en
un ambiente real, adems de que existen algunos ejemplos prcticos que por
sus caractersticas es altamente recomendable ejecutarlos en un dispositivo
fsico.
Arquitectura general
capa son bibliotecas Java que acceden a los recursos de las capas anteriores a
travs de la mquina virtual. Algunos de los componentes ms importantes se
listan en la siguiente tabla.
Nombre de la
servicios
Activity Manager
Windows Manager
Content Provider
Views
Notification Manager
Package Manager
Resource Manager
Location Manager
clase
o Descripcin
Se encarga de administrar la pila de actividades de
la aplicacin as como su ciclo de vida.
Se encarga de organizar lo que se mostrara en
pantalla. Bsicamente crea las superficies en la
pantalla que posteriormente pasarn a ser ocupadas
por las actividades.
Esta librera crea una capa que encapsula los datos
que se compartirn entre aplicaciones para tener
control sobre cmo se accede a la informacin.
Elementos que nos ayudarn a construir las
interfaces de usuario: botones, cuadros de texto,
listas y hasta elementos ms avanzados como un
navegador web o un visor de Google Maps.
Engloba los servicios para notificar al usuario cuando
algo requiera su atencin mostrando alertas en la
barra de estado. Un dato importante es que esta
biblioteca tambin permite el acceso a elementos
como el sonido, activar el vibrador o utilizar los LEDs
del dispositivo en caso de tenerlos.
Esta biblioteca permite obtener informacin sobre los
paquetes instalados en el dispositivo Android,
adems de gestionar la instalacin de nuevos
paquetes. Un paquete es la forma en que se
distribuyen las aplicaciones Android, estos contienen
el archivo .apk, que a su vez incluyen los archivos
.dex con todos los recursos y archivos adicionales
que necesite la aplicacin, para facilitar su descarga
e instalacin.
Permite gestionar todos los elementos que forman
parte de la aplicacin y que estn fuera del cdigo,
es decir, cadenas de texto traducidas a diferentes
idiomas, imgenes, sonidos o layouts.
Permite determinar la posicin geogrfica del
dispositivo Android mediante GPS o redes
disponibles y trabajar con mapas.
11
Sensor Manager
Cmara
Multimedia
Telephony Manager
2.2.
Dalvik es una mquina virtual intrprete que ejecuta archivos en el formato Dalvik
Executable (*.dex), un formato optimizado para el almacenamiento eficiente y
ejecucin mapeable en memoria. Su objetivo fundamental es el mismo que
cualquier mquina virtual; permite que el cdigo sea compilado a un bytecode
independiente de la mquina en la que se va a ejecutar, y la mquina virtual
interpreta este bytecode a la hora de ejecutar el programa.
Dalvik est basado en el tipo de compilacin JIT (Just In Time), por lo que cada
vez que se ejecuta una aplicacin en el dispositivo, la parte del cdigo requerida
va a ser compilada a cdigo mquina en ese momento. A medida que se utilice
la aplicacin y se avance en ella el cdigo adicional va a ser compilado y
almacenado en cache para poder reutilizarlo posteriormente mientras la
aplicacin este en ejecucin.
ART, por otro lado, compila el lenguaje intermedio bytecode, en un archivo
binario dependiente del sistema. Todo el cdigo de la aplicacin ser precompilado durante la instalacin de la aplicacin, es decir solo una vez,
eliminando as el retraso que se puede observar cuando una aplicacin es
ejecuta en un dispositivo con Dalvik. A este proceso de pre-compilado se le
conoce como AOT (Ahead Of Time)
Dejando de lado el potencial aumento de velocidad en la ejecucin de las
aplicaciones, el uso de ART proporciona un beneficio secundario muy
importante; como ART ejecuta cdigo mquina directamente de la aplicacin, no
hace uso extenso del CPU, como en el caso de JIT, por lo que implica menos
consumo de batera del dispositivo.
En la siguiente imagen se puede observar una comparacin entre las dos
mquinas virtuales de Android.
13
14
2.3.
Procesos en Android
16
17
Actividades (Activities)
3.1.1.
El ciclo de vida de una Actividad est compuesta por siete callbacks que
permiten al sistema operativo administrar el ciclo de vida de una Actividad,
adems permiten a los desarrolladores realizar acciones al pasar por algn
punto del ciclo de vida. Las dos callbacks ms importantes que tiene una
Actividad son:
18
19
20
3.2.
Intenciones (Intents)
Definicin y principales caractersticas de los diferentes tipos de Intents e IntentsFilter, los cuales sirven para la comunicacin entre los componentes de Android.
Los Intents son mensajes (llamados as y definindose como estructuras que
describen de forma abstracta una operacin a realizar o de algo que ha ocurrido).
Estos mensajes permiten activar tres de los componentes bsicos de una
aplicacin: Activities, Services, y Broadcast Receivers. Existen diferentes
mecanismos para realizar la entrega de los Intents a cada tipo de componente.
Datos (Data). Datos necesarios para realizar una accin o requeridos por
el componente que recibe el Intent.
21
3.2.1.
Tipos de Intents.
22
23
3.2.2.
Intent Filter
25
3.3.
26
Content://mx.com.omnius/notas/1
Esquema
3.4.
Autoridad
Ruta
Servicios (Services)
3.5.
29
4. Entorno de desarrollo
4.1.
30
31
32
34
35
10. Esperar a que la instalacin se lleve a cabo, esto puede llevar varios minutos.
Terminado el proceso dar clic en el botn Next y finalizar el asistente.
4.1.1. Requisitos del sistema
Windows:
Mac OS X:
36
En Mac OS, Android Studio corre con Java Runtime Environment (JRE) 6
para la renderizacin de fuentes optimizado. El proyecto puede ser
configurado para utilizar Java Development Kit (JDK) 6 o 7.
Linux:
4.2.
Instalacin de plataformas
38
4.3.
39
40
41
42
43
La primera vez que se ejecuta una AVD puede resultar tardado el proceso, por
lo que se recomienda que cuando se estn realizando constantes cambios a un
proyecto en Android, no se detenga el AVD, es mejor que permanezca
ejecutndose en segundo plano, de esta forma cada vez que se instale una
aplicacin con las modificaciones hechas automticamente se instalar en el
dispositivo que est corriendo (siempre y cuando sean compatibles en
versiones).
44
4.4.
Instalar aplicaciones.
45
46
47
Una vez finalizado el asistente de nuevo proyecto, Android Studio crear toda
la estructura de proyecto y los elementos indispensables que se requieren
para la aplicacin. Si todo se ha creado adecuadamente aparecer la pantalla
principal de Android Studio con el proyecto creado.
En la lateral izquierda de la ventana, podemos observar todos los elementos
creados inicialmente para el nuevo proyecto, por defecto vemos la estructura
del proyecto en la vista Android, pero se tiene disponible tambin las vistas
Packages y Project.
5.1.1.
48
Carpeta app/java
Carpeta app/res/drawable
Carpeta app/res/layout
Carpeta app/res/men
Carpeta app/res/values
Declara los permisos que la aplicacin debe tener y que permiten acceder
a partes protegidas de la API y la interaccin con otras aplicaciones.
Este archivo manifiesto, que es un recurso del proyecto, est compuesto por una
coleccin estructurada de elementos en XML, los cuales, junto con los atributos de
cada uno de ellos sirven para proporcionarle la informacin descrita anteriormente
al sistema Android, algunos de estos elementos y sus atributos son:
<manifest>: Es el elemento raz del archivo, debe contener de manera obligatoria
un elemento <application> y especificar dentro de sus atributos un xmlns:android
y un nombre de paquete.
<uses-permission>: Pide un permiso que el usuario debe conceder a la aplicacin
para que esta pueda funcionar adecuadamente. Estos permisos son otorgados por
el usuario cuando se instala la aplicacin y no mientras se ejecuta.
<application>: Este elemento contiene subelementos que declaran cada uno de los
componentes de la aplicacin y tiene atributos que pueden afectar a todos los
componentes. Algunos atributos como icon, label, permision y process pueden ser
modificados por cada componente de manera independiente. Otros como
debuggable, enable y description no pueden ser sobrescritos por los componentes
individuales.
<activity>: Declara una Actividad (una subclase de Activity) que implementa parte
de la interfaz de usuario de una aplicacin. Todas las actividades deben ser
representadas por un elemento <activity> dentro del archivo AndroidManifest.xml,
cualquiera que no sea declarada no podr ser vista por el sistema y nunca se
ejecutar.
<intent filter>: Especifica los tipos de Intents (intenciones), que una Activity,
Services o Broadcast Receiver puede responder. Un Intent Filter permite definir las
capacidades de un componente (lo que una Activity o Service puede hacer o un
Broadcast Receiver puede enviar) y filtra los Intents que no son significativos para
el mismo.
<action>: Permite aadir una accin a un Intent Filter. Un elemento <intent filter>
debe tener uno o ms elementos <action>. Si no contiene al menos uno, ningn
objeto Intent podr ser entregado al elemento.
51
<category>: Permite aadir una categora a un Intent Filter. Es una cadena de texto
que contiene informacin adicional sobre el tipo de componente que debe manejar
la intencin. Por lo regular un Intent Filter no requiere una categora.
<service>: Define un componente servicio (una subclase de Service) como uno de
los componente de la aplicacin. Recordar que los servicios no cuentan con una
interfaz de usuario definida, a diferencia de otros componentes como las Activities,
y que tiene como propsito principal realizar tareas de larga duracin en segundo
plano. Todos los servicios deben ser representados por un elemento <services>
dentro del archivo AndroidManifest.xml. Cualquier que no sea declarado no ser
visible para el sistema operativo y no podr ser ejecutado.
<receiver>: Declara un receptor de radiodifusin (una subclase de Broadcast
Receiver) como uno de los componentes de la aplicacin. Estos receptores permiten
a las aplicaciones recibir las notificaciones que emite el sistema operativo u otras
aplicaciones.
<provider>: Define un componente proveedor de contenido (una subclase de
Content Provider) que suministra el acceso estructurado a una base de datos
gestionada por la aplicacin. Todos los proveedores de contenido deben ser
registrados bajo un elemento <provider> en el archivo manifiesto, de lo contrario no
ser visible para el sistema operativo y no podr ser ejecutado.
52
5.3.1.
54
Se trata de uno de los archivos generados por Gradle para la configuracin del
proyecto. Se caracteriza por tener incluido el nombre del proyecto en su nombre.
Por
defecto
el
archivo
Gradle
a
nivel
de
proyecto,
build.gradle(proyect:nombreAplicacin), utiliza buildScript para definir los
repositorios y las dependencias Gradle. Esto permite que los diferentes
repositorios a utilizar puedan hacer uso de versiones diferentes de Gradle.
5.3.2.
que el valor especificado en este atributo. Este valor siempre debe ser
incluido dentro de las propiedades de la aplicacin.
Grid Layout. Este contendor fue introducido a partir del API 14 de Android
(Android 4.0). Se caracteriza por dividir en lneas invisibles el espacio,
estas lneas forman una cuadrcula que permiten la definicin de filas y
columnas. Los elementos view en su interior pueden ocupar una o varias
celdas de manera horizontal o vertical.
Descripcin
Nivel de riesgo
Llamar a nmeros telefnicos Muy alto
directamente sin la intervencin
del usuario. Implica servicios por
los que se tiene que pagar.
59
INTERNET
60
Muy alto
Muy alto
Muy alto
Alto
Moderado
Moderado
Moderado
Bajo
Bajo
Bajo
61
sp: igual que el anterior pero escalada en funcin del tamao de la letra
configurado por el usuario, usado para tamao de letra.
62
Este
control y las dems vistas cuenta con diferentes atributos dentro de las
principales se encuentran:
EditText
Los controles de entrada de texto le permiten al usuario escribir texto mediante
un teclado flotante en pantalla, el cual aparece cuando el usuario "toca" el
control. El campo de texto puede ser de una o varias lneas y, adicionalmente,
permite otras acciones, como seleccionar texto, copiarlo o pegarlo y
autocompletado de texto.
Para agregar un campo de texto, desde el editor grfico del layout, se arrastra
alguno de los tipos del objeto EditText, localizados en la paleta de componentes
del panel Text Fields, lo que aade un elemento <EditText> al archivo XML
Layout.
64
Button
Un botn es un control que consta de un texto o cono (o ambos) el cual puede
responder a una accin o evento que se produce cuando el usuario lo toca.
Se pueden crear botones de tres maneras :
1. Con texto, utilizando la clase Button
65
Para agregar un botn, desde el editor grfico del layout, se arrastra alguno de
los tipos del objeto Button o ImageButton, localizados en la paleta de
componentes ampliando el panel Widgets, los cuales agregan los elementos
<Button> o <ImageButton>, respectivamente, al archivo XML layout.
Tambin es posible modificar la propiedad background el botn, permitiendo
con esto darle un estilo ms personalizado, aadiendo ya sea un color o una
imagen.
CheckBox
Permiten
al
usuario
seleccionar una o ms
opciones de un conjunto y por lo general se debe presentar cada opcin en una
66
Aparte de los atributos que comparte con el TextView, este control tiene un
atributo adicional android:checked, que permite a la opcin estar seleccionada,
si el valor es true y false en caso contrario .
Radio Button
El radiobutton permiten al usuario seleccionar una opcin de un conjunto, para
cada opcin se debe crear un elemento <RadioButton> en el layout. Sin
embargo , ya que los radiobuttons son mutuamente excluyentes, se deben
agrupar dentro de un RadioGroup, al agruparlos, el sistema asegura que slo
una opcin puede ser seleccionada a la vez.
Para agregar un radiobutton, desde el editor grfico del layout, se arrastra el
objeto localizado en la paleta de componentes del panel Widgets.
67
Spinners
Los Spinners proporcionan una manera rpida para seleccionar un valor de un
conjunto . Por defecto muestra un valor seleccionado, al tocar el spinner muestra
un men desplegable con todos los dems valores disponibles, de las cuales se
puede seleccionar uno nuevo.
Para trabajar con los Spinners es indispensable proporcionar un adaptador de
datos por medio del mtodo setAdapter() y proveer de un listener para poder
manipular
las
opciones
que
se
elijen
a
travs
del
mtodo setOnItemSelectedListener(). Tambin se puede definir en un recurso
de cadenas las opciones a mostrar, este recurso se indica en la propiedad
entries del spinner.
Para agregar un Spinner, desde el editor grfico del layout, se arrastra el objeto
localizado en la paleta de componentes del panel Widgets.
68
Aparte de los atributos bsicos, el spinner cuenta con atributos propios los cuales
son:
android:prompt: indica el texto a mostrar cuando se muestra la lista de
opciones.
android:entries. indica el nombre de un recurso array xml que contiene
los elementos a mostrar.
Para agregar los datos desde un adaptador primero se obtiene la referencia en
cdigo del spinner con findViewById(), posteriormente se define el arreglo de
datos a mostrar y se pasa como parmetro al adaptador, una vez definido el
adaptador se agrega al spinner con el mtodo setAdapter().
Finalmente para manipular las opciones seleccionadas se establece un
setOnItemSelectedListener al spinner y sobreescribiendo el callback
onItemSelected() podremos acceder al elemento que fue seleccionado de la
lista.
Eventos
En Android, hay ms de una forma de interceptar eventos desde la interaccin
del usuario con la aplicacin, el enfoque principal es capturar los eventos
especficos de una vista (view). Y la clase View nos proporciona los medios para
hacerlo, mediante mtodos "callback" que el sistema de Android llama cuando
la respectiva accin ocurre en esa vista (view), estos mtodos estn contenidos
dentro de unas interfaces de la clase View llamadas detectores de eventos
(event listeners).
Estos detectores de eventos (event listeners) contienen un solo mtodo
69
71
7.3.1
Listas simples
En las listas simples el adaptador por default espera un slo TextView para
llenar, es decir la view de cada fila estar conformada solo por texto.
Fuente
de datos
Adapter
Item 1
View
TextView
Item 2
Item 3
Argentina
ListView
Chile
Paraguay
72
7.3.2
Listas personalizadas
Fuente
de
Item
1
Adapte
r
View
Meln
$10.50
Item
2
Meln
$10.50
Manzana
$19.90
ListView
Naranja
$6.50
texto:
Parmetros de getView():
parent: View padre donde se asignar nuestro item, en este caso ser
el ListView.
4.- Y por ltimo se establece el adaptador propio en la ListView con el
mtodo setListAdapter:
7.4
Uso de TabLayout
74
Tambin se deben definir Activities para las pestaas, una por cada una, de
forma normal y sobreescribir los mtodos onPause() y onResume() los
cuales son llamados cada vez que se sale o entra, respectivamente, de una
pestaa.
La Activity principal debe extender o heredar de TabActivity y se debe
implementar la agregacin de las Activities a las pestaas. Para esto:
75
76
8.
Los temas, son el mecanismo que Android proporciona para aplicar un estilo
coherente a una aplicacin completa o a una sola Actividad. Un estilo es una
coleccin de propiedades que especifican el aspecto y el formato de una vista o
ventana, especificando las propiedades visuales de los elementos que componen
la interfaz de usuario, como el color, la altura y el tamao de fuente. A partir de la
versin de Android 4.0 (Ice Cream Sandwich), la plataforma proporciona una serie
de temas que pueden ser utilizados para construir aplicaciones, algunos de estos
temas son:
Holo Light.
Holo Dark.
Holo Light with dark action bars.
Material.
Material Light.
Material Light with dark action bars.
8.1.
77
78
79
Otro de los recursos que nos provee Android para la correcta creacin de
iconografa es una gua con herramientas, ejemplos y diseos que pueden
ser modificados para acoplarlos al contexto de nuestro proyecto. Podemos
consultar esta informacin en:
http://developer.android.com/intl/es/design/downloads/index.html
80
81
8.4.1.
82
83
84
9. Animacin y grficos.
9.1. Animacin cuadro a cuadro (Frame animation)
Creacin y uso de recursos de imagen para crear animaciones de tipo frame
(animaciones cuadro a cuadro) y la incorporacin de estas animaciones a un
proyecto Android.
Las animaciones cuadro por cuadro se encuentran definidas por una serie de
objetos dibujables que pueden ser utilizados como fondo de un elemento
view.
Para crear una animacin cuadro por cuadro:
Tener una serie de imgenes (fotogramas de la animacin) preparadas y
colocarlas en la carpeta drawable del proyecto.
86
87
88
Ahora, para aplicar esa forma a un elemento View (para este ejemplo un
botn) basta con poner ese recurso drawable como background del
elemento.
89
10.
Mens
Los mens son componentes de una interfaz de usuario comn en muchos tipos
de aplicaciones. Para proporcionar una experiencia de usuario familiar y
consistente, debe utilizar las API de men para presentar las acciones del
usuario y otras opciones en sus actividades.
Aunque la experiencia de diseo y facilidad de uso para algunos elementos del
men han cambiado, la semntica para definir un conjunto de acciones y
opciones se sigue basando en la primera API de men de Android. A
continuacin se presentaran los tres tipos fundamentales de mens disponibles
para presentar en una aplicacin.
10.1.
Men de opciones
Otra forma de uso muy til para el elemento <group> es usar checkBox o
radioButton para activar o desactivar opciones, para esto es necesario
agregar el atributo android:checkableBehavior en el elemento <group>,
pudiendo seleccionar una pocin o varias del grupo de elementos.
92
93
10.2.
Men contextual
94
10.3.
Men Popup
96
11.
Dilogos y notificaciones
11.1.
Dilogos
97
Para mostrar el mensaje, basta con crear una instancia de la clase que
hereda de DialogFragment y llamar al mtodo show() del objeto.
98
99
100
101
definida
por
la
constante
11.2.
Notificaciones.
Las notificaciones son los elementos que permiten alertar al usuario cuando
un evento requiere de una respuesta. En esta seccin se explica como definir
y hacer uso de las notificaciones.
Una notificacin es un mensaje que se muestra al usuario fuera de la interfaz
normal de la aplicacin. Aparece como un cono en el rea de notificacin de
la pantalla del dispositivo Android y es posible hacer que vaya acompaada
con sonido, vibracin y el LED del dispositivo (si cuenta con el) al emitir la
notificacin, para mostrar los detalles cuando el usuario abre la barra de
notificaciones.
Las notificaciones primero se muestran en su vista normal, la primera que
visualiza el usuario, en la barra de estado. O en su forma de vista ampliada,
que es cuando se expande la barra de notificaciones o se expande la
notificacin de manera individual. Ambas vistas pueden contener conos en
diferente tamao.
Para realizar la implementacin de una notificacin se deben tomar los
siguientes puntos:
Para
crear
la
notificacin,
se
llama
al
mtodo
NotificationCompat.Builder.build(), que regresa un objeto Notification.
11.3.
Notificaciones Toast
104
105
12.
Multimedia
106
107
12.1.
108
12.2.
12.3.
12.4.
Acceso a la cmara
110
111
13.
13.1.
SharedPreferences
112
13.2. PreferencesActivity
Concepto y uso de PreferencesActivity para la creacin de interfaces con la
opcin de preferencias. Esta es una variante de SharedPreferences.
Android ofrece la posibilidad de crear preferencias para la aplicacin
extendiendo de la clase PreferenceActivity (Obsoleta a partir de la version 3.0
de Android) o PreferenceFragment que provee un framework para crear
preferencias personalizadas, las cuales son guardadas de forma automtica
en un archivo XML usando preferencias compartidas.
Para crear un actividad de preferencias en la aplicacin, el primer paso a
realizar es aadir (en caso de no existir) a la carpetas res un subdirectorio con
el nombre xml.
113
114
115
116
117
118
Las transacciones en SQLite por default son diferidas, lo que significa que no
se bloquea la base de datos hasta que se accede ya sea por lectura o escritura
por primera vez a la base de datos.
Para crear una base de datos en SQLite, que almacene los datos de manera
local para una aplicacin, la implementacin recomendada sera la siguiente:
Hacer
una
subclase
(herencia)
de
la
clase
android.database.sqlite.SQLiteOpenHelper (el constructor de la subclase
llamara al constructor de la clase padre (SQLiteOpenHelper) creando la base
de datos) y sobrescribir los mtodos onCreate(), en el cual se ejecutarn los
comandos SQL para crear tablas en la base de datos y onUpgrade(), en el cual
se harn las operaciones necesarias cuando se actualice la base de datos
completa (como borrar, modificar o eliminar tablas).
119
120
14.
Geolocalizacin y mapas
121
122
123
Para obtener la llave se deben ingresar en el recuadro de texto una clave SHA1 y
el nombre del paquete de la aplicacin que mostrara el mapa, separados por un
punto y coma ( ; ). Ms informacin de cmo obtener la clave SHA1.
Como resultado se obtendr una clave de API que servir para aadir a la aplicacin
Android.
los mapas requieren, adems se deben definir permisos para acceder y a los
servidores de Google Maps.
125
Corroborar que el dispositivo que ejecuta la aplicacin tiene los Servicios de Google
Play instalados y activos.
14.1.
Geolocalizacin
127
128
14.2.
Criteria
129
15.
Para realizar la implementacin de una View propia, esta puede extender de la clase
android.view.View directamente o extender de algunas de las existentes subclases
de View como Button o TextView, luego estas nuevas clases pueden ser agregadas
al layout XML, junto con otras nuevas vistas u otras ya definidas por Android.
Los componentes Button, TextView, ImageView, etc todas ellas extienden o
heredan de la clase View. Es posible crear una vista personalizada y agregarla como
si se estuviera agregando un Button o alguna de los componentes ya mencionados.
Una vista ocupa un rea rectangular de la pantalla y es responsable del dibujado y
del manejo de eventos como onKeyDown(), onKeyUp(), OnTouchEvent() etc...
Para
el
dibujado
interno
de
la
vista,
se
usa
el
mtodo
onDraw(android.graphics.Canvas), el sistema llama a este mtodo cada vez que
necesite volver a dibujar el contenido. Recibe como argumento un objeto de la clase
Canvas, la cual permite realizar operaciones de dibujo que se ejecutan en
secuencia, los elementos que se dibujan primero pueden ser tapados por los
elementos que se dibujan despus.
Para dibujar algo en pantalla se requieren cuatro componentes bsicos:
Un objeto Paint (pintura) que describe los colores y estilos para el dibujo.
que se pueden ir guardando en una pila privada de Canvas y restaurar cada una de
ellas:
Mtodos save() y restore(): el mtodo save() guarda el estado del canvas en una
pila privada para poder aplicar traslaciones (mtodo canvas.translate(x,y)) o
rotaciones (mtodo canvas.rotate(grados)) en el Canvas y dibujar algo y luego
restaurar el estado original del Canvas con el mtodo restore( ). El mtodo save( ),
puede recibir como parmetro ciertas banderas que modifican la forma en cmo se
guarda el Canvas, Algunas de ellas, son:
131
15.1.
Fragmentos
132
133
16.
16.1.
SOAP
Dentro del cdigo Java se deben definir las variables referentes al servicio web
SOAP
134
135
16.2.
REST
16.3.
JSON
137
17.
Multitasking
17.1.
Loaders
138
17.2.
AsyncTask
140
141
142
18.
18.1.
Registro de la aplicacin.
Uno de los requisitos es registrar la aplicacin que se vinculara con Facebook
en su pgina de desarrolladores, esto con la finalidad de obtener un Id de
aplicacin para la configuracin de la aplicacin. Iniciando dando clic en el botn
Add a new app.
143
https://developers.facebook.com/apps/
Se muestra una pequea gua para poder implementar la aplicacin y una serie
de datos que se deben proporcionar como el nombre del paquete de la aplicacin
y el nombre de la actividad principal.
144
Otro de los datos que solicita la aplicacin para poder ser registrada es un Key
Hashes, esta clave se puede obtener mediante el comando
keytool -exportcert -alias androiddebugkey [ubicacion_de_keystore] | openssl
sha1 -binary | openssl base64
Para poder realizar pruebas con la aplicacin se puede hacerse uso del keystore
proporcionado por el SDK de Android.
145
146
Uno de los datos que se deben tomar en cuenta para su posterior uso es el App
ID, este elemento se debe proporcionar a la aplicacin en Android y se encuentra
dentro de la seccin Dashboard.
148
149
Crear un objeto SharedDialog para que el usuario pueda iniciar sesin dentro de
la aplicacin. Este SharedDialog pertenece al SDK de Facebook y solicita como
parmetros los objetos FacebookCallback y CallbackManager mencionados
anteriormente.
150
151
18.2.
152
153
154
Definir como constantes el Cosumer Key, Consumer Secret y Callback URL para
poder utilizarlos en la aplicacin.
155
La publicacin de un Tweet.
156
157
19.
Conectividad
19.1.
Conexin Http
158
19.2.
Wifi
159
Debido a que algunos dispositivos pueden no contar con la funcionalidad de WiFi, se debe solicitar la caracterstica hardware Wi-Fi a la aplicacin.
19.3.
Bluetooth
160
161
162
163
20.
Realidad aumentada
164
Una vez incorporada la imagen, dar clic en el botn Generate Target Collection.
Por ingresar al almacn de targets y descargar el archivo .wtc para versin del SDK
correspondiente.
165
166
La actividad que implemente Wikitude deber tener una configuracin para los
cambios de orientacin y tamao en la pantalla.
167
168
Es importante indicar, que todos los eventos del ciclo de vida de la Activity, sern
tambin ejecutados por el objeto architectView, por lo que hay que comunicarle al
architectView cada vez que la actividad llame a un callback del ciclo de vida.
169
170
21.
Tpicos avanzados
21.1.
Servicios
172
173
175
176
177
178
22.
179
Para asegurar que el archivo a publicar sea la ltima compilacin del proyecto,
es recomendable realizar una reconstruccin completa del mismo, esto desde el
men Build > Rebuild Project, de Android Studio.
Dentro del mismo men Build se encuentra la opcin Generate Signed APK.
Esta opcin permite crear el archivo compilado y firmado con extensin .apk que
es utilizado para publicar la aplicacin.
El primer cuadro de dilogo que se muestra permite seleccionar el modulo del
proyecto el cual ser empaquetado, por defecto solo muestra el modulo app de
la aplicacin.
Posteriormente el asistente solicita la configuracin de la firma digital para la
aplicacin. Este tipo de firmas se almacenan en un archivo que hace las
funciones de almacn de contraseas (Key Store). Si ya se cuenta con un
almacn de contraseas puede utilizarse para firmar la aplicacin, de lo contrario
se deber generar uno dando clic en el botn Create New.
180
Los datos que se deben tomar en cuenta al momento de crear un nuevo almacn
de claves son:
181
Los pasos a seguir para poder subir una aplicacin a Google Play pueden
ser resumidos a:
Despus de crear la cuenta, dar clic en el botn aadir nueva aplicacin.
184
185
186
187
188
189
Como ltimo paso, dar clic en el botn "Ready to publish" -> "Publish this app".
Es importante mencionar que esta operacin NO se puede deshacer.
191
1. Aplicaciones de pago:
Esta es la opcin clsica para ganar dinero con las aplicaciones.
A los usuarios no les gusta pagar y cada da ms empresas prefieren
sustituir este opcin por otra de las disponibles para monetizar la
aplicaciones.
Para determinados segmentos puede ser la opcin ms adecuada.
2. Aplicaciones Gratis con publicidad (In-App advertising):
La aplicacin muestra publicidad de terceros. Lo ms conveniente sera
llegar a acuerdos con anunciantes especficos, pero, si no es posible,
se puede recurrir a redes de anuncios, que ofrecen menor rentabilidad
pero se asumen el trabajo de conseguir anunciantes.
Este modelo es aceptado por los usuarios pero genera menos ingresos
por aplicacin.
Es el modelo mas utilizado en el desarrollo de aplicaciones Android (el
perfil de sus usuarios esta orientado a la cultura de productos gratis y
son ms permisivos con la publicidad).
192
194
196
197
Seleccione su aplicacin.
198
Intersticial:
199
200
Se aadir al XML
202
203
204
205