Está en la página 1de 14

el gran |ibro de

El gran libro de Android


Jess Toms Girons

El gran libro de Android


Jess Toms Girons

AAnaomega

marcombo

ediciones

tcnicas

Datos catalogrficos
Toms, Jess
El gran

librodeAff

Primera Edicio
Alfaomega Grupo Edimq SJL

&

CY-, Mxico

ISBN:9lMl-lIf-Z3
Formato: 17

x23crlt

@inas:3u10

El gran librc deAndroid


Jess Toms Girons

ISBN: 978-84-267-1732-0, odicin en espaol prblicada pm MARCOMBO, S.A.,


Deechos reservados @ MARCOMBO, S.A.

Barcdm,

nTt

Primera edicin: Alfaomega Grupo Editor, Mxico, junio 20l l


Primera reimpresin: Alfaomega Grupo Editor, Mxico, noviembre 201I

20U Alfaomega Grupo Editor, S.A. de C.V.


Pitgoras I139, Col. Del Valle,03100, Mxico D.F.

Miembro de la Cmara Nacional de la lndustria Blitorial Mexicana


Registro No. 2317
Pg. Web: http://www.alfaomega.com.mx

E-mail : atencionalcliente@alfaomega.com.nu

ISBN: 978-607 -7 07 -226-3


Derechos eseryados:

y los derechos de publicacin en lengua


espaola han sido legalmente transferidos al editor. Prohibida su reproduccin parcial o total
por cualquier medio sin permiso por escrito del propietario de los derechos del copyright.
Esta obra cs propiedad intelectual de su autor

Nota importante:
La infonnacin contenida en esta obra tiene un fin exclusivamente didctico y, por lo tanto,
no est previsto su aprovechamiento a nivel profesional o industrial. Las indicaciones
tcnicas y programas incluidos, han sido elaborados con gran cuidado por el autor y
reproducidos bajo estrictas nonnas de control. ALFAOMEGA GRLIPO EDffOR, S.A. de
C.V. no ser jurdicamente responsable por: errores u omisiones; daos y perjuicios que se
pudieran atribuir al uso de la informacin comprendida en este libro, ni por la utilizacin
indebida que pudiera drsele.

Impreso en Mxico. Printed in Mexico.


Empresas del grupo:
Mxico: Alfmmega Grupo Edior, S.A. de C.V. - Pitgoras 1139, Col. Del Valle, Mxico, D.F.
Tel.: (52--55) 5575-5022-Fur: (52-55) 5575-2420
Sin costo:01-800420-4396
E-mail : atencionalcliente@alfaomega.com.mx

lUn.

Colombia: Alfaomega Colombiana S.A.


Tel-:

C.P.03100.

Canera 15 No. 64 A 29, Bogot, Colombia,

(57-l) 2lffil22-Fax: (57-l) 6068648 - E-mail: ctiente@alfaomegacom.mx

Chile: Alfaomega Grupo Editor, S.A. - Dr. t a Sierra 1437, Providencia, Santiago, Chile
Tel.: (56-2) 235-4248 -Fax (56-2) 235-5786 - E-mait: agechile@alfaomega.cl
Argentina: Alfaonrega Grupo EditorArgentino. S.A. - Paraguay 1307 PB. of. 11, c.P. 1057. Buenos Aires,
Argentin4 -Tel./Fax: (54-ll)4811-0887y48117183-E-mail: venras@alfaomegaeditor.com.ar

Para Bea, con amor y gratitud

lndice general
r

ilrilriltil tilffiil llil llil ilil il|il ilil ffi

*250007747*

ll

Lista de acrnimos

caprulo

t.

15

Visin generaly entorno de

desarro||o................

1.1. Qu hace Android especial?....


1.2. Los or9enes.................
1.3. Comparativa con otras plataformas
1.4. Arquitectura de Android..

......18
....................19
....................19
...............-..22

Linux..........
1.4.2. Runtime de Android
1.4.3. Libreras nativas
1.4.4. Entorno de aplicacin
1.4.5. Aplicaciones.......
1.4.'1. El ncleo

1.5.

lnstalacin del entorno de

.................22
....................23
......23
.................24
......24

desanol1o................

1.5.1. lnstalacin de la mquina virtual Java

.......17

.....................24

...........

..................25

.5.2. lnstalacin de Eclipse.......

..........25

1.5.3. lnstalar Android SDK de Google

...................26

1.5.4. lnstalacin del plug-in Android para Eclipse (ADT).............................31

programa
........................33
.6.1. Las plataformas de desanollo ................
.......33
l.6.l.l.Android 1.0 Nivel de API 1 (septiembre 2008).
........34
l.6.l.2.Android 1.1 Nivel de API 2 (febrero 2009)......
.........34

1.6.
1

Creacin de un primer

l.6.l.3.Android 1.5 Nivel de API 3 (abril 2009, Cupcake)......................34


l.6.l.4.Android 1.6 Nivel de API 4 (diciembre 2009, Donut)..................34
l.6.l.5.Android 2.0 Nivel de API 5 (octubre 2009, Eclair)......................34
l.6.l.6.Android 2.1 Nivel de APt 7 (enero 2010, Ecbir)..

. . . .........35

l.6.l.7.Android2.2 Nivel de API S (mayo 2010, Froyo) .........................3S


l.6.l.8.Android 2.3 Nivel de API 9 (diciembre 2010, Gingerbread)........36
l.6.l.9.Android 3.0 Nivel de API L1 (febrero 2011, Honeycomb)...........36

1.6.2. Eleccin de la plataforma de desarrollo


1.6.3. Creacin del

proyecto.....

...............

............37
............39

Elgran libro de Android


1 .7

Ejecucin del

programa....................................

1.7.1. Ejecucin en elemulador

...........42

terminal
1.8. Elementos de un proyecto Android
1.9. Aspectos clave en Android......
1.9.1. Vista (View).........
1.9.2. Actividad (Activity)
1.9.3. lntento (lntent)
1.9.4. Servicio (Servrce).... ..........
1.7.2. Ejecucin en un

1.9.5. Proveedores de Contenido (Content


1.10. Documentacin

............43
.....................4S
.........41
........................47
......................47
.........47
......47

Providerl

yApiDemos

1.10.1.Donde encontrar documentacin

.-....--...-..........42

................47
............48

..............

.......................48

ApiDemos
.............48
CAPTULO 2. Diseo de la interfaz de usuario
..............S1
2.1. Creacin de una interfaz de usuario por cdigo
....................S1
2.2. Creacin de una interfaz de usuario usando XML...........
......52
2.2.1. Edicin visualde las vistas..........
..................Ss
2.2.2. Layoufs..............
......56
2.3. Una aplicacin de ejemplo:Asteroides..
.............61
2.3.1. Usando recursos alternativos
........................63
2.4. lmplementacin de una caja Acerca de............... ..................69
2.4.1. Aplicando un tema...........
...........71
2.5. Aadiendo un men
......72
2.5.1. Los estilos.........
.......74
2.5.2. Aplicando temas
......75
2.6. Aadiendo preferencias
...................7S
2.6.1. Organizando preferencias
..........T8
2.6.2. Como se almacenan los valores de las preferencias
.......79
2.6.3. Accediendo a los valores de las preferencias
..................80
2.7. Depurar
......91
2.7.1. Depurar con Eclipse
...................91
1.10.2.La aplicacin

lndice
2.7

.2.

Depurar con mensajes Log ..............'...................

3.

.82

Android
..............85
3.1. Elementos grficos......
........................................g5
3.1.1. Canvas...............
......g5
3.1.2. Paint
......88
3.l.2.l.Definicin de colores.......
....................gg
3.1.3. Path
......89
3.1.4. Drawab1e............
......91
3.1.4. L BitmapDrawable
...............92
3.l.4.2.GradienDrawable
.............94
3.l.4.3.TransitionDrawable ................
.............94
3.l.4.4.ShapeDrawable..
..............9S
3.l.4.5.AnimationDrawable ................
.............96

CAPTULO

3.2.

Grficos en

Creando la actividad principalde

3.2.1. La clase

3.3.
3.4.

Asteroides.................

grfico

........98

Representacin de grficos vectoriales en Asteroides...........................104


lntroduciendo el movimiento en

CAPTULO

4.

Asteroides

......10S

Entradas en Android: teclado, pantalla tctil y sensores.............107

usuario
4.1.1. Escuchador de eventos
4.1.2. Manejadores de eventos
4.2. El teclado...
4.3. La pantalla tctil ...........
4.4. Gesfures....
4.4.1. Creacin de una librera de gestures
4.1.

........97

Manejando eventos de

......107
............108
..........109
...........,......110
..................111
..................113

..........114

4.4.2. Aadiendo la librera de gestures a nuestra aplicacin.....................116


4.4.3. Aadiendo gesfures a Asteroides............... ...................;11g

sensores.................
4.5.1 . Listar los sensores del dispositivo..
4.5.2. Acceso a los datos delsensor........
4.5.2.t.Obtencin de datos de los sensores

4.5.

Los

.................120
.............122
.............123
....................124

Elqran libro de Android

4.5.3. Utilizacin de los sensores en Asteroies........-.-.. .-.---'-.127

4.6.

lntroduciendo un misilen

Asteroides................'

.-----.---.'-..-..128

aplicacin...
5.1. Ciclo de vida de una aplicacin...............
5.1.1. Qu proceso se elimina?.

CAPTULO

5.

Multimedia y cido de vida de una

....-....131

...'......131

..'....134

5.1.2. Aplicando eventos del ciclo de vida en Asteroides ....'............'..'......135


5.1.3. Guardando el estado de una actividad.'...

...".....'.........'.136

.......'.-..........138
5.2. Utilizando multimedia en Android..
....140
5.3. Reproducir un vdeo con VideoView.............
...'.'.-..'....'---...142
5.4. La clase MediaPlayer.............'....

5.4.1. Reproduccin de audio de fondo incorporado como un recurso ......143

paso....'...... ....'...'..........145
......153
CAPTULO 6. Seguridad y posicionamiento..........'
...................153
6.1. Seguridad en Android..
'-......'---154
6.1.1. Usuario Linux y acceso a ficheros...
.........155
6.1.2. Elesquema de permisos en Android..
6.l.2.l.Creando tus propios permisos
'-..--....'|'57
6'2' Localizacin
""""""""'161
...........167
6.2.1. Emulacin del GPS con Eclipse.......
...'.168
6.3. Google Maps..........
.....'..........'.168
6.3.1. Obtencin de una clave Google Maps .........
..........170
6.3.2. Un programa de ejemplo
-.--...175
6.4. Fragmentando los asteroides..
.'-.'-'-....177
CAPTULO 7. Almacenamiento de datos.........
....178
7.1. Aadiendo lista de puntuaciones en Android
....181
7.2. Comunicacin entre actividades
.-.-.....'..."................'..'.183
7.3. Accediendo a ficheros...
.....183
7.3.'1. Sistema interno de ficheros.
5.5.

Un reproductor multimedia pas a

.3.2. Almacenando puntuaciones en el sbtema de ficheros intemo.........184

. 7.3.3. La tarjeta
10

SD..............

....'......'...185

fndice

7.3.4. Acceder a un fichero de los recursos.....

7.4.

Trabajando con

XML

.....1g6
......................196

SAX...........
7.4.2. Procesando XML con DOM...........
7.5. Bases de datos.....
7.4.'1. Pocesando XML con

...............192
..............194
.......199

7.5.1. Utilizando una base de datos para guardar puntuaciones................1g9

ContentProvider............
......201
7.6.1. Conceptos bsicos .................
.....................202
7.6.1.1.E1 modelo de datos.....
....2O2
7.6.1.2.Las URI ............
..............202
7.6.2. Acceder a la informacin de un ContentProvider... ........203

7.6.

Utilizando la clase

7.6.2.l.LeerinformacindeunContentProvider
7.6.2.2.Escribir informacin en un
7

.6.2.3.Borrar y mod

ifi

.............204

ContentProvider

........208

car elementos de un ContentProvider .............209

7.6.3. Creacin de un ContentProvider

.................210

7.6.3. l. Defi nir la estructura de almacenamiento del ContentProvider2

7.6.3.2.Extendiendo la clase

ContentProvider.............

....211

7.6.3.3.Declarar el ContentProvider en AndroidManifest.xml .............216

Asteroides.. ,.....218
CAPTULO 8. lnternet: sockefs, HTTP y servicios web............
.......221
8.1. Comunicaciones en lnternet mediante sockefs
...................221
8.1.1. La arquitectura cliente/servidor.............
......222
8.1.2. Qu es un socken................
....222
8.l.2.l.Sockefs sfream (TCP).........
..............229
8.l.2.2.Sockets datagram (UDP)
..................229
8.1.3. Un ejemplo de un cliente / servidor de ECHO....
............229
7.6.4. Acceso a PuntuacionesProvider desde

8.1.4. Almacenando las puntuaciones en un servidor por sockefs .............226

HTTP......
...............;... .....229
8.2.1. El protocolo HTTP.........
...........229
8.2.l.l.Versin 1.0 de HTTP.....
....................230
8.2.l.2.Versin 1.1 de HTTP....
.....................222

8.2.

La web y el protocolo

11

Elgran libro de Android

Android
8.3. Servicios web............
8.3.1. Altemativas en los servicios web............
8.3.1.l.Servicios web basados en SOAP
8.3.1.2.Servicios web basados en REST....
8.3.2. Acceso a servicios web de terceros
8.2.2. Utilizando HTTP desde

..................232
.....................239

.....238
.....239
.....................240
............241

8.3.3. Diseo e implantacin de nuestro servicios web..............................243


8.3.3.l.lnstalacin del servidor de servicios web................................244
8.3.3.2.Creacin un servicio web en

Eclipse

...................246

S.3.3.3.ExplorandoelserviciowebdesdeEclipse.......
8.3.3.4.Explorando el servicio web desde

HTML.........

3.3.3.5.UtilizandoelserviciowebdesdeAndroid

....255

............257

notificaciones.............
..........263
9.1. lntroduccin a los servicios en Android................ ................263
9.1.1. Ciclo de vida de un servicio................
.........264
9.1.2. Permisos-...........
....266
9.2. Un servicio para ejecucin en segundo plano.
....................267
9.3. Las notificaciones de la bana de estado...
........271

CAPTULO

9.

....250

Servicios y

9.3.1. Configurando tipos de avisos en las notificaciones................. ..........273


9.3.l.l.Asociar un sonido

vibracin............,.
9.3.1.3.Aadiendo parpadeo de LED............

9.3.1.2.Aadiendo

9.4.

...........274
............274
...................274

Un servicio como mecanismo de comunicacin entre aplicaciones .......275

9.4.1. Crear la interfaz en AIDL

..........276

9.4.2. lmplementar la interfaz

.............277

9.4.3. Publicar la interfaz en un servicio................ ...................278


9.4.4. Llamar a una interfaz remoto........
...............279
CAPTULO 10. Grficos 3D con OpenGL.....

OpenGL
ES

10.1. lntroduccin a
10.1.1.OpenGL

'|2

..................283

...........2U

lndice
10.2. Estructura delcdigo en

OpenGL..........:........

.....................285

ES..............
...................291
10.4. Aadiendo un array de colores
......293
10.5. Representando un cubo......
...........29s
10.6. Transformaciones de coordenadas.............
......297
10.6.1.Transformando elmodelo.......
.....................298
10.6.2.Definiendo el punto de vista...........
.............300
10.3. Primitivas en OpenGL

l0.6.3.Manipulandolasmatricesdetransformacin..........
10.6.4.La

proyeccin

'10.6.5.Ejemplo: rotacin usando la pantalla

.......303
........305

tcti|...........

lluminacin..........
10.7.1.Vectores norma|es.................
10.7.2.Situando las 1uces...........
10.7.3.Definiendo materiales............
10.8. Aplicando texturas
10.8.1.Mapeando texturas......
10.8.2.Cargando y configurando texturas

10.7.

..........309
........310

......................310
..........314
......................315
,......316
.............318

..............322
'10.8.3.Cambiando los parmetros de cada superficie.................................323

Publicaraplicaciones
11.1. Preparar y testear tu aplicacin

CAPTULO 11.

..........325

.....325

11.1.1.Preparar la aplicacin para cualquier tipo de dispositivo..................325

aplicacin..............
11.2. Crear un certificado digital y firmar la aplicacin
11.3. Publicar la aplicacin.................
11.3.'t.Publicar en lnternet.......
1.3.2.Publicar en Android Market
11.4. Asteroides: detectar victoria y derrota.....
1

1.1 .2.Testear la

......................328
.................328

.....332
............332
.....................332
..........338

13

Lista de acrnimos
AIDL

Android lnterface Definition Language

API

Ap pl i cation P rog ra m m i n g I nte rface

AVD

Android Virtuat Device

DOM

Modelo de Objetos del Documento

DTD

Document Type Definition

FTP

File Transfer Protocol

GPS

Global Positioni ng Sysfem

HTTP

H ype fte xt Tra n sfe r P rotocol

JDK

Java Development Kit

JRE

Java Runtime Environment

JSON

J avaScript

JVM

Javd Virtual Machine

MIME

Multipurpose lnternet Mail Extensions

NDK

Native Development Kit

OpenGL

Open Graphic Library

PCM

Pulse-Code Modulation

RAM

Random Access Memory

REST

REpre se ntatio

RPC

Remote Procedure Calls

SAX

Simple

SDK

Software Developers Kit

SMS

Shorf Message Seruice

SOA

Se ru ice-Orie

SOAP

Simple Object Access Profocol

SQL

Structured Query Language

TCP

Iransmissio n Control Protocol

UI

User lnterface

URL

Universal Resource Locator

Object Notation

al State

Tra

sfer

APlforXML

nted Arch itectu re

15

El gran librc de Android

16

URI
USB
W3C
WSDL

Uniform Resouroe ldenfifrer

WVV1IV

World Wide Web

XML

Ertensible Markup Language

Universal Senal Bus


Wottd Wde Web Consrtium

Web Seruices Descrption Language

También podría gustarte