Vous êtes sur la page 1sur 20

Google

Aprenda a criar aplicaes para dispositivos mveis


com o Android SDK

2 Edio
Ricardo R. Lecheta

Novatec

Sumrio

Agradecimentos..................................................................................................................15
Sobre o autor......................................................................................................................16
Prefcio..............................................................................................................................17
Captulo 1 Introduo ao Android......................................................................................19
1.1 Introduo.............................................................................................................. 19
1.2 Open Handset Alliance e o Android........................................................................ 21
1.3 Conhecendo um pouco mais sobre o Android......................................................... 22
1.4 Sistema operacional Linux...................................................................................... 23
1.5 Mquina virtual Dalvik.......................................................................................... 24
1.6 Cdigo aberto e livre.............................................................................................. 24
1.7 Android Developer Challenge................................................................................. 25
1.8 Android Market..................................................................................................... 25
1.9 T-Mobile G1.......................................................................................................... 27
1.10 Google Nexus One................................................................................................28
1.11 Desenvolvimento de aplicaes com o Eclipse e Java...............................................28

Captulo 2 Configurao do ambiente................................................................................30


2.1 Android SDK..........................................................................................................30
2.2 Requisitos de software e sistema..............................................................................31
2.3 Instalao do SDK...................................................................................................31
2.4 Plataforma (verso do Android).............................................................................. 32
2.5 Instalando uma plataforma no SDK........................................................................ 33
2.6 Configurao virtual de um celular Android (AVD).................................................38
2.7 Criando uma configurao virtual (AVD)................................................................40
2.8 Emulador do Android............................................................................................42
2.9 Instalando uma aplicao no emulador...................................................................44
2.10 Instalao do plug-in para o Eclipse.......................................................................46
2.11 Configurao das preferncias do Eclipse............................................................... 49
2.12 Criao da primeira aplicao Android no Eclipse................................................. 49
2.13 Execuo da aplicao no Eclipse.......................................................................... 52
2.14 Compreenso dos arquivos gerados no projeto.......................................................54
2.15 Aplicaes na tela principal (Home).......................................................................60
2.16 Visualizao das aplicaes instaladas.................................................................... 62
2.17 Alterando a resoluo do emulador....................................................................... 65
7

Google Android

2.18 Perspectiva DDMS do Eclipse................................................................................66


2.19 Instalao do exemplo ApiDemos do SDK............................................................. 67
2.20 Como fazer o download dos exemplos do livro...................................................... 69
2.21 Resumo das configuraes necessrias................................................................... 69

Captulo 3 Conceitos bsicos do Android............................................................................71


3.1 Activity, View e o mtodo setContentView(view)...................................................... 71
3.2 A classe R............................................................................................................... 72
3.3 Arquivo AndroidManifest.xml................................................................................ 74
3.4 Criao do projeto Android para este captulo......................................................... 76
3.5 Criao da interface visual em XML novo exemplo............................................... 76
3.6 Criao da interface visual com a API Java...............................................................82
3.7 Acesso aos elementos da tela o mtodo findViewById(id)......................................83
3.8 Tratamento de eventos............................................................................................86
3.9 LogCat onde est o System.out.println()?.............................................................89

Captulo 4 Activity............................................................................................................93
4.1 Activity.................................................................................................................. 93
4.2 Ciclo de vida de uma activity (atividade).................................................................94
4.3 Exemplo de aplicao sobre o ciclo de vida............................................................. 97
4.4 Navegao entre telas e inicializao de uma nova activity....................................... 101
4.5 Passagem de parmetros para a prxima tela......................................................... 108
4.6 Atalho para passar parmetros para a prxima tela.................................................110
4.7 ListActivity exibio de uma lista de itens na tela................................................. 111
4.8 ArrayAdapter preenchimento da lista com um array de strings . .......................... 112
4.9 Construo de um menu para abrir as telas da aplicao........................................ 114
4.10 Encerramento de uma activity o mtodo finish()................................................116
4.11 SimpleCursorAdapter Exibio dos contatos da agenda em uma lista.................. 117
4.12 SimpleAdapter exibio de valores fixos em uma lista........................................ 122
4.13 SimpleAdapter uso de um arquivo XML customizado.........................................124
4.14 Criao de um ListAdapter customizado com imagens......................................... 126
4.15 MapActivity........................................................................................................ 130

Captulo 5 Intent............................................................................................................ 135


5.1 Intent envio de uma mensagem ao Android..........................................................135
5.2 Navegao entre telas e envio de parmetros.......................................................... 136
5.3 Exemplos de Intent nativas do Android..................................................................137
5.4 Abrindo o browser.................................................................................................137
5.5 Fazer uma ligao para um nmero de telefone.......................................................143
5.6 Visualizao de um contato da agenda.................................................................. 144
5.7 Visualizao de todos os contatos cadastrados no celular....................................... 146
5.8 Retornando resultados de um Intent startActivityForResult(...).............................147
5.9 Como retornar resultados de um activity................................................................152
5.10 Qual mtodo utilizar? startActivity(...) ou startActivityForResult(...) ?................... 156
5.11 Outros exemplos de como chamar aplicaes nativas............................................ 158
5.12 Intent ento isso tudo o que ela faz?............................................................... 159

Sumrio

Captulo 6 Interface grfica gerenciadores de layout..................................................... 162


6.1 View..................................................................................................................... 162
6.2 ViewGroup a classe-me de todos os gerenciadores de layouts............................. 163
6.3 FrameLayout....................................................................................................... 165
6.4 LinearLayout....................................................................................................... 169
6.5 LinearLayout controle do alinhamento layout_gravity......................................172
6.6 LinearLayout controle do peso e relevncia de cada componente.......................173
6.7 TableLayout uso de uma tabela com linhas e colunas...........................................176
6.8 TableLayout e shrinkColumns contrao de colunas........................................... 177
6.9 TableLayout e strechColumns expanso de colunas..............................................178
6.10 TableLayout criao de um formulrio.............................................................. 180
6.11 RelativeLayout...................................................................................................... 181
6.12 AbsoluteLayout................................................................................................... 184
6.13 Uso de mais de um layout para criar telas complexas............................................ 186
6.14 Criao de um layout pela API LinearLayout..................................................... 188
6.15 Criao de um layout pela API TableLayout...................................................... 190
6.16 Outras subclasses de ViewGroup.......................................................................... 191
6.17 ScrollView.......................................................................................................... 192
6.18 GridView............................................................................................................ 194
6.19 Gallery............................................................................................................... 198
6.20 ImageSwitcher.................................................................................................... 200
6.21 WebView exibio de uma pgina web em sua aplicao.................................... 202
6.22 TabHost............................................................................................................. 204

Captulo 7 Interface grfica View.................................................................................. 208


7.1 Definio de recursos de texto, cores e imagens....................................................... 208
7.2 Arquivo XML com as mensagens da aplicao....................................................... 209
7.3 Arquivo XML com as cores....................................................................................210
7.4 Arquivo XML para criar um estilo css..................................................................... 211
7.5 Exemplo completo com estilos...............................................................................212
7.6 Temas...................................................................................................................214
7.7 View a classe responsvel por desenhar elementos na tela......................................215
7.8 Definio das dimenses.......................................................................................217
7.9 TextView...............................................................................................................217
7.10 EditText Campo de texto para digitar informaes..............................................219
7.11 AutoCompleteTextView....................................................................................... 220
7.12 Button e ImageButton......................................................................................... 223
7.13 CheckBox e ToggleButton.................................................................................... 225
7.14 RadioButton....................................................................................................... 227
7.15 Spinner................................................................................................................ 231
7.16 ProgressDialog criao de uma janela de progresso por tempo indeterminado.... 235
7.17 ProgressBar criao de uma barra de progresso.................................................. 238
7.18 Toast exibio de alertas para o usurio..............................................................241
7.19 LayoutInflater transformao de um arquivo XML em um objeto View............... 242
7.20 Criao de um alerta de confirmao.................................................................. 244
7.21 ListView............................................................................................................. 247
7.22 Outros componentes.......................................................................................... 249

10

Google Android

7.23 Adio de menus na aplicao............................................................................. 249


7.24 Trabalhando com submenus............................................................................... 253
7.25 Criao de sua prpria classe View customizada.................................................. 255
7.26 Desenho manual com a classe Canvas................................................................. 259
7.27 Movimentao de um objeto pela tela..................................................................261
7.28 Movimentao de uma imagem pela tela............................................................. 264
7.29 Movimentao de uma imagem pela tela usando TouchScreen . ........................... 269

Captulo 8 Intent Filter.................................................................................................... 272


8.1 Especificao de uma ao para uma Intent........................................................... 272
8.2 Configurao do <intent-filter> para a aplicao principal..................................... 273
8.3 Ao e categoria: como identificar uma Intent....................................................... 274
8.4 Abertura de uma activity usando uma ao........................................................... 275
8.5 Reviso dos conceitos........................................................................................... 277
8.6 Uso de uma categoria customizada....................................................................... 278
8.7 Por que criar uma ao e categoria para uma Intent?.............................................. 280
8.8 Exemplo completo de IntentFilter..........................................................................281
8.9 Chamando uma activity de outra aplicao........................................................... 284
8.10 Substituindo a tela Home.................................................................................... 287
8.11 Substituindo a agenda de contatos.......................................................................288

Captulo 9 BroadcastReceiver.......................................................................................... 290


9.1 Introduo............................................................................................................ 290
9.2 Duas opes para configurar um BroadcastReceiver............................................... 292
9.3 Envio de uma mensagem com o mtodo sendBroadcast(intent).............................. 292
9.4 Projeto de exemplo do BroadcastReceiver............................................................... 293
9.5 Ciclo de vida........................................................................................................ 297
9.6 Execuo de um BroadcastReceiver ao inicializar o sistema operacional.................. 299
9.7 Configurao de uma aplicao para ser iniciada apenas com um BroadcastReceiver.....
301
9.8 Recebimento de uma mensagem SMS com um BroadcastReceiver . ........................ 303
9.9 Uso de um servio para processamento pesado em segundo plano......................... 303
9.10 Abertura de uma tela/activity a partir de um BroadcastReceiver............................ 303
9.11 Interao com o usurio por meio de uma notificao........................................... 304

Captulo 10 Notification.................................................................................................. 305


10.1 Por que usar uma notificao para se comunicar com o usurio............................ 305
10.2 Um exemplo de notificao................................................................................. 306
10.3 Construo de um exemplo prtico..................................................................... 309
10.4 Entendendo o exemplo........................................................................................313
10.5 Outras opes ao disparar uma Intent de uma notificao..................................... 314
10.6 Observaes........................................................................................................315

Captulo 11 Service......................................................................................................... 317


11.1 Por que utilizar a classe Service............................................................................. 317
11.2 As duas maneiras de iniciar um servio em segundo plano....................................319
11.3 Inicializao de um servio com o mtodo startService(intent)...............................319

Sumrio

11

11.4 Exemplo inicializao de um servio com o mtodo startService(intent)............. 320


11.5 Deixar o servio executando depois sair de uma tela............................................ 326
11.6 Inicializao de um servio como mtodo bindService(intent,con,flags)................ 327
11.7 Qual mtodo utilizar para iniciar um servio?...................................................... 332
11.8 Servio executando em um processo diferente da sua aplicao............................. 333
11.9 Criao de uma interface AIDL............................................................................ 334
11.10 Exemplo completo com servio e notificao...................................................... 337
11.11 Um servio em execuo contnua no consome muito processamento?............... 344

Captulo 12 AlarmManager............................................................................................. 345


12.1 Porque utilizar um alarme (agendar uma tarefa)................................................... 345
12.2 Mtodo da classe AlarmManager......................................................................... 346
12.3 Criao de um exemplo para agendar um alarme................................................. 346
12.4 Executando um alarme mais de uma vez.............................................................. 350
12.5 Quando utilizar ou no um alarme......................................................................352

Captulo 13 Handler........................................................................................................ 353


13.1 Introduo.......................................................................................................... 353
13.2 Por que utilizar um Handler?.............................................................................. 353
13.3 Envio de uma mensagem..................................................................................... 354
13.4 Tipos dos mtodos sendMessage(mensagem)....................................................... 357
13.5 Execuo de um Runnable com o mtodo postMessage(runnable)....................... 357
13.6 Atualizao da view dentro de uma thread........................................................... 358
13.7 Implementao de um tela Splash Screen para sua aplicao................................. 363
13.8 No utilize o Thread.sleep(ms)!........................................................................... 365

Captulo 14 Banco de dados............................................................................................ 368


14.1 SQLite................................................................................................................368
14.2 Criao do banco de dados com o SQLite Expert Personal................................... 369
14.3 Aplicao para inserir, alterar e excluir carros....................................................... 372
14.4 Abrindo o banco de dados................................................................................... 372
14.5 Insero de registros no banco de dados.............................................................. 373
14.6 Atualizao de registros no banco de dados..........................................................374
14.7 Excluso de registros do banco de dados...............................................................375
14.8 Busca de registros no banco de dados.................................................................. 376
14.9 Juntando as peas............................................................................................... 377
14.10 Construo de uma lista para visualizar os carros cadastrados............................ 383
14.11 Adio de um menu e eventos na tela de lista de carros........................................386
14.12 Criao da tela com o formulrio para inserir e editar carros............................... 389
14.13 Criao da tela com o formulrio para buscar um carro pelo nome..................... 393
14.14 Execuo da aplicao de cadastro..................................................................... 395
14.15 Criao de um banco de dados diretamente com a API....................................... 397
14.16 Outras formas de armazenamento de dados........................................................401
14.17 Lendo e salvando arquivos..................................................................................401
14.18 Criao do projeto de arquivos........................................................................... 402
14.19 Salvando as preferncias do usurio com a classe SharedPreferences..................... 407

12

Google Android

Captulo 15 Content Provider.......................................................................................... 412


15.1 Por que utilizar a classe ContentProvider provedor de contedo...........................412
15.2 URI Immutable URI reference...........................................................................413
15.3 Exemplos de provedores de contedo nativos.....................................................414
15.4 Leitura de informaes.........................................................................................415
15.5 Mtodos da classe Cursor....................................................................................417
15.6 Como ler todos os telefones e a foto de um contato...............................................419
15.7 Relembrando um exemplo de Intent.................................................................... 422
15.8 Entendendo a sintaxe da Uri: content://authority/path/id.................................... 423
15.9 A classe ContentProvider..................................................................................... 424
15.10 Implementao da classe CarroProvider de forma correta.................................... 427
15.11 Classe esttica Carros..........................................................................................431
15.12 Exemplo para testar a classe CarroProvider......................................................... 432
15.13 possvel usar a classe CarroProvider em outra aplicao?.................................. 437
15.14 Uso de uma Intent com a ao ACTION_VIEW..................................................440
15.15 possvel criar o mesmo exemplo para cadastrar contatos na agenda?................. 445

Captulo 16 Mapas e GPS................................................................................................. 446


16.1 Conceitos bsicos................................................................................................446
16.2 Obteno de uma chave para o acessar o Google Maps........................................ 447
16.3 Criao do primeiro mapa no Android................................................................ 450
16.4 Criao de um mapa com um arquivo de layout XML.......................................... 452
16.5 Informando as coordenadas com a classe GeoPoint.............................................. 454
16.6 Configurar o mapa para o modo Rua ou Satlite.................................................. 456
16.7 A classe MapController....................................................................................... 459
16.8 Centralizao do mapa em uma coordenada........................................................ 459
16.9 Controle de zoom................................................................................................461
16.10 Controle do zoom............................................................................................. 462
16.11 Desenhando um overlay..................................................................................... 463
16.12 Criao de um overlay com uma imagem...........................................................466
16.13 Juntando as partes............................................................................................. 469
16.14 Movimentao automtica do mapa................................................................... 472
16.15 GPS Desenvolvimento de aplicaes de localizao.......................................... 476
16.16 Simulao da localizao GPS do emulador........................................................ 480
16.17 Uso de um trajeto salvo pelo Google Earth..........................................................481
16.18 Criao de seu prprio arquivo kml com o Google Earth.................................... 483
16.19 Uso de um arquivo GPX.................................................................................... 485
16.20 Onde voc est localizado no mapa?.................................................................. 485
16.21 Controle do clique sobre um overlay.................................................................. 489
16.22 A classe ItemizedOverlay....................................................................................491

Captulo 17 Http, sockets e Web Services......................................................................... 495


17.1 Comunicao com um servidor............................................................................ 495
17.2 Uso de sockets.................................................................................................... 496
17.3 Criao do projeto socket no servidor.................................................................. 496
17.4 Criao do projeto-cliente no Android................................................................. 500
17.5 Reviso dos conceitos.......................................................................................... 505

Sumrio

13

17.6 Comunicao com o servidor por meio do protocolo HTTP................................. 505


17.7 Criao de um projeto web no Eclipse.................................................................. 505
17.8 Criao de uma aplicao para fazer o download de um arquivo-texto...................510
17.9 Criao de uma aplicao para o download de uma imagem..................................518
17.10 Envio de parmetros por POST............................................................................ 521
17.11 Exemplo buscando carros do servidor................................................................. 526
17.12 Jakarta Commons HttpClient............................................................................ 534
17.13 Acesso a um web service..................................................................................... 538
17.14 Criao do projeto servidor com um Web Service................................................ 539
17.15 Criao de um cliente de web service no Android................................................ 543
17.16 Reviso.............................................................................................................. 548

Captulo 18 SMS.............................................................................................................. 550


18.1 Introduo.......................................................................................................... 550
18.2 Envio de uma mensagem SMS por telnet.............................................................. 551
18.3 Envio de uma mensagem SMS pelo Eclipse...........................................................552
18.4 Criao do projeto de exemplo............................................................................ 553
18.5 Classe Sms que envia e recebe uma mensagem SMS............................................. 557
18.6 Mtodo enviarSms(contexto,destino,mensagem)................................................... 558
18.7 Mtodo receberMensagem(intent)....................................................................... 559
18.8 Execuo do exemplo..........................................................................................561
18.9 Concluso.......................................................................................................... 562

Captulo 19 Multimdia udio, vdeo e cmera.............................................................. 563


19.1 Formatos de udio e vdeo suportados................................................................. 563
19.2 Reproduo de udio com duas linhas de cdigo................................................. 563
19.3 Um segundo exemplo.......................................................................................... 564
19.4 Simulao de um carto de memria (SD-Card)................................................... 565
19.5 Entendendo a classe MediaPlayer........................................................................ 567
19.6 Criao do player Mp3........................................................................................ 569
19.7 Listagem de todas as msicas do carto de memria.............................................574
19.8 Uso de um servio para reproduzir uma msica em segundo plano....................... 577
19.9 Criao de uma aplicao para utilizar o servio de mp3...................................... 580
19.10 Reproduo de vdeos de uma forma simples com o VideoView........................... 586
19.20 Utilizando a cmera.......................................................................................... 587

Captulo 20 Variedades................................................................................................... 592


20.1 Simulao de um SD Card................................................................................... 592
20.2 Uso de um arquivo .jar em sua aplicao............................................................. 593
20.3 ADB (Android Debug Bridge)............................................................................. 594
20.4 Controle da verso de sua aplicao.................................................................... 596
20.5 Informaes sobre a verso do SO ...................................................................... 597
20.6 Obteno de um certificado digital para assinar sua aplicao.............................. 598
20.7 Obteno de uma chave vlida para o Google Maps.............................................600
20.8 Assinando a aplicao para publicar no Android Market...................................... 602
20.9 Publicando no Android Market ..........................................................................604

ndice remissivo................................................................................................................ 605

Google
Aprenda a criar aplicaes para dispositivos mveis
com o Android SDK

2 Edio
Ricardo R. Lecheta

Novatec

captulo 1

Introduo ao Android

1.1 Introduo
O mercado de celulares est crescendo cada vez mais. Estudos mostram que hoje em
dia mais de 3 bilhes de pessoas possuem um aparelho celular, e isso corresponde
a mais ou menos metade da populao mundial.
Hoje em dia os usurios comuns esto procurando cada vez mais celulares com
diversos recursos como cmeras, msicas, bluetooth, tima interface visual, jogos,
GPS, acesso a internet e e-mails, e agora ainda temos a TV digital.
O mercado corporativo tambm est crescendo muito, e diversas empresas esto
buscando incorporar aplicaes mveis a seu dia-a-dia para agilizar seus negcios e
integrar as aplicaes mveis com seus sistemas de back-end. Empresas obviamente
visam lucro e mais lucro, e os celulares e smartphones podem ocupar um importante
espao em um mundo onde a palavra mobilidade est cada vez mais conhecida.
Desta forma aplicaes que executam em um celular podem estar literalmente
conectadas e online, sincronizando informaes diretamente de um servidor confivel da empresa. Hoje em dia diversos bancos oferecem servios aos seus usurios, onde possvel pagar suas contas e visualizar o extrato de sua conta corrente
diretamente de um celular. Pases mais desenvolvidos j permitem que celulares
sejam utilizados em mercados para ler os cdigos de barras dos produtos e realizar
a compra apenas com o celular, como se fosse um carto de crdito. O que todos
precisavam na verdade era uma plataforma poderosa e flexvel para tornar tudo isso
mais vivel e cada vez mais uma realidade para todos.
As empresas e os desenvolvedores buscam uma plataforma moderna e gil para o
desenvolvimento de aplicaes coorporativas para auxiliar em seus negcios e lucros.
19

20

Google Android

J os usurios comuns buscam um celular com um visual elegante e moderno, de


fcil navegao e uma infinidade de recursos. Agora, ser que existe algum para
atender esses dois mundos completamente diferentes?
Para acompanhar essa evoluo da tecnologia e satisfazer os usurios, os fabricantes e operadoras de celulares, as empresas e ns, os desenvolvedores, existe uma
grande corrida estrelada pelas maiores empresas do mundo em tecnologia mvel
para competir por esse nicho do mercado.
O Android a resposta do Google para ocupar esse espao. Consiste em uma
nova plataforma de desenvolvimento para aplicativos mveis, baseada em um sistema
operacional Linux, com diversas aplicaes j instaladas e, ainda, um ambiente de
desenvolvimento bastante poderoso, ousado e flexvel.
O Android causou um grande impacto quando foi anunciado, atraindo a ateno
de muita gente. Podemos dizer que isso aconteceu porque por trs dele est nada
mais nada menos do que o Google, a empresa que est revolucionando a internet.
Entretanto, no apenas o Google que est na jogada, e sim um grupo formado
por empresas lderes do mercado de telefonia como a Motorola, LG, Samsung,
Sony Ericsson e muitas outras. Esse grupo, chamado de Open Handset Alliance
(OHA) foi criado com a inteno de padronizar uma plataforma de cdigo aberto
e livre para celulares, justamente para atender a todas as expectativas e tendncias
do mercado atual.
Existem diversos vdeos interessantes no YouTube que demonstram alguns
recursos do Android, e alguns chegam a impressionar. Os vdeos mostram algumas funcionalidades bsicas como navegao na internet com a tela touch screen,
reconhecimento de cdigo de barras, uma demonstrao do famoso jogo Quake
executando perfeitamente com uma tima resoluo e muito mais.
Um desses vdeos apresenta um dos clssicos recursos da plataforma e, em determinado momento, o apresentador diz algo como: Hum, estou com fome, gosto
de comer sushi, ser que existe algum restaurante japons por aqui? E ele acessa
o Google Maps para buscar os restaurantes mais prximos, sendo que utilizando
GPS possvel saber sua exata localizao e traar a rota para o restaurante mais
prximo desejado. isso: os celulares no so mais apenas usados para atender
ligaes, sendo agora verdadeiras mquinas repletas de tecnologia para voc usufruir.
Este livro foca no desenvolvimento de aplicaes para o Android, utilizando a
linguagem Java e a verso 2.2 do SDK. Em cada captulo, novos conceitos e ideias
sero apresentados, para que voc saia na frente e possa estar preparado para quando
esse mercado explodir.

Captulo 1 Introduo ao Android

21

1.2 Open Handset Alliance e o Android


A Open Handset Alliance (OHA) um grupo formado por gigantes do mercado
de telefonia de celulares liderados pelo Google. Entre alguns integrantes do grupo
esto nomes consagrados como a HTC, LG, Motorola, Samsung, Sony Ericsson,
Toshiba, Sprint Nextel, China Mobile, T-Mobile, ASUS, Intel, Garmin e muito mais.
Quando este livro foi escrito, o grupo era formado por 47 integrantes de peso, e
voc pode verificar a lista completa neste endereo:
http://www.openhandsetalliance.com/oha_members.html

No site da OHA existe uma tima descrio do que seria essa aliana. O texto
est em ingls e vou apenas traduzir uma breve citao aqui. Hoje, existem 1,5 bilho de aparelhos de televiso em uso em todo o mundo e 1 bilho de pessoas tm
acesso internet. No entanto, quase 3 bilhes de pessoas tm um telefone celular,
tornando o aparelho um dos produtos de consumo mais bem-sucedidos do mundo.
Dessa forma, construir um aparelho celular superior melhoraria a vida de inmeras pessoas em todo o mundo. A Open Handset Alliance um grupo formado por
empresas lderes em tecnologia mvel que compartilham essa viso para mudar a
experincia mvel de todos os consumidores [...].
Assim, o objetivo do grupo definir uma plataforma nica e aberta para celulares para deixar os consumidores mais satisfeitos com o produto final. Outro
objetivo principal dessa aliana criar uma plataforma moderna e flexvel para o
desenvolvimento de aplicaes coorporativas. O resultado dessa unio, como voc
j deve saber, foi o nascimento do Android.
O Android a nova plataforma de desenvolvimento para aplicativos mveis
como smarthphones e contm um sistema operacional baseado em Linux, uma
interface visual rica, GPS, diversas aplicaes j instaladas e ainda um ambiente
de desenvolvimento bastante poderoso, inovador e flexvel. Outra boa notcia
que podemos utilizar a consagrada linguagem Java para desenvolver as aplicaes,
usufruindo de todos os recursos a que temos direito.
Todos acabam se beneficiando dessa unio: os fabricantes de celulares, os usurios comuns e, claro, os desenvolvedores de aplicaes.
Os usurios de celulares so extremamente favorecidos com tudo isso. Hoje
em dia, todos querem um celular com um bom visual, de fcil usabilidade, com
tela touch screen, cmera, msicas, jogos, GPS, acesso internet e muito mais, e o
celular est cada vez mais ocupando um espao importante na vida das pessoas. O
Android foi criado justamente pensando em agradar esses usurios, possibilitando
que encontrem todos os recursos esperados em apenas um aparelho. O mundo da

22

Google Android

tecnologia est sempre em evoluo, e a OHA foi criada justamente para manter uma
plataforma-padro onde todas as novas tendncias do mercado estejam englobadas
em uma nica soluo.
Para os fabricantes de celulares, o fato de existir uma plataforma nica e consolidada uma grande vantagem para criar novos aparelhos. A grande vantagem para
eles que a plataforma tambm livre e de cdigo aberto. A licena do Android
flexvel e permite que cada fabricante possa realizar alteraes no cdigo-fonte para
customizar seus produtos, e o melhor de tudo, sem necessidade de compartilhar
essas alteraes com ningum. O Android tambm free, e os fabricantes podem
usar e abusar dele sem precisar pagar por isso.
O fato de o Android ser de cdigo aberto contribui muito para seu aperfeioamento, uma vez que desenvolvedores de todos os lugares do mundo podem contribuir para seu cdigo-fonte, adicionando novas funcionalidades ou simplesmente
corrigindo falhas.
J os desenvolvedores de aplicaes podem desfrutar de uma plataforma de
desenvolvimento moderna com diversos recursos incrveis, com tudo o que h de
mais moderno. Este o tema deste livro: o desenvolvimento de aplicaes com o
Android. E aqui voc vai entender o porqu de toda essa revoluo.

1.3 Conhecendo um pouco mais sobre o Android


Todo celular tem uma tela inicial com alguns cones e um menu, certo? Todo celular
tambm tem uma agenda de contatos e uma tela para fazer a ligao, no ?
Agora, voc j pensou em trocar algumas dessas telas por uma tela customizada
desenvolvida por voc? Com o Android isso possvel. Sua arquitetura muito
flexvel e voc pode integrar aplicaes nativas com sua aplicao, ou at mesmo
substituir qualquer aplicao nativa existente por uma que voc mesmo criou. Creio
que as operadoras ou fabricantes de celulares vo gostar dessa funcionalidade, j
que dessa forma possvel trocar as telas e funcionalidades do celular para fazer
aquele marketing bsico.
possvel integrar aplicaes de uma forma simples, sejam elas desenvolvidas
por voc, sejam aplicaes nativas. Por exemplo, imagine que sua aplicao precise
consultar a agenda de contatos para selecionar determinado amigo, e logo depois
visualizar o endereo dele em um mapa. Bom, que existe a agenda de contatos e
o Google Maps no Android todos j sabem, mas ser que possvel utiliz-los e
integr-los em nossas aplicaes? A resposta sim. Integrao uma das palavraschaves em aplicaes coorporativas, e a arquitetura do Android foi criada justamente
pensando nisso.

Captulo 1 Introduo ao Android

23

O Android tem muitos diferenciais interessantes e uma arquitetura realmente flexvel


focada na integrao de aplicaes. No existe diferena entre uma aplicao nativa
e uma desenvolvida por voc.

Falando em integrao, existe uma classe que o corao do Android, chamada


de Intent, e ela ser explicada no captulo 5. Essa classe nada mais do que uma
mensagem enviada ao sistema operacional informando nossa inteno de realizar
determinada tarefa.
Ento, no sistema operacional do Android, mensagens so disparadas para todos
os lados, identificadas pela classe Intent. Conforme o contedo da mensagem, ela
pode ser interceptada por qualquer aplicao interessada a fim de realizar a tarefa
que for necessria. Por exemplo, se voc deseja abrir uma aplicao nativa como o
browser ou abrir uma nova tela de sua aplicao, a nica coisa que voc precisa fazer
criar esse objeto Intent e configurar o contedo de sua mensagem corretamente
para ser interpretado pelo sistema operacional.
Outro ponto forte do Android que seu sistema operacional baseado no Linux,
e ele mesmo se encarrega de gerenciar a memria e os processos. Isso permite que
diversas aplicaes possam ser executadas ao mesmo tempo, permitindo que aplicaes em segundo plano consigam executar sem que o usurio perceba, enquanto
ele est acessando a internet ou atendendo uma ligao. Esse recurso muito legal
e voc pode tranquilamente agendar uma aplicao para executar em determinada
data e hora, sem atrapalhar a atividade do usurio.
claro que no podemos esquecer os recursos visuais e aquelas funcionalidades
que impressionam o usurio comum. Nesse quesito o Android certamente atende as
expectativas. A navegao de telas por meio da touch screen permite que o usurio
tenha uma tima experincia ao usar o aparelho. Segundo avaliaes sobre o HTC G1,
o primeiro celular Android lanado no mercado, a navegao na internet incrvel.
O Android tambm tem suporte a grficos 3D baseados na especificao 1.0 da
OpenGL ES e, dessa forma, possvel criar jogos com uma qualidade excelente de
resoluo. Voc pode conferir vrias demonstraes de jogos nos vdeos do YouTube.

1.4 Sistema operacional Linux


O sistema operacional do Android foi baseado no kernel 2.6 do Linux, e responsvel por gerenciar a memria, os processos, threads e a segurana dos arquivos e
pastas, alm de redes e drivers.
Cada aplicativo no Android dispara um novo processo no sistema operacional.
Alguns deles podem exibir uma tela para o usurio, e outros podem ficar em execuo

24

Google Android

em segundo plano por tempo indeterminado. Diversos processos e aplicativos podem


ser executados simultaneamente, e o kernel do sistema operacional o responsvel
por realizar todo o controle de memria.
Caso necessrio, o prprio sistema operacional pode decidir encerrar algum
processo para liberar memria e recursos, e talvez at reiniciar o mesmo processo
posteriormente quando a situao estiver controlada.
Toda a segurana do Android baseada na segurana do Linux. No Android cada
aplicao executada em um nico processo e cada processo por sua vez possui
uma thread dedicada. Para cada aplicao instalada no celular criado um usurio
no sistema operacional para ter acesso a sua estrutura de diretrios. Desta forma
nenhum outro usurio pode ter acesso a esta aplicao.

1.5 Mquina virtual Dalvik


Voc j sabe que a linguagem Java utilizada para construir as aplicaes para o
Android. O fato que em seu sistema operacional no existe uma mquina virtual
Java (JVM). Na verdade, o que temos uma mquina virtual chamada Dalvik que
otimizada para execuo em dispositivos mveis.
Ao desenvolver as aplicaes para o Android voc vai utilizar a linguagem Java
e todos os seus recursos normalmente, mas depois que o bytecode (.class) compilado ele convertido para o formato .dex (Dalvik Executable), que representa a
aplicao do Android compilada.
Depois disso, os arquivos .dex e outros recursos como imagens so compactados
em um nico arquivo com a extenso .apk (Android Package File), que representa
a aplicao final, pronta para ser distribuda e instalada.
Ao utilizar o ambiente de desenvolvimento do Eclipse, toda essa compilao e
gerao do arquivo .apk ocorre automaticamente, portanto, no preciso se preocupar com isso.

1.6 Cdigo aberto e livre


O Android a primeira plataforma para aplicaes mveis completamente livre e
de cdigo aberto (open-source), o que representa uma grande vantagem para sua
evoluo, uma vez que diversos programadores do mundo podero contribuir para
melhorar a plataforma.

Captulo 1 Introduo ao Android

25

Para os fabricantes de celulares, isso tambm uma grande vantagem, uma vez
que possvel utilizar o sistema operacional do Android em seus celulares sem ter
que pagar por isso. Alm disso, a licena Apache Software Foundation (ASF) permite
que alteraes sejam efetuadas no cdigo-fonte para criar produtos customizados
sem precisar compartilhar as alteraes com ningum.
Voc pode obter mais informaes e at fazer o download do cdigo-fonte do
Android no seguinte site: http://source.android.com/

1.7 Android Developer Challenge


Para promover o Android o Google comeou investindo pesado e, assim que a
primeira verso do SDK foi lanada, tambm foi anunciado o famoso concurso
Android Developer Challenge (ADC), com mais de U$ 10 milhes em prmios.
O prazo para enviar as aplicaes era 14 de abril de 2008, e o concurso foi dividido
em duas fases. Na primeira fase, as 50 melhores aplicaes recebiam US$ 25.000
e, na segunda, mais 20 das melhores aplicaes seriam selecionadas para receber
US$275.000, e algumas US$ 100.000.
Na primeira etapa as aplicaes foram testadas no prprio emulador do Android,
porque na poca nenhum celular com o Android tinha sido lanado. Isso foi uma
grande sacada do Google para melhorar a plataforma e ajudar a test-la, sendo que
desenvolvedores de todo o mundo estavam interessados em desenvolver as aplicaes
para talvez faturar a bolada. Esse concurso literalmente agitou o mundo todo, e com
isso o Google consegui testar o SDK e consolidar seu produto.
A segunda parte foi anunciada para acontecer somente depois que o primeiro
celular com o Android fosse lanado, e dessa vez as aplicaes seriam testadas em
um aparelho real, e no mais em um emulador.
Quando este livro estava sendo escrito, a primeira parte j tinha terminado e
todos os vencedores podiam ser vistos no endereo seguinte. Temos at um brasileiro
que foi um dos vencedores com a aplicao TeraDesk.
http://code.google.com/intl/pt-BR/android/adc_gallery/

1.8 Android Market


Para auxiliar a distribuio das aplicaes do Android, alm da divulgao de sua
nova plataforma, foi criado o site Android Market.
http://www.android.com/market/

26

Google Android

O objetivo do site fornecer aos desenvolvedores de aplicativos um lugar comum para disponibilizar suas aplicaes. Funciona como o site do YouTube: basta
cadastrar e enviar seu aplicativo. O site tambm conta com o mesmo esquema de
comentrios e classificao que o YouTube contm.
Para publicar uma aplicao o desenvolvedor precisa pagar a taxa de US$ 25 e
concordar com os termos de uso. Depois disso, o aplicativo j pode ser instalado
pelos usurios. Existem aplicativos que so gratuitos, enquanto outros so pagos.
Uma boa notcia para os desenvolvedores que 70% dos lucros com os aplicativos
vendidos sero repassados para quem os construiu.
Para os usurios utilizarem o Android Market muito simples. Basta acessar o
site com o celular e fazer o download do aplicativo desejado. Os comentrios e a
classificao deixada pelos usurios sero utilizados para criar o ranking com os
melhores aplicativos.
A figura 1.1 mostra o usurio selecionando alguma aplicao para ser instalada
pelo Android Market.

Figura 1.1 Seleo de uma aplicao no Android Market.

A figura 1.2 mostra as aplicaes j instaladas e ainda com o sistema de classificao.


Se voc deseja ver na prtica como o Android Market funciona, procure pelos
vdeos no YouTube, que contm timas demonstraes.

Captulo 1 Introduo ao Android

27

Figura 1.2 Aplicaes instaladas pelo Android Market.

1.9 T-Mobile G1
O T-Mobile G1 desenvolvido pela HTC foi o primeiro celular lanado com a plataforma do Android e, como esperado, causou um grande agito no mercado. A notcia
de seu lanamento causou um grande impacto e superou as expectativas de vendas
da HTC, e mesmo antes de seu lanamento j havia sido esgotado todo o estoque
para os pedidos de pr-venda.
Os primeiros celulares HTC G1 (Figura 1.3) comearam a ser vendidos nos Estados Unidos no dia 22 de outubro de 2008 por US$ 179, disponibilizando uma tela
sensvel ao toque, um teclado Qwerty que abre para baixo para facilitar a digitao
e todos os outros recursos que o Android tem a oferecer.
Para maiores detalhes, acesse o site oficial do HTC G1: http://www.androidg1.org/
Se deseja brincar um pouco com o G1, voc pode acessar um emulador on-line
que foi disponibilizado pela HTC neste endereo:
http://tmobile.modeaondemand.com/htc/g1/

Nesse site, ao clicar no menu Emulator voc pode brincar com o emulador do celular
e acessar todas as suas opes, como browser, mapas, agenda de contatos etc. Se
clicar no menu 360 View voc pode literalmente segurar um celular G1 na sua mo e
gir-lo para ter uma ideia de sua aparncia.
Vale pena brincar um pouco com o emulador e assistir aos vdeos no YouTube
sobre o G1, que demonstram as funcionalidades e toda a usabilidade do Android.

28

Google Android

Figura 1.3 Emulador do HTC G1.

1.10 Google Nexus One


Na poca em que este livro estava sendo escrito, o Google tinha recm-lanado seu
celular Nexus One, com Android 2.1 e um processador de 1Ghz, sendo o mais rpido
de todos os smartphones Android j lanados at aquele momento.
Mas o grande triunfo do Android sua plataforma aberta e flexvel, a qual permite
que o sistema operacional inteiro seja customizado. Desta forma vrios fabricantes
de celulares como a Motorola, HTC, Sony Ericsson etc j estavam customizando
seus modelos de celulares Android para a ltima verso. A customizao varia de
fabricante para fabricante. Na HTC a customizao chamada de HTC Sense
e muda totalmente o visual do aparelho, e ainda adiciona diversas aplicaes. A
Motorola chama sua de MotoBlur, e focada em redes sociais. A customizao da
Sony Ericsson conhecida como UX "User eXperience".
Com a grande popularizao do Android, os usurios podero escolher os
modelos que mais lhe agradam e os desenvolvedores podero desfrutar da sua
plataforma de desenvolvimento e criar aplicaes mveis incrveis.

1.11 Desenvolvimento de aplicaes com o Eclipse e Java


Para alegria geral da nao possvel desenvolver uma aplicao para o Android
utilizando a linguagem Java em seu ambiente de desenvolvimento preferido, como
o Eclipse, Netbeans ou IntelliJ IDEA.
O Eclipse o ambiente de desenvolvimento preferido pelo Google, e h um plugin chamado ADT (Android Development Tools) para facilitar o desenvolvimento,

Captulo 1 Introduo ao Android

29

os testes e a compilao do projeto e, portanto, adotaremos o Eclipse para nossos


exemplos.
Utilizando o plug-in ADT possvel executar o emulador do Android diretamente do Eclipse, usufruindo de todos os seus recursos como o debug passo a passo,
que funciona perfeitamente. Tambm diretamente do Eclipse possvel controlar
o emulador, visualizando logs e simulando o envio de uma mensagem SMS ou
uma ligao telefnica, alm da capacidade de visualizar e enviar arquivos para o
emulador, executar o garbage collector, visualizar a memria heap etc.
Para distribuir uma aplicao Android, necessrio compilar o projeto Java em
um arquivo de extenso .apk (Android Package File), que um arquivo binrio compactado com as classes compiladas e os recursos do projeto. A boa notcia que ao
compilar o projeto pelo Eclipse esse arquivo criado automaticamente pelo plug-in.
Para executar uma aplicao no emulador tambm necessrio instalar esse
arquivo .apk, da mesma forma que em um aparelho de celular real. Entretanto, isso
tambm feito automaticamente pelo Eclipse quando a aplicao executada.
Mas chega de teoria. Vamos partir para o prximo captulo, onde aprenderemos
a instalar o SDK e o plug-in ADT para o Eclipse e criaremos nossa primeira aplicao para o Android.

Vous aimerez peut-être aussi