Sunteți pe pagina 1din 19

DESARROLLO TALLER INTRODUCTORIO ANDROID

REALIZADO POR: ANGELA AVENDAO


1. Que es Android?
es un sistema operativo mvil basado en Linux, que junto con aplicaciones middleware,
est enfocado para ser utilizado en dispositivos mviles como telfonos inteligentes,
tabletas, Google T ! otros dispositivos" #s desarrollado por la $pen %andset &lliance"
2. Cmo emular android?
'omo nos imaginaremos, los c(icos de Google pensaron en todo" %asta (an puesto en
marc(a un emulador )*+ para que podamos conocer ! familiarizarnos con &ndroid,
antes de comprar un mvil con este sistema operativo" $tra de las ventajas que posee
trabajar con emuladores de &ndroid, es que podemos probar las aplicaciones antes de
instalarlas ! adems no ponemos en riesgo los datos de nuestro mvil cuando estamos
cambiando de versiones o actualizando"
Lo bueno que tiene ,indows, es que Google, en su pgina para desarrolladores )*+,
nos pone a disposicin un instalable automtico, donde podemos ejecutar &ndroid
como un emulador dentro de ,indows" $tra opcin es bajarnos un comprimido o -./
donde se encuentran los arc(ivos de &ndroid, (acindolo completamente porttil, sin
necesidad de instalar nada"
#n esta imagen vemos las dos opciones que podemos encontrar en la pgina para
desarrolladores de Google
Luego, elegimos cul queremos descargar, que generalmente se nos recomienda el
#0#, !a que es el de ms fcil instalacin" 1na vez descargado, le damos instalar !
tendremos a nuestra carpeta de &ndroid 2generalmente '34&rc(ivos de
/rograma4&ndroid5, donde podremos ejecutar el emulador" &ll6 la comenzar el sistema
operativo"
/or otro lado, si (emos elegido la versin zip, entonces simplemente la
descomprimiremos ! ejecutaremos el )*+ 7anager 2que casualmente tiene el 6cono de
&ndroid5 ! seguiremos las instrucciones en pantalla"
'omo podemos ver, si somos desarrolladores o simplemente queremos probar &ndroid
en nuestro ordenador antes de instalrselo al mvil, entonces esta es una de las
mejores ! ms fciles opciones de todas"
3. Ventajas de android frente a otros sistemas
#l gran bene8cio que ofrece &ndroid es que no es solo un sistema operativo ms, sino
que se trata de un ecosistema completo que (a logrado cautivar a los usuarios,
desarrolladores, fabricantes ! operadores en una relacin gana9gana
#st desarrollado bajo una plataforma de cdigo abierto, lo que permite una amplia
interaccin por parte de los desarrolladores ! usuarios"
'omunidad de desarrolladores" &ndroid tiene la ventaja de contar con la ms grande
comunidad de desarrolladores, lo que (a generado un concurrido entorno de eventos,
foros, grupos de participacin ! concursos que optimizan los servicios ! aplicaciones
ofrecidos a usuarios"
#s un sistema operativo creado por Google, lo que facilita ! acelera el uso de varios de
los principales servicios de .nternet, como Gmail, Gtal:, Google 7aps ! ;ouTube"
& pesar de ser un sistema operativo abierto creado por una sola 8rma, (a! varias
empresas fabricantes que lo apo!an a travs de $pen %andset &lliance ! que lo
inclu!en en los nuevos telfonos que lanzan al mercado"
/recios ms bajos" &l existir un amplio mercado de productos con &ndroid, los precios
de los dispositivos son ms bajos a los ofrecidos con otros sistemas" *e igual forma, en
el mercado &ndroid se encuentran equipos de todos los precios ! diferentes gamas"
&cceso a aplicaciones" *e <="=== aplicaciones que se ten6an en la tienda de &ndroid en
<==> 2cuando se lanz5 se (a pasado a un poco ms de <=="=== en el <=?? ! en la
actualidad es la que ms aplicaciones gratuitas ofrece a los usuarios"
$tros dispositivos" #l sistema operativo est presente en telfonos mviles, pero
tambin en otros aparatos 2por ejemplo tabletas5 por lo que es mu! fcil ! @amigableA
continuar con los bene8cios del sistema en otros ambientes"
Tienda desde el /'" #l reciente lanzamiento de la tienda &ndroid disponible desde la
web (ttps344mar:et"android"com4 permite a los usuarios descargar juegos, widgets,
libros, fotograf6as ! mBltiples aplicaciones de entretenimiento ! comunicacin desde
sus navegadores"
Liderazgo compartido" La posibilidad de que todos ganen con un sistema que cerrar el
<=?? como l6der en su categor6a crea un escenario ideal para que cada vez ms actores
se sumen a este universo, lo que fortalecer el ecosistema ! generar nuevas
econom6as de escala"
4. Describa las siguientes caractersticas de android
!rame"or# de a$licaciones
Los desarrolladores tienen acceso a las mismos &/.s utilizadas en las aplicaciones base
2core5" La arquitectura est diseCada para simpli8car el reus de componentesD
cualquier aplicacin puede publicar sus capacidades ! cualquier otra aplicacin puede
luego (acer uso de esas capacidades 2sujeto a reglas de seguridad del framewor:5"
Este mismo mecanismo permite que los componentes sean reemplazados por el
usuario"
%a m&'uina (irtual Dal(i#
Dalvik es la mquina virtual que utiliza la plataforma para dispositivos mviles
&ndroid" *alvi: (a sido diseCada por *an Fornstein con contribuciones de otros
ingenieros de Google"
*alvi: est optimizada para requerir poca memoria ! est diseCada para permitir
ejecutar varias instancias de la mquina virtual simultneamente, delegando en el
sistema operativo sub!acente el soporte de aislamiento de procesos, gestin de
memoria e (ilos"
& menudo *alvi: es nombrada como una mquina virtual Gava, pero esto no es
estrictamente correcto, !a que el b!tecode con el que opera no es Gava b!tecode" )in
embargo, la (erramienta dx incluida en el )*+ de &ndroid permite transformar los
arc(ivos 'lass de Gava compilados por un compilador Gava al formato de arc(ivos *ex"
#l nombre de *alvi: fue elegido por Fornstein en (onor a *alv6:, un pueblo de
#!jafjHrIur, .slandia, donde vivieron antepasados su!os"
)r&ficos o$timi*ados
'on librer6as gra8cas <*, gra8cas J* basadas en $penGL #) ?"="
+Q%ite
SQLite es un sistema de gestin de bases de datos relacional compatible con &'.*,
contenida en una relativamente pequeCa 2K<LM :iF5 biblioteca escrita en '" )NLite es
un pro!ecto de dominio pBblico creado por *" Oic(ard %ipp"
& diferencia de los sistemas de gestin de bases de datos cliente9servidor, el motor de
)NLite no es un proceso independiente con el que el programa principal se comunica"
#n lugar de eso, la biblioteca )NLite se enlaza con el programa pasando a ser parte
integral del mismo" #l programa utiliza la funcionalidad de )NLite a travs de llamadas
simples a subrutinas ! funciones" #sto reduce la latencia en el acceso a la base de
datos, debido a que las llamadas a funciones son ms e8cientes que la comunicacin
entre procesos" #l conjunto de la base de datos 2de8niciones, tablas, 6ndices, ! los
propios datos5, son guardados como un slo 8c(ero estndar en la mquina (ost" #ste
diseCo simple se logra bloqueando todo el 8c(ero de base de datos al principio de cada
transaccin"
#n su versin J, SQLite permite bases de datos de (asta < Terab!tes de tamaCo, !
tambin permite la inclusin de campos tipo FL$F"
,. Describa la siguiente ar'uitectura de android del sistema o$erati(o
A$licaciones
Las aplicaciones base incluirn un cliente de email, programa de )7), calendario,
mapas, navegador, contactos, ! otros" Todas las aplicaciones escritas en el lenguaje de
programacin Gava"
!rame"or# de a$licaciones
Los desarrolladores tienen acceso a las mismos &/.s utilizadas en las aplicaciones base
2core5" La arquitectura est diseCada para simpli8car el re9uso de componentesD
cualquier aplicacin puede publicar sus capacidades ! cualquier otra aplicacin puede
luego (acer uso de esas capacidades 2sujeto a reglas de seguridad del framewor:5"
Este mismo mecanismo permite que los componentes sean reemplazados por el
usuario"
%ibreras
&ndroid inclu!e un set de librer6as '4'PP usadas por varios componentes del sistema"
#stas capacidades se exponen a los desarrolladores a travs del framewor: de
aplicaciones de &ndroid" &lgunas son3 )!stem ' librar! 2implementacin librer6a '
estndar5, librer6as de medios, librer6as de gr8cos, J*, )NLite, entre otras"
-untime de Android
&ndroid inclu!e un set de librer6as base que proveen la ma!or parte de las
funcionalidades disponibles en las librer6as base del lenguaje de programacin Gava"
'ada aplicacin &ndroid corre su propio proceso, con su propia instancia de la 7quina
irtual *alvi:" *alvi: (a sido escrito de forma que un dispositivo puede correr mBltiples
mquinas virtuales de forma e8ciente" *alvi: ejecuta arc(ivos en el formato *alvi:
#xecutable 2"dex5, el cual est optimizado para memoria m6nima" La 7quina irtual
est basada en registros, ! corre clases compiladas por el compilador de Gava que (an
sido transformadas al formato "dex por la (erramienta incluida QdxQ"
./cleo 0 %inu1
&ndroid depende de un Linux versin <"R para los servicios base del sistema como
seguridad, gestin de memoria, gestin de procesos, stac: de red, ! modelo de drivers"
#l nBcleo tambin actBa como una capa de abstraccin entre el (ardware ! el resto del
stac: de software"
2. 3lo'ues de construccin de A$licacin
Acti(it4
1na QActivityQ es, fundamentalmente, un objeto que tiene un ciclo de vida" 1na
QActivityQ es un trozo de cdigo que (ace algBn trabajo" )i fuera necesario, este trabajo
puede incluir el despliegue de una 1. al usuario" )in embargo, lo anterior no es
necesario ! algunas QActivityQ nunca despliegan una 1." T6picamente, tB designars una
de las QActivityQ de tu aplicacin como el punto de inicio de tu aplicacin"
5nCreate
#l mtodo onCreate() es invocado cuando la actividad se inicia" 'uando trabajamos con
actividades en &ndroid es importante que por lo menos implementemos este mtodo"
onCreate() recibe como parmetro un objeto de la clase Bundle, que contiene el estado
anterior de la actividad en caso de que (a!a sido suspendida"
Vie"s
1na QViewQ es un objeto que sabe cmo dibujarse asimismo en la pantalla" Las
interfaces de usuario de &ndroid estn conforman un rbol de QViewQ" )i tB quieres
realizar algBn tipo de tcnica gr8ca especial entonces debers crear una QViewQ 2este
es el caso en el cual tB quisieras crear un juego o construir un nuevo tipo de interface
de usuario5"
6ntents
1n QIntentQ es un simple mensaje que representa Qla intencinQ de (acer algo" /or
ejemplo, si tu aplicacin quiere abrir una pgina web, debe expresar su QIntentoQ para
ver la 1O. a travs de la creacin de una instancia de QIntentQ ! luego entregrsela al
sistema" /osteriormente, el sistema ubicar una pieza de cdigo que sepa cmo
manipular aquel QIntentoQ ! la ejecuta 2en este caso un browser5" Los QIntentQ tambin
pueden ser usados para difundir eventos interesantes a travs de todo el sistema 2tales
como noti8caciones5"
+er(ices
1n QServiceQ es un cuerpo de cdigo que se ejecuta en segundo plano" )e ejecuta
dentro de su propio proceso o en el contexto del proceso de otra aplicacin,
dependiendo de sus necesidades" $tros componentes se QatanQ a un QServicioQ e
invocan sus mtodos a travs de Qllamados remotos de procedimientos 2O/'5Q" 1n
ejemplo de un QServiceQ es un reproductos de mBsica" #n este caso, el usuario podr6a
usar una 1. para seleccionar la mBsica ! posteriormente cerrar la 1., pero la mBsica
deber continuar sonando" #sto se logra usando un QServicioQ que continuar la
reproduccin de la mBsica"
.otifications
1na noti8cacin es un pequeCo 6cono que aparece en la barra de estado" Los usuarios
pueden interactuar con este 6cono para recibir informacin" Las noti8caciones ms
conocidas son los mensajes )7), correo de vozD pero las aplicaciones pueden crear sus
propias noti8caciones" Las noti8caciones son el mecanismo preferido para alertar al
usuario que algo requiere de su atencin"
Content7ro(iders
1n QContentProviderQ es un almacn de datos que provee acceso a datos en el
dispositivo" 1n ejemplo clsico es el QContentProviderQ que es usado para tomar datos
desde la lista de contactos" Tu aplicacin puede utilizar datos que otras aplicaciones
(an expuesto v6a un QContentProviderQ" TB tambin puede de8nir tus propios
QContentProviderQ para as6 exponer tus propios datos"
8. Android funciona bajo 'ue sistemas o$erati(os
)i quieres darte una idea de que que se puede esperar de el $) de Google, existe la
oportunidad de instalar &ndroid en todos los equipos con arquitectura x86 ! para
suerte nuestra que no queremos complicarnos la vida instalando el sistema operativo,
Google nos permite poder probarlo desde un Live'* que puedes descargarlo como
Torrent o directamente desde la pgina del pro!ecto" )e descargar como una imagen
.)$ que debers de quemarla para luego desde Preferencias del Sistema y Discos
de Arranque poder iniciar &ndroid en cualquier 7ac .ntel que tengas sin el ms
m6nimo esfuerzo"
Lo que debemos de tener en cuenta, es que este $) no est desarrollado para
ordenadores, as6 que como todav6a anda en paCales este pro!ecto, no podrn utilizar
el mouse o trackpad, todo deber de ser (ec(o con el teclado"
,indows 0/ 2J<9bit5, ista 2J< o RS9bit5, o ,indows L 2J< o RS9bit5"
7ac $) 0 ?="M"> superior 2x>R solamente5"
Linux 2/robando en !untu Linux, Lucid L!nx5
9. Cuales son los -e'uisitos $ara $oder $rogramar en Android
*escargar )*+
*escargar #clipse
*escargar G*+R
*escargar el /lugin de #clipse 2&*T5
&ndroid est basado en Gava ! 07L para la parte de interfaz de usuario, se debe tener
conocimientos m6nimos de Gava o programacin orientada a objetos ! bases en 07L
que es un lenguaje de marcas 2como %T7L5 por lo que no deber6as tener ningBn
problema para aprenderlo si no lo conoces"
:. Describa cual es el entorno de desarrollo de android
#ste es otro de los grandes generadores de discusin" T#clipseU TVetFeansU T.ntelliG
.*#&U /rcticamente la totalidad de la documentacin o8cial de &ndroid est dirigida a
#clipse" Oealmente #clipse es un gran entorno de desarrollo, con una ingente cantidad
de extensiones disponibles" &dems, (asta (ace mu! poco, .ntelliG no dispon6a de
extensiones para &ndroid en su versin 'ommunit! 2aunque s6 en su versin de pago5"
1;. 7ara 'ue sir(en las siguientes bibliotecas
+4stem C librar4
#s una implementacin WF)*9derivedX de la Wstandard ' s!stem librar! 2libc5X, que (a
sido mejorada para ser incrustada en dispositivos basados en Linux"
<edia %ibraries
#stas librer6as permiten la reproduccin ! grabacin de4en los formatos de audio, video
! fotograf6a ms populares" .nclu!e3 7/#GS, %"<RS, 7/J, &&', &7O, G/G, and /VG"
#stas librer6as estn basadas en W/ac:etideoAs $pen'$O#X"
+urface <anager
&dministra el acceso los subsistemas de pantalla ! utilizacin de gr8cos <* ! J*
desde mBltiples aplicaciones"
%ib=ebCore
#s un Wweb browserX que potencia tanto el W&ndroid FrowserX como las ,eb iew"
+)%
#l motor gr8co <* sub!acente al sistema"
3D libraries
#s una implementacin basada en las W$penGL #) ?"= &/.Xs" #stas librer6as pueden
usar tanto el (ardware J* de aceleracin 2si est dis$onible5 o el WJ* rasterizerX que es
incluido en &ndroid"
!ree>4$e
#s el Wfont rasterizerX para mapas de bits ! vectores"
+Q%ite
#s un poderoso ! liviano motor de bases de datos relacionales que est disponible para
todas las aplicaciones"
11. Ciclo de (ida de las a$licaciones Android.
#n la ma!or a de los casos, una aplicacin &ndroid ejecuta dentro de su propio proceso
Linux" #l proceso es creado para ejecutar el cdigo de la aplicacin ! es el sistema
quien
/edir ! reclamara su memoria para reasignarla a otra aplicacin"
1na caracter6stica peculiar en &ndroid es que el tiempo de vida de un proceso no
#s controlado directamente por la aplicacin" #s el sistema quien decide ! determina el
Tiempo de vida basndose en el uso ! capacidades del sistema"
/ara determinar que procesos debern ser eliminados ante una condicin baja de
7emoria, &ndroid prioriza los procesos bajo una jerarqu6a para asignar a cada proceso
1na importancia en el sistema"
12. Describa el $roceso de instalacin de ecli$se? sd# de android 4 el $lugin de
ecli$se @AD>A
%o $rimero ser& re(isar si tu ordenador cum$le con los re'uerimientos. 7ara instalar el Android
SDK necesitar&s lo siguienteB
=indo"s C7 @32DbitA? Vista @32 o 24DbitA? o =indo"s 8 @32 o 24DbitA.
<ac 5+ C 1;.,.9 su$erior @192 solamenteA.
%inu1 @7robando en Ubuntu Linux? %ucid %4n1A
5bligatoria mente deber&s tener instalado el EDF , o 2 @Java Development KitA? esto $or'ue las
a$licaciones Android son GecGas $or lo general en Ea(a? $or lo 'ue necesitar&s este it de
desarrollo 4a 'ue con el entorno de ejecucin @E-HA no basta.
7osteriormente bajaremos E!lipse 4 el $lugin AD>. 7ara bajar Hcli$se $uedes entrar a la siguiente
direccin "ebB "ttp#$$%%%&e!lipse&or'$do%nloads$ 4 seleccionar la o$cin IEclipse IDE for Java
DevelopersI.
(aso )# Des!ar'ar el Android SDK
7ara descargar el Android +DF $odemos entrar a la siguiente direcccinB
"ttp#$$developer&android&!om$sd$index&"tml? all encontraremos las (ersiones $ara %inu1?
=indo"s 4 <ac5+.
%uego crearemos una car$eta en el disco local CBJ de la manera IC:\AndroidI? es solo $ara tener
una buena estructura. Hl siguiente $aso ser& instalar ecli$se? $uede ser en el mismo directorio? $or
l o'ue co$iamos la car$eta de Hcli$se all @C:\EclipseA.
(aso *# Instalar el plu'in ADT en E!lipse
AD> son siglas de Android Development Tools? las cuales son una serie de Gerramientas $ara
$oder pro'ramar en Android desde ecli$se. %o m&s com$lejo de la instalacin es esto as 'ue
Ga4 'ue Gacerlo bien. Veamos como se GaceB
1. 6niciamos Hcli$se 4 (amos a +elp , Install Ne% So-t%are.
2. Hn la (entana 'ue a$arece? Gacemos clic# en el botn Add? 'ue se encuentran en la $arte
su$erior derecGa.
3. Hn el recuadro 'ue sale? en el a$artado I.ameK escribimos IADT PluginI? mientras 'ue en
I%ocationK $onemos esta L-%B "ttps#$$dl.ssl&'oo'le&!om$android$e!lipse$ 4 damos clic#
en 5#.
4. AGora se Gan cargado nue(as IGerramientasK? marcamos la casilla IDeveloper ToolsK 4
damos clic# en siguiente.
,. Hn el recuadro 'ue aGora sale se muestra lo 'ue se (a a descargar? damos clic# en
siguiente.
2. <arcamos la o$cin I6 Acce$t tGe terms of tGe license agreementsK 4 $resionamos finali*ar.
AGora se instalar&n los $a'uetes. +i sale alguna ad(ertencia de seguridad solo $resionamos 5#.
%o /ltimo ser& reiniciar Hcli$se $ara im$lementar los cambios.
Con-i'urar el plu'in ADT para E!lipse
Dentro de este mismo $aso configuraremos el $lugin. As 'ue aGora seguimos los siguientes $asos
una (e* se Ga reiniciado E!lipse 4 se Ga4an a$licado los cambiosB
1. Vamos a =indo" M 7references.
2. +eleccionamos IAndroidK en el $anel i*'uierdo de la (entana 'ue a$arece.
3. All nos $edir& seleccionar los $atGs del Android +DF? $or lo 'ue Gacemos clic# en 3ro"se?
seleccionamos la ruta en donde dejamos el +DF 4 $resionamos 5# 4 luego A$$l4.
(aso /# A0adir plata-ormas 1 otros !omponentes
Na solo 'ueda aOadir $lataformas $ara $oder ejecutar nuestras a$licaciones? es decir? las distintas
(ersiones de la $lataforma Android $ara correr a$licaciones seg/n lo solicitemos.AGora nos
dirigiremos a =indo"s M Android +DF and ADV <anager.
Pacemos clic# en Available (a!a'es 4 seleccionamos lo 'ue 'ueremos instalar. No seleccionarQ
las a$i 8? 9 4 1; 4 en T"ird (art1 Addons seleccionarQ 2oo'le Driver US3? $ara m&s adelante
usar el DD<+ $ara $oder tomar ca$turas de $antalla de la $antalla del m(il.
%isto? 4a con eso tendremos instalado el Android SDK? com$letamente funcional. 7ero aGora
(eamos como correr una m45uina virtual Android en nuestro ordenador. 7or cierto? si al terminar
el $roceso anterior? reiniciar Hcli$se 4 arrancar al ADV <anager @=indo" M Android +DF ADV
<anagerA les $ide configurar de nue(o el directorio del +DF (an a =indo" M 7references?
seleccionan Android 4 luego el a$i 'ue usar&n.
AGora estando en el ADV <anager le damos clic# en Ine"K 4 deberemos configurar la m&'uina
(irtual de esta maneraB
%uego le damos en Create 4 $or /ltimo en el mismo AD6 7ana'er seleccionamos nuestra
m&'uina (irtual le damos +tart 4 luego %auncG? el resultado ser& esteB
13. Cual es la estructura de un $ro4ecto android
'uando creamos un nuevo pro!ecto &ndroid en #clipse se genera automticamente la
estructura de carpetas necesaria para poder generar posteriormente la aplicacin" #sta
estructura ser comBn a cualquier aplicacin, independientemente de su tamaCo !
complejidad"
#n la siguiente imagen vemos los elementos creados inicialmente para un nuevo
pro!ecto &ndroid3
*escribamos los elementos principales"
"arpeta #src#
'ontiene todo el cdigo fuente de la aplicacin, cdigo de la interfaz gr8ca, clases
auxiliares, etc" .nicialmente, #clipse crear por nosotros el cdigo bsico de la pantalla
2Activity5 principal de la aplicacin, siempre bajo la estructura del paquete java
de8nido"
"arpeta #res#
'ontiene todos los 8c(eros de recursos necesarios para el pro!ecto3 imgenes, v6deos,
cadenas de texto, etc" Los diferentes tipos de recursos de debern distribuir entre las
siguientes carpetas3
4res4drawable4" 'ontienen las imgenes de la aplicacin" )e puede dividir en
drawable9ldpi, 4drawable9mdpi ! 4drawable9(dpi para utilizar diferentes
recursos dependiendo de la resolucin del dispositivo"
4res4la!out4" 'ontienen los 8c(eros de de8nicin de las diferentes pantallas
de la interfaz gr8ca" )e puede dividir en 4la!out ! 4la!out9land para de8nir
distintos la!outs dependiendo de la orientacin del dispositivo"
4res4anim4" 'ontiene la de8nicin de las animaciones utilizadas por la
aplicacin"
4res4menu4" 'ontiene la de8nicin de los menBs de la aplicacin"
4res4values4" 'ontiene otros recursos de la aplicacin como por ejemplo
cadenas de texto 2strings"xml5, estilos 2st!les"xml5, colores 2colors"xml5, etc"
4res4xml4" 'ontiene los 8c(eros 07L utilizados por la aplicacin"
4res4raw4" 'ontiene recursos adicionales, normalmente en formato distinto a
07L, que no se inclu!an en el resto de carpetas de recursos"
'omo ejemplo, para un pro!ecto nuevo &ndroid, se crean los siguientes recursos para
la aplicacin3
"arpeta #$en#
'ontiene una serie de elementos de cdigo generados automticamente al compilar el
pro!ecto" 'ada vez que generamos nuestro pro!ecto, la maquinaria de compilacin de
&ndroid genera por nosotros una serie de 8c(eros fuente en java dirigidos al control de
los recursos de la aplicacin"
#l ms importante es el que se puede observar en la imagen, el 8c(ero R.java, ! la
clase R" #sta clase R contendr en todo momento una serie de constantes con los .* de
todos los recursos de la aplicacin incluidos en la carpeta /res/, de forma que
podamos acceder facilmente a estos recursos desde nuestro cdigo a travs de este
dato" &s6, por ejemplo, la constante R.drawable.icon contendr el .* de la imagen
icon.png contenida en la carpeta /res/drawable/" eamos como ejemplo la clase O
creada por defecto para un pro!ecto nuevo3
1
2
3
4
,
2
8
9
:
1;
11
12
package net.sgoliver;

public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon=0!f0"0000;
}
public static final class la#out {
public static final int $ain=0!f0%0000;
}
public static final class string {
13
14
1,
12
public static final int app&na$e=0!f0'000(;
public static final int )ello=0!f0'0000;
}
}
"arpeta #assets#
'ontiene todos los dems 8c(eros auxiliares necesarios para la aplicacin 2! que se
incluirn en su propio paquete5, como por ejemplo 8c(eros de con8guracin, de datos,
etc"
La diferencia entre los recursos incluidos en la carpeta 4res4raw4 ! los incluidos en la
carpeta 4assets4 es que para los primeros se generar un .* en la clase O ! se deber
acceder a ellos con los diferentes mtodos de acceso a recursos" /ara los segundos sin
embargo no se generarn .* ! se podr acceder a ellos por su ruta como a cualquier
otro 8c(ero del sistema" 1saremos uno u otro segBn las necesidades de nuestra
aplicacin"
%ic&ero Android'anifest(xml
'ontiene la de8nicin en 07L de los aspectos principales de la aplicacin, como por
ejemplo su identi8cacin 2nombre, versin, icono, Y5, sus componentes 2pantallas,
mensajes, Y5, o los permisos necesarios para su ejecucin" eremos ms adelante ms
detalles de este 8c(ero"
14. Lso de la base de datos +Q%ite
)NLite es un pequeCo ZsistemaZ de base de datos3 es una biblioteca que sobre un
arc(ivo almacena el esquema de la base de datos ! los datos propiamente tal" #n
trminos generales presenta un buen rendimiento, ! est aconsejada para quienes
requieren almacenar un volumen medio de datos en sus aplicaciones, utilizando un
esquema relacional" #n el caso de querer incluir la &/. )NLite en tu pro!ecto de
programacin, puedes incluir en tu programa '4'PP a sqlite"(, compilar a sqlite"c !
listo"
*entro de lo que podemos llamar una desventaja de )NLite es que no implementa la
integridad referencial, es decir, no disponemos de claves forneas 2puedes declararlas,
pero el intrprete ignorar tu declaracin5" *e todas formas, )NLite si implementa
triggers, as6 que (a! algunas formas de implementar la integridad referencial de esa
forma"
1,. Contact<a$B %ocali*ador de Contactos
)i usted tiene muc(os contactos con la direccin, esta aplicacin te va a a!udar a
ubicarlos en el mapa" 1sted puede encontrar los contactos con slo mover el mapa,
escribiendo la clave postal4direccin, o usando de la ubicacin actual"
12. Que se re'uiere $ara $oder usar google ma$s en android
Vecesitamos un api+e! para poder utilizar los mapas de google desde &ndroid, para
generar la clave seguir los siguientes pasos3
[ :e!tool 9list 9:e!store K4"android4debug":e!store
"""
'erti8cate 8ngerprint 27*M53
\S3?#3SJ3S\3>L3LJ3FF3#R3&R3>>3*L3<=3]?3>#3FM3\>
*espus debers ir a la siguiente url (ttp344code"google"com4intl4es9#)4android4maps9
api9signup"(tml ! obtener tu clave a partir del 7*M que se (a generado anteriormente"
'uando obtengas tu clave gurdala en un sitio seguro ! aCdela al la!out,
concretamente en la etiqueta android3api+e!"
/or ultimo slo nos queda aCadir en el arc(ivo 7anifest"xml la siguiente declaracin3
^uses9librar! android3name_Qcom"google"android"mapsQ 4`
1na vez que (emos con8gurado el la!out para que aparezca el mapa ! (emos creado
la clave que nos permitir descargar mapas de google, vamos a ver el cdigo necesario
para mostrar nuestra localizacin en dic(o mapa"
18. <a$Vie"
#s un control con el que podremos manipular un mapa desde el cdigo de nuestra
aplicacin" #ste muestra en el modo de mapa tradicional, sin embargo, el control
tambin nos permite cambiar por ejemplo a vista de satlite, marcar las zonas
disponibles en )treetiew, o mostrar la informacin del tr8co"
#l 7apiew no es un elemento propio de &ndoid, pertenece a una librer6a externa de
Google" Vo vamos a tener problema para distribuir nuestras aplicaciones !a que esta
librer6a viene incluida en la ma!or6a de dispositivos, pero s6 vamos a necesitar usar un
)*+ especial para desarrollar" &s6 que en las propiedades de nuestro pro!ecto, bajo la
categor6a &ndroid debemos seleccionar como Wbuild targetX uno de los llamados
Google &/.s correspondiente a la versin sobre la que queramos construir nuestro
pro!ecto"
19. <a$Acti(it4
#s un control para facilitarnos el manejo de la visualizacin del mapa"
La clase 7ap&ctivit! maneja los temas de fondo, se conecta a la .nternet para los
datos, se ocupa de almacenamiento en cac(, (ace animaciones, se encarga de el
ciclo de vida, ! muc(o ms"
#s la clase principal que contendr el cdigo con el que se (aga uso de los diferentes
servicios ofrecidos por Google 7aps" #s una subclase de &ctivit!, por lo que sus
mtodos ! manejo idntico3 creando una subclase a la medida de lo que necesite el
desarrollador" La clase 7apiew anteriormente comentada solo puede ser instanciada
en una 7ap&ctivit! que se (aga cargo de la gestin de sus servicios ! su eliminacin"
#sto se debe a que depende de varios (ilos para acceder a la red ! el sistema de
arc(ivos en segundo plano, ! dic(os (ilos deben ser guiados en conjuncin con el ciclo
de vida del
7ap&ctivit!"

anicamente se admite un 7ap&ctivit! por proceso, en caso contrario se pueden
obtener resultados inesperados
1:. <a$Controller
#l objeto 7ap'ontroller se encarga de controlar el zoom ! la posicin del mapa"
Gestiona el manejo de un mapa, como desplazamientos o zoom" )e obtiene como valor
de retorno de 7apiew"get'ontroller25" #stos son algunos de sus mtodos3
b animateTo 2Geo/oint53 7ueve el mapa (asta el punto dado como parmetro" La
clase Geo/oint representa un punto geogr8co ! su constructor recibe dos
enteros3 la latitud ! la longitud multiplicadas por ?#R"
b int set-oom2int53 /ermite modi8car el nivel de zoom" #l parmetro tomar un
valor entre ? 2 el ms lejano 5 ! <? 2 el ms cercano, estando solo disponible en
ciertas ubicaciones 5" *evuelve el nivel del zoom al que 8nalmente se (a
situado"
b stop&nimation2boolean53 /ara cualquier animacin que est en progreso en ese
momento, actualizando el centro del mapa a todo lo que la animacin parcial
(a!a llegado
2;. De 'ue trata el $a'uete %ocation
#s el paquete que provee las clases necesarias para el manejo de G/) en &ndroid" /ara
poder usarlo es necesario otorgar el permiso &''#))c].V*cL$'&T.$V a la aplicacin"
)us elementos ms relevantes son3
b Location3 clase que representa una localizacin geogr8ca en un tiempo concreto"
bLocation7anager3 clase para gestionar el dispositivo de localizacin" /ermite
actualizaciones peridicas de la situacin geogr8ca del dispositivo, o disparar un
evento espec68co cuando el dispositivo entra en la proximidad de una zona geogr8ca
determinada" &s6 por ejemplo para conocer la situacin actual se utiliza
Location7anager"getLast+nownLocation2QgpsQ5"
bGeocoder3 clase que permite traducir entre direcciones f6sicas ! coordenadas en
latitud ! longitud, ! viceversa"
bLocationListener3 interfaz que permite implementar una clase que captura los eventos
asociados al dispositivo de localizacin" Tiene mBltiples utilidades, como pintar la
posicin del usuario en un mapa o transmitirla a otros dispositivos" &dems es posible
simular un G/) V7#&9compatible en el emulador, dado que la consola proporciona un
comando que permite establecer la posicin geogr8ca actual" )u sintaxis es la
siguiente3
geo ^8xdnmea`, donde el primer parmetro sirve para especi8carla longitud ! latitud
en grados, e incluso la altitud en metros si fuese necesarioD mientras que el segundo
permite enviar sentencias V7#& =?>J"
21. Control de la seOal )7+
ContactMap utiliza la seCal G/) para conocer la ubicacin actual del usuario, pudiendo
as6 tanto dibujarla en el mapa mostrado como comunicrsela a los dems usuarios a
travs de su actualizacin en el servidor"
"onocer la propia u!icaci)n
/ara poder acceder ! controlar a la seCal G/) se utilizan las clases presente en el
paquete android.location" #n general, este paquete inclu!e clases que permiten
manejar diferentes dispositivos de localizacin" &lgunos de los elementos presentes en
este paquete son3
Location3 clase que representa una localizacin geogr8ca"
LocationManager3 clase para gestionar el dispositivo de localizacin"
Geocoder3 clase que permite traducir entre direcciones f6sicas ! coordenadas en
latitud ! longitud, ! viceversa"
LocationListener3 interfaz que permite implementar una clase que captura
los eventos asociados al dispositivo de localizacin"
22. Control de la seOal =iD!i
ContactMap conecta con el servidor de forma peridica para actualizar la localizacin
del usuario ! para conocer las localizaciones de sus contactos" #sta comunicacin se
realiza a travs de .nternet con conexiones %TT/"
#l paquete android.net.wifi provee a &ndroid de diversas clases para gestionar el
dispositivo ,i9]i del aparato mvil" #n concreto, se utilizar la clase WifiManager para
controlar este elemento de conexin"
&l igual que con el G/), al dispositivo de ,i9]i se accede utilizando el mtodo
getSystemService() de la clase ContactMap, que da acceso a distintos servicios
integrados en el dispositivo mvil" #n esta ocasin, la llamada debe realizarse
utilizando la constante Context.WIFI_SERVICE" *e esta forma, se adquiere un objeto
WifiManager vlido con el que controlar la ,i9]i"
/ara poder utilizar sin problemas el dispositivo de ,i9]i, &ndroid exige que se autorice
expresamente a la aplicacin a usar dic(o dispositivo" #sta autorizacin se mani8esta a
travs del permiso correspondiente en el 8c(ero W&ndroid7anifest"xmlX3
^uses9permission android3name_Qandroid"permission"&''#))c,.].c)T&T#Q 4`
23. Cone1iones P>>7
Los intercambios de informacin en formato 07L entre la aplicacin ContactMap ! el
servidor se realizan mediante el protocolo %TT/" #n las peticiones se utiliza el mtodo
/$)T de dic(o protocolo, encapsulando el documento 07L correspondiente dentro de
un campo de nombre W07LX" #n las respuestas, el contenido 07L viaja en el campo de
datos"
/ara estos eujos de informacin se utilizan las clases Update ! HTTPConnection" #n
concreto, es esta Bltima la encargada de las labores de ms bajo nivel a la (ora de
establecer una conexin %TT/"
&ndroid cuenta con numerosos paquetes ! clases dedicados en exclusiva a los
diferentes aspectos de las comunicaciones" /or ejemplo, de Gava (ereda, entre otros,
javax.net o java.net" *entro de sus paquetes exclusivos como plataforma, inclu!e
una ampl6sima familia de paquetes bajo el nombre ra6z android.net.* ! sobre todo
org.apache.http.*, de la que se (ar uso en esta aplicacin"
24. Lso de la base de datos +Q%ite
La informacin de localizacin de los contactos se actualiza de forma peridica
mediante conexiones con el servidor" )in embargo, en caso de no tener una seCal ,i9]i
disponible ContactMap utiliza la informacin almacenada en la base de datos )NLite de
&ndroid para mostrar al menos las Bltimas ubicaciones conocidas"
Toda la gestin relacionada con la base de datos se lleva a cabo en la clase
FriendDataBase" #n ella estn implementados dos mtodos importantes3
getFriends() que devuelve un objeto Cursor con todos los contactos almacenados
en la base de datos, e insertFriend() que actualiza los datos de un contacto ! en
caso de no existir lo inserta" #l manejo de la base de datos )NLite es mu! similar al que
se (ace cuando se accede, por ejemplo, a la informacin de los contactos almacenados
en el propio dispositivo mvil, !a explicado en el apartado S"<"?="
#n la clase FriendDataBase se declaran dos variables globales de mbito privado" La
primera, mDataBase, representa un objeto de la clase SQLiteDatabase" #sta clase
forma parte del paquete android.database.sqlite, que inclu!e otras muc(as clases
e interfaces para el manejo de )NLite" La variable mDataBase representa un
controlador de la base de datos ! proporciona mtodos para la creacin, consulta o
actualizacin de la misma" La otra variable global, llamada mTable, contiene la
sentencia )NL necesaria para crear la base de datos en caso de ser la primera
ejecucin de ContactMap"
2,. Como crear una base de datos en android
'omo !a se (a mencionado, la variable mTable contiene la instruccin en )NL
necesaria para crear la base de datos" #sta implica una Bnica tabla donde se almacena
nBmero de telfono, latitud, longitud ! fec(a de actualizacin de cada contacto para el
que se (a obtenido alguna vez informacin desde el servidor" )e puede comprobar que
su estructura, mostrada a continuacin, es igual a la base de datos en 7!)NL residente
en el servidor"
pu!lic class FriendDataBase {
// Sentencia de creacin de la BD
private String mTable =
"CREATE TABLE IF NOT EXISTS friend " +
"(number INTEGER PRIMARY KEY, " +
"latitude REAL NOT NULL, " +
"longitude REAL NOT NULL, " +
"date TEXT NOT NULL)";
}
'uando se llama al constructor de la clase, lo primero que se (ace es abrir la base de
datos, de nombre W'ontact7apF*X, utilizando para ello el contexto de la aplicacin !
el mtodo openOrCreateDatabase()" 'omo es de suponer, en caso de no existir la
base de datos con el nombre indicado, dic(o mtodo la crea"
& continuacin, !a se dispone en la variable mDataBase de una controlador con el que
manejar la base de datos" #l siguiente paso es ejecutar el script )NL contenido en la
variable mTable" &s6, si la base de datos (a tenido que ser creada, se crear tambin la
tabla necesaria" #n caso de existir, la sentencia )NL no produce ningBn efecto" /ara
lanzar la sentencia se utiliza el mtodo execSQL() de la clase SQLiteDatabase"
pu!lic class FriendDataBase {
pu!lic FriendDataBase(Context ctx){
//apertura o creacin de la base de datos
t&is.mDataBase = ctx.openOrCreateDatabase("ContactMapBD",0,null)
//creacin de la tabla
t&is.mDataBase.execSQL(mTable);
}
}
22. 6nterfa* de Lsuario
XML
)in embargo, quizs la ma!or utilidad de estas declaraciones externas al cdigo resida
en la posibilidad de de8nir, de nuevo a travs de documentos 07L, interfaces de
usuario completas" *entro de la carpeta Wfresfla!outX pueden de8nirse cuantos
documentos 07L se desee, cada uno de ellos representando una determinada interfaz
que se quiera implementar, o incluso diferentes versiones de la misma para segBn qu
casos"
/ara la interfaz de usuario que debe mostrarse con la clase SMSWriter se utilizan
estas declaraciones externas, ubicadas en el 8c(ero de nombre Wsms"xmlX" )abemos
que (emos de utilizar los siguientes elementos del paquete android.widget que
contiene numerosas clases para construir interfaces de usuario3
/ara las etiquetas textuales, la clase TextView"
/ara las cajas de texto, la clase EditText"
/ara los botones, la clase Button"
'ada una de estas clases, !a sean instanciadas desde un documento 07L externo o en
el cdigo fuente de forma tradicional, tienen una serie de atributos que (an de ser
con8gurados ! que matizan su aspecto, colocacin o comportamiento dentro de la
interfaz"
Vie"s
#n &ndroid, las interfaces de usuario estn formadas por una jerarqu6a de clases
llamadas iews 2vistas5" 1na vista o iew representa cualquier elemento que se pueda
dibujar en pantalla, como un botn, una animacin, una etiqueta de texto, etc"
'ontroles o widgets de la interfaz de usuario" #lemento bsico de la interfaz que
permite la interaccin con el usuario"
1na vista es un rea rectangular en la pantalla que gestiona el tamaCo, el dibujado, el
cambio de foco ! los gestos del rea que representan La clase android"view"iew sirve
de clase Fase para todos los WwidgetsX istas disponibles3 Textiew, #ditText, Futton,
OadioFutton, '(ec:box, *ate/ic:er Time/ic:er, )pinner
Vie"s)rou$s
1na vista especial que contiene otras vistas (ijas" iewGroup es la clase base los
la!outs ! vistas contenedoras" #sta clase tambin de8ne la clase
iewGroup"La!out/arams"
La!outs3 &bsoluteLa!out, TableLa!out, LinearLa!out, OelativeLa!out,Y
iewGroups3 *ate/ic:er, Galler!, Gridiew Listiew, )crolliew, )pinner, Tab,idget """
Las vistas se organizan en estructuras de rbol cu!a ra6z es un iewGroup
set'ontentiew25 permite aCadir una vistas a una actividad"
La plataforma &ndroid ofrece dos mtodos para diseCar la interfaz3
procedural 2cdigo5
declarativa 207L5
Ada$ter Vie"s
/ara poder interaccionar entre el cdigo de la aplicacin ! los elementos de la 1. se
precisa de una subclase llamada AdapterView. #stos objetos, una vez instanciados en
el cdigo, pueden realizar dos tipos de tareas3
Oellenar la pantalla con datos"
&tender a las selecciones de los usuarios
28. H1$li'ue 'ue Gace el siguiente $rogramaB
package co$.pruebas.productos;
i$port android.app.*ctivit#;
i$port android.database.+ursor;
i$port android.database.s,lite.-./ite0atabase;
i$port android.os.1undle;
i$port android.view.2enu;
i$port android.view.2enu3te$;
i$port android.view.4iew;
i$port android.widget.1utton;
i$port android.widget.5et4iew;
public class productos extends *ctivit# {
Button boton&listado;

67verride
public void on+reate81undle saved3nstance-tate9 {
super.on+reate8saved3nstance-tate9;
set+ontent4iew8R.la#out.$ain9;

boton&listado = 8Button9 find4iew1#3d8R.id.blistado9;
boton&listado.set7n+lick/istener8new +lick/istener899;


}
class +lick/istener implements Button.7n+lick/istener{
public void on+lick8View v9
{
if8v == boton&listado9{
listado89;
}
}
}

private void listado89{
set+ontent4iew8R.la#out.listado9;

final String 10&:721R; = <10=roductos<;
final String 10&5*1/* = <productos<;
-./ite0atabase $#01 = null;

$#01 = this.open7r+reate0atabase810&:721R;> (> null9;
//myDB.execSQL("DROP TABLE " + BD_TABLA + ";");

$#01.eec-./8<+R;*5; 5*1/; 3? :75 ;@3-5- < A 10&5*1/* A < 8no$bre 4*R+B*R> tienda
4*R+B*R9;<9;

$#01.eec-./8<3:-;R5 3:57 < A 10&5*1/* A < 8no$bre> tienda9 4*/C;- 8DcafeD>
Dcafes)opD9;<9;
$#01.eec-./8<3:-;R5 3:57 < A 10&5*1/* A < 8no$bre> tienda9 4*/C;- 8Dca$isaD>
Ds$artD9;<9;
$#01.eec-./8<3:-;R5 3:57 < A 10&5*1/* A < 8no$bre> tienda9 4*/C;- 8DcuadernoD>
DcalaD9;<9;

StringEF colu$ns = {<no$bre<><tienda<};
Cursor c = $#01.,uer#810&5*1/*> colu$ns> null> null> null> null> <no$bre *-+<>
null9;

if 8c G= null9 {
int colu$na:o$bre3ndice = c.get+olu$n3nde7r5)row8<no$bre<9;
int colu$na5ienda3ndice = c.get+olu$n3nde7r5)row8<tienda<9;
5et4iew tet = new 5et4iew8this9;
int i = (;
w)ile 8c.$ove5o:et899{
String valor+olu$na:o$bre = c.get-tring8colu$na:o$bre3ndice9;
String valor+olu$na5ienda = c.get-tring8colu$na5ienda3ndice9;
tet.set5et8valor+olu$na:o$bre A < 8< A valor+olu$na5ienda A <9<9;
set+ontent4iew8tet9;
iAA;
}

}
if 8$#01 G= null9
$#01.close89;
}
'rea o abre una base de datos llamada WF*/roductosX, en la cual crea si no existe una
tabla <productos< con dos campos WnombreX ! WtiendaX, luego se agregan tres
registros a la tabla, para 8nal mente mostrarlos en una lista en orden del campo
WnombreX"

S-ar putea să vă placă și