Trecho de GOOGLE Android - Aprenda a Criar Aplicaccoes Para Dispositivos Moveis Com o Android SDK

  • Published on
    29-Jul-2015

  • View
    1.199

  • Download
    28

Transcript

GoogleAprenda 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 .....................................................................................191.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 ...............................................................................302.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

8

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 ...........................................................................713.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 ...........................................................................................................934.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 ........................................................................................................... 1355.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

9

Captulo 6 Interface grfica gerenciadores de layout .................................................... 1626.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 ................................................................................. 2087.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 ................................................................................................... 2728.1 Especificao de uma ao para uma Intent .......................................................... 272 8.2 Configurao do 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 ......................................................................................... 2909.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 ................................................................................................. 30510.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 ........................................................................................................ 31711.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 ............................................................................................ 34512.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 ....................................................................................................... 35313.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 ........................................................................................... 36814.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 ......................................................................................... 41215.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 ................................................................................................ 44616.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 ........................................................................ 49517.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............................................................................................................. 55018.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 ............................................................. 56319.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 .................................................................................................. 59220.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

GoogleAprenda a criar aplicaes para dispositivos mveis com o Android SDK

2 Edio Ricardo R. Lecheta

Novatec

captulo 1

Introduo ao Android

1.1 IntroduoO 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 AndroidA 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 AndroidTodo 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 AndroidO 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.

23

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 LinuxO 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 DalvikVoc 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 livreO 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 ChallengePara 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 MarketPara 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 G1O 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 OneNa 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 JavaPara 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.