20
Novatec Ricardo R. Lecheta Google Aprenda a criar aplicações para dispositivos móveis com o Android SDK 2ª Edição

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

Embed Size (px)

Citation preview

Novatec

Ricardo R. Lecheta

Google

Aprenda a criar aplicações para dispositivos móveiscom o Android SDK

2ª Edição

7

Sumário

Agradecimentos ................................................................................................................. 15

Sobre o autor ..................................................................................................................... 16

Prefácio ............................................................................................................................. 17

Capítulo 1 ■ Introdução ao Android ..................................................................................... 191.1 Introdução ............................................................................................................. 191.2 Open Handset Alliance e o Android ....................................................................... 211.3 Conhecendo um pouco mais sobre o Android ........................................................221.4 Sistema operacional Linux ..................................................................................... 231.5 Máquina virtual Dalvik ......................................................................................... 241.6 Código aberto e livre ............................................................................................. 241.7 Android Developer Challenge ................................................................................ 251.8 Android Market .................................................................................................... 251.9 T-Mobile G1 .........................................................................................................271.10 Google Nexus One ...............................................................................................281.11 Desenvolvimento de aplicações com o Eclipse e Java ..............................................28

Capítulo 2 ■ Configuração do ambiente ............................................................................... 302.1 Android SDK .........................................................................................................302.2 Requisitos de software e sistema .............................................................................312.3 Instalação do SDK ..................................................................................................312.4 Plataforma (versão do Android) ............................................................................. 322.5 Instalando uma plataforma no SDK ....................................................................... 332.6 Configuração virtual de um celular Android (AVD) ................................................382.7 Criando uma configuração virtual (AVD) ...............................................................402.8 Emulador do Android ...........................................................................................422.9 Instalando uma aplicação no emulador ..................................................................442.10 Instalação do plug-in para o Eclipse ......................................................................462.11 Configuração das preferências do Eclipse ..............................................................492.12 Criação da primeira aplicação Android no Eclipse ................................................492.13 Execução da aplicação no Eclipse ......................................................................... 522.14 Compreensão dos arquivos gerados no projeto ......................................................542.15 Aplicações na tela principal (Home) ......................................................................602.16 Visualização das aplicações instaladas ................................................................... 622.17 Alterando a resolução do emulador.......................................................................65

Google Android8

2.18 Perspectiva DDMS do Eclipse ...............................................................................662.19 Instalação do exemplo ApiDemos do SDK ............................................................ 672.20 Como fazer o download dos exemplos do livro .....................................................692.21 Resumo das configurações necessárias ..................................................................69

Capítulo 3 ■ Conceitos básicos do Android ........................................................................... 713.1 Activity, View e o método setContentView(view) ..................................................... 713.2 A classe R ..............................................................................................................723.3 Arquivo AndroidManifest.xml ............................................................................... 743.4 Criação do projeto Android para este capítulo ........................................................ 763.5 Criação da interface visual em XML – novo exemplo .............................................. 763.6 Criação da interface visual com a API Java ..............................................................823.7 Acesso aos elementos da tela – o método findViewById(id) .....................................833.8 Tratamento de eventos ...........................................................................................863.9 LogCat – onde está o System.out.println()? ............................................................89

Capítulo 4 ■ Activity ........................................................................................................... 934.1 Activity..................................................................................................................934.2 Ciclo de vida de uma activity (atividade) ................................................................944.3 Exemplo de aplicação sobre o ciclo de vida ............................................................974.4 Navegação entre telas e inicialização de uma nova activity ......................................1014.5 Passagem de parâmetros para a próxima tela ........................................................ 1084.6 Atalho para passar parâmetros para a próxima tela. ...............................................1104.7 ListActivity – exibição de uma lista de itens na tela ................................................ 1114.8 ArrayAdapter – preenchimento da lista com um array de strings ...........................1124.9 Construção de um menu para abrir as telas da aplicação ....................................... 1144.10 Encerramento de uma activity – o método finish() ...............................................1164.11 SimpleCursorAdapter – Exibição dos contatos da agenda em uma lista ................. 1174.12 SimpleAdapter – exibição de valores fixos em uma lista ....................................... 1224.13 SimpleAdapter – uso de um arquivo XML customizado ........................................1244.14 Criação de um ListAdapter customizado com imagens ........................................ 1264.15 MapActivity ....................................................................................................... 130

Capítulo 5 ■ Intent ........................................................................................................... 1355.1 Intent – envio de uma mensagem ao Android .........................................................1355.2 Navegação entre telas e envio de parâmetros ......................................................... 1365.3 Exemplos de Intent nativas do Android .................................................................1375.4 Abrindo o browser ................................................................................................1375.5 Fazer uma ligação para um número de telefone ......................................................1435.6 Visualização de um contato da agenda ................................................................. 1445.7 Visualização de todos os contatos cadastrados no celular ...................................... 1465.8 Retornando resultados de um Intent – startActivityForResult(...) ............................1475.9 Como retornar resultados de um activity ...............................................................1525.10 Qual método utilizar? startActivity(...) ou startActivityForResult(...) ?................... 1565.11 Outros exemplos de como chamar aplicações nativas ........................................... 1585.12 Intent – então isso é tudo o que ela faz? .............................................................. 159

9Sumário

Capítulo 6 ■ Interface gráfica – gerenciadores de layout .................................................... 1626.1 View .................................................................................................................... 1626.2 ViewGroup – a classe-mãe de todos os gerenciadores de layouts ............................ 1636.3 FrameLayout....................................................................................................... 1656.4 LinearLayout ...................................................................................................... 1696.5 LinearLayout – controle do alinhamento “layout_gravity” .....................................1726.6 LinearLayout – controle do peso e “relevância” de cada componente ......................1736.7 TableLayout – uso de uma tabela com linhas e colunas ..........................................1766.8 TableLayout e shrinkColumns – contração de colunas .......................................... 1776.9 TableLayout e strechColumns – expansão de colunas .............................................1786.10 TableLayout – criação de um formulário ............................................................. 1806.11 RelativeLayout .....................................................................................................1816.12 AbsoluteLayout .................................................................................................. 1846.13 Uso de mais de um layout para criar telas complexas ........................................... 1866.14 Criação de um layout pela API – LinearLayout .................................................... 1886.15 Criação de um layout pela API – TableLayout ..................................................... 1906.16 Outras subclasses de ViewGroup ......................................................................... 1916.17 ScrollView ......................................................................................................... 1926.18 GridView ........................................................................................................... 1946.19 Gallery .............................................................................................................. 1986.20 ImageSwitcher ...................................................................................................2006.21 WebView – exibição de uma página web em sua aplicação ................................... 2026.22 TabHost ............................................................................................................ 204

Capítulo 7 ■ Interface gráfica – View ................................................................................. 2087.1 Definição de recursos de texto, cores e imagens ...................................................... 2087.2 Arquivo XML com as mensagens da aplicação ...................................................... 2097.3 Arquivo XML com as cores ...................................................................................2107.4 Arquivo XML para criar um estilo css .................................................................... 2117.5 Exemplo completo com estilos ..............................................................................2127.6 Temas...................................................................................................................2147.7 View – a classe responsável por desenhar elementos na tela. ....................................2157.8 Definição das dimensões ......................................................................................2177.9 TextView ..............................................................................................................2177.10 EditText – Campo de texto para digitar informações .............................................2197.11 AutoCompleteTextView ...................................................................................... 2207.12 Button e ImageButton ........................................................................................ 2237.13 CheckBox e ToggleButton ................................................................................... 2257.14 RadioButton ...................................................................................................... 2277.15 Spinner ...............................................................................................................2317.16 ProgressDialog – criação de uma janela de progresso por tempo indeterminado ... 2357.17 ProgressBar – criação de uma barra de progresso ................................................. 2387.18 Toast – exibição de alertas para o usuário .............................................................2417.19 LayoutInflater – transformação de um arquivo XML em um objeto View .............. 2427.20 Criação de um alerta de confirmação ................................................................. 2447.21 ListView ............................................................................................................ 2477.22 Outros componentes.......................................................................................... 249

Google Android10

7.23 Adição de menus na aplicação ............................................................................ 2497.24 Trabalhando com submenus .............................................................................. 2537.25 Criação de sua própria classe View customizada ................................................. 2557.26 Desenho manual com a classe Canvas ................................................................ 2597.27 Movimentação de um objeto pela tela .................................................................2617.28 Movimentação de uma imagem pela tela ............................................................2647.29 Movimentação de uma imagem pela tela usando TouchScreen ............................ 269

Capítulo 8 ■ Intent Filter ................................................................................................... 2728.1 Especificação de uma ação para uma Intent .......................................................... 2728.2 Configuração do <intent-filter> para a aplicação principal .................................... 2738.3 Ação e categoria: como identificar uma Intent ...................................................... 2748.4 Abertura de uma activity usando uma ação .......................................................... 2758.5 Revisão dos conceitos .......................................................................................... 2778.6 Uso de uma categoria customizada ...................................................................... 2788.7 Por que criar uma ação e categoria para uma Intent? .............................................2808.8 Exemplo completo de IntentFilter .........................................................................2818.9 Chamando uma activity de outra aplicação ..........................................................2848.10 Substituindo a tela Home ................................................................................... 2878.11 Substituindo a agenda de contatos ......................................................................288

Capítulo 9 ■ BroadcastReceiver ......................................................................................... 2909.1 Introdução ...........................................................................................................2909.2 Duas opções para configurar um BroadcastReceiver .............................................. 2929.3 Envio de uma mensagem com o método sendBroadcast(intent) ............................. 2929.4 Projeto de exemplo do BroadcastReceiver .............................................................. 2939.5 Ciclo de vida ....................................................................................................... 2979.6 Execução de um BroadcastReceiver ao inicializar o sistema operacional ................. 2999.7 Configuração de uma aplicação para ser iniciada apenas com um BroadcastReceiver ....

3019.8 Recebimento de uma mensagem SMS com um BroadcastReceiver ......................... 3039.9 Uso de um serviço para processamento pesado em segundo plano......................... 3039.10 Abertura de uma tela/activity a partir de um BroadcastReceiver ........................... 3039.11 Interação com o usuário por meio de uma notificação .......................................... 304

Capítulo 10 ■ Notification ................................................................................................. 30510.1 Por que usar uma notificação para se comunicar com o usuário ........................... 30510.2 Um exemplo de notificação ................................................................................30610.3 Construção de um exemplo prático .................................................................... 30910.4 Entendendo o exemplo .......................................................................................31310.5 Outras opções ao disparar uma Intent de uma notificação ....................................31410.6 Observações .......................................................................................................315

Capítulo 11 ■ Service ........................................................................................................ 31711.1 Por que utilizar a classe Service ............................................................................31711.2 As duas maneiras de iniciar um serviço em segundo plano ...................................31911.3 Inicialização de um serviço com o método startService(intent) ..............................319

11Sumário

11.4 Exemplo – inicialização de um serviço com o método startService(intent) ............ 32011.5 Deixar o serviço executando depois sair de uma tela............................................ 32611.6 Inicialização de um serviço como método bindService(intent,con,flags) ............... 32711.7 Qual método utilizar para iniciar um serviço? ..................................................... 33211.8 Serviço executando em um processo diferente da sua aplicação ............................ 33311.9 Criação de uma interface AIDL ........................................................................... 33411.10 Exemplo completo com serviço e notificação ..................................................... 33711.11 Um serviço em execução contínua não consome muito processamento?............... 344

Capítulo 12 ■ AlarmManager ............................................................................................ 34512.1 Porque utilizar um alarme (agendar uma tarefa) .................................................. 34512.2 Método da classe AlarmManager ........................................................................ 34612.3 Criação de um exemplo para agendar um alarme ................................................ 34612.4 Executando um alarme mais de uma vez ............................................................. 35012.5 Quando utilizar ou não um alarme......................................................................352

Capítulo 13 ■ Handler ....................................................................................................... 35313.1 Introdução ......................................................................................................... 35313.2 Por que utilizar um Handler? ............................................................................. 35313.3 Envio de uma mensagem .................................................................................... 35413.4 Tipos dos métodos sendMessage(mensagem) ...................................................... 35713.5 Execução de um Runnable com o método postMessage(runnable) ...................... 35713.6 Atualização da view dentro de uma thread .......................................................... 35813.7 Implementação de um tela Splash Screen para sua aplicação ................................ 36313.8 Não utilize o Thread.sleep(ms)! .......................................................................... 365

Capítulo 14 ■ Banco de dados ........................................................................................... 36814.1 SQLite ...............................................................................................................36814.2 Criação do banco de dados com o SQLite Expert Personal .................................. 36914.3 Aplicação para inserir, alterar e excluir carros ...................................................... 37214.4 Abrindo o banco de dados .................................................................................. 37214.5 Inserção de registros no banco de dados ............................................................. 37314.6 Atualização de registros no banco de dados..........................................................37414.7 Exclusão de registros do banco de dados ..............................................................37514.8 Busca de registros no banco de dados ................................................................. 37614.9 Juntando as peças .............................................................................................. 37714.10 Construção de uma lista para visualizar os carros cadastrados ........................... 38314.11 Adição de um menu e eventos na tela de lista de carros .......................................38614.12 Criação da tela com o formulário para inserir e editar carros .............................. 38914.13 Criação da tela com o formulário para buscar um carro pelo nome .................... 39314.14 Execução da aplicação de cadastro..................................................................... 39514.15 Criação de um banco de dados diretamente com a API ...................................... 39714.16 Outras formas de armazenamento de dados .......................................................40114.17 Lendo e salvando arquivos .................................................................................40114.18 Criação do projeto de arquivos .......................................................................... 40214.19 Salvando as preferências do usuário com a classe SharedPreferences .................... 407

Google Android12

Capítulo 15 ■ Content Provider ......................................................................................... 41215.1 Por que utilizar a classe ContentProvider “provedor de conteúdo” ..........................41215.2 URI – Immutable URI reference ..........................................................................41315.3 Exemplos de provedores de conteúdo – nativos ....................................................41415.4 Leitura de informações ........................................................................................41515.5 Métodos da classe Cursor ...................................................................................41715.6 Como ler todos os telefones e a foto de um contato ..............................................41915.7 Relembrando um exemplo de Intent ................................................................... 42215.8 Entendendo a sintaxe da Uri: content://authority/path/id ................................... 42315.9 A classe ContentProvider .................................................................................... 42415.10 Implementação da classe CarroProvider de forma correta ................................... 42715.11 Classe estática Carros .........................................................................................43115.12 Exemplo para testar a classe CarroProvider ........................................................ 43215.13 É possível usar a classe CarroProvider em outra aplicação? ................................. 43715.14 Uso de uma Intent com a ação ACTION_VIEW .................................................44015.15 É possível criar o mesmo exemplo para cadastrar contatos na agenda? ................ 445

Capítulo 16 ■ Mapas e GPS ................................................................................................ 44616.1 Conceitos básicos ...............................................................................................44616.2 Obtenção de uma chave para o acessar o Google Maps ....................................... 44716.3 Criação do primeiro mapa no Android ............................................................... 45016.4 Criação de um mapa com um arquivo de layout XML ......................................... 45216.5 Informando as coordenadas com a classe GeoPoint ............................................. 45416.6 Configurar o mapa para o modo Rua ou Satélite ................................................. 45616.7 A classe MapController ...................................................................................... 45916.8 Centralização do mapa em uma coordenada ....................................................... 45916.9 Controle de zoom ...............................................................................................46116.10 Controle do zoom ............................................................................................ 46216.11 Desenhando um overlay ....................................................................................46316.12 Criação de um overlay com uma imagem ..........................................................46616.13 Juntando as partes ............................................................................................ 46916.14 Movimentação automática do mapa .................................................................. 47216.15 GPS – Desenvolvimento de aplicações de localização ......................................... 47616.16 Simulação da localização GPS do emulador .......................................................48016.17 Uso de um trajeto salvo pelo Google Earth .........................................................48116.18 Criação de seu próprio arquivo kml com o Google Earth ................................... 48316.19 Uso de um arquivo GPX ................................................................................... 48516.20 Onde você está localizado no mapa? ................................................................. 48516.21 Controle do clique sobre um overlay .................................................................48916.22 A classe ItemizedOverlay ...................................................................................491

Capítulo 17 ■ Http, sockets e Web Services ........................................................................ 49517.1 Comunicação com um servidor ........................................................................... 49517.2 Uso de sockets ................................................................................................... 49617.3 Criação do projeto socket no servidor ................................................................. 49617.4 Criação do projeto-cliente no Android ................................................................50017.5 Revisão dos conceitos ......................................................................................... 505

13Sumário

17.6 Comunicação com o servidor por meio do protocolo HTTP ................................ 50517.7 Criação de um projeto web no Eclipse ................................................................. 50517.8 Criação de uma aplicação para fazer o download de um arquivo-texto ..................51017.9 Criação de uma aplicação para o download de uma imagem .................................51817.10 Envio de parâmetros por POST ...........................................................................52117.11 Exemplo buscando carros do servidor ................................................................ 52617.12 Jakarta Commons HttpClient ........................................................................... 53417.13 Acesso a um web service .................................................................................... 53817.14 Criação do projeto servidor com um Web Service ............................................... 53917.15 Criação de um cliente de web service no Android ............................................... 54317.16 Revisão ............................................................................................................. 548

Capítulo 18 ■ SMS ............................................................................................................. 55018.1 Introdução ......................................................................................................... 55018.2 Envio de uma mensagem SMS por telnet ............................................................. 55118.3 Envio de uma mensagem SMS pelo Eclipse ..........................................................55218.4 Criação do projeto de exemplo ........................................................................... 55318.5 Classe Sms que envia e recebe uma mensagem SMS ............................................ 55718.6 Método enviarSms(contexto,destino,mensagem) .................................................. 55818.7 Método receberMensagem(intent) ...................................................................... 55918.8 Execução do exemplo .........................................................................................56118.9 Conclusão ......................................................................................................... 562

Capítulo 19 ■ Multimídia – Áudio, vídeo e câmera ............................................................. 56319.1 Formatos de áudio e vídeo suportados ................................................................ 56319.2 Reprodução de áudio com duas linhas de código ................................................ 56319.3 Um segundo exemplo .........................................................................................56419.4 Simulação de um cartão de memória (SD-Card) .................................................. 56519.5 Entendendo a classe MediaPlayer ....................................................................... 56719.6 Criação do player Mp3 ....................................................................................... 56919.7 Listagem de todas as músicas do cartão de memória ............................................57419.8 Uso de um serviço para reproduzir uma música em segundo plano ...................... 57719.9 Criação de uma aplicação para utilizar o serviço de mp3 ..................................... 58019.10 Reprodução de vídeos de uma forma simples com o VideoView ..........................58619.20 Utilizando a câmera ......................................................................................... 587

Capítulo 20 ■ Variedades .................................................................................................. 59220.1 Simulação de um SD Card .................................................................................. 59220.2 Uso de um arquivo .jar em sua aplicação ............................................................ 59320.3 ADB (Android Debug Bridge) ............................................................................ 59420.4 Controle da versão de sua aplicação ................................................................... 59620.5 Informações sobre a versão do SO ..................................................................... 59720.6 Obtenção de um certificado digital para assinar sua aplicação ............................. 59820.7 Obtenção de uma chave válida para o Google Maps ............................................60020.8 Assinando a aplicação para publicar no Android Market ..................................... 60220.9 Publicando no Android Market .........................................................................604

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

Novatec

Ricardo R. Lecheta

Google

Aprenda a criar aplicações para dispositivos móveiscom o Android SDK

2ª Edição

19

capítulo 1Introdução ao Android

1.1 IntroduçãoO mercado de celulares está crescendo cada vez mais. Estudos mostram que hoje em dia mais de 3 bilhões de pessoas possuem um aparelho celular, e isso corresponde a mais ou menos metade da população mundial.

Hoje em dia os usuários comuns estão procurando cada vez mais celulares com diversos recursos como câmeras, músicas, bluetooth, ótima interface visual, jogos, GPS, acesso a internet e e-mails, e agora ainda temos a TV digital.

O mercado corporativo também está crescendo muito, e diversas empresas estão buscando incorporar aplicações móveis a seu dia-a-dia para agilizar seus negócios e integrar as aplicações móveis com seus sistemas de back-end. Empresas obviamente visam lucro e mais lucro, e os celulares e smartphones podem ocupar um importante espaço em um mundo onde a palavra “mobilidade” está cada vez mais conhecida.

Desta forma aplicações que executam em um celular podem estar literalmente conectadas e online, sincronizando informações diretamente de um servidor con-fiável da empresa. Hoje em dia diversos bancos oferecem serviços aos seus usuá-rios, onde é possível pagar suas contas e visualizar o extrato de sua conta corrente diretamente de um celular. Países mais desenvolvidos já permitem que celulares sejam utilizados em mercados para ler os códigos de barras dos produtos e realizar a compra apenas com o celular, como se fosse um cartão de crédito. O que todos precisavam na verdade era uma plataforma poderosa e flexível para tornar tudo isso mais viável e cada vez mais uma realidade para todos.

As empresas e os desenvolvedores buscam uma plataforma moderna e ágil para o desenvolvimento de aplicações coorporativas para auxiliar em seus negócios e lucros.

Google Android20

Já os usuários comuns buscam um celular com um visual elegante e moderno, de fácil navegação e uma infinidade de recursos. Agora, será que existe alguém para atender esses dois mundos completamente diferentes?

Para acompanhar essa evolução da tecnologia e satisfazer os usuários, os fabri-cantes e operadoras de celulares, as empresas e nós, os desenvolvedores, existe uma grande corrida estrelada pelas maiores empresas do mundo em tecnologia móvel para competir por esse nicho do mercado.

O Android é a resposta do Google para ocupar esse espaço. Consiste em uma nova plataforma de desenvolvimento para aplicativos móveis, baseada em um sistema operacional Linux, com diversas aplicações já instaladas e, ainda, um ambiente de desenvolvimento bastante poderoso, ousado e flexível.

O Android causou um grande impacto quando foi anunciado, atraindo a atenção de muita gente. Podemos dizer que isso aconteceu porque por trás dele está nada mais nada menos do que o Google, a empresa que está revolucionando a internet. Entretanto, não é apenas o Google que está na jogada, e sim um grupo formado por empresas líderes 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 intenção de padronizar uma plataforma de código aberto e livre para celulares, justamente para atender a todas as expectativas e tendências do mercado atual.

Existem diversos vídeos interessantes no YouTube que demonstram alguns recursos do Android, e alguns chegam a impressionar. Os vídeos mostram algu-mas funcionalidades básicas como navegação na internet com a tela touch screen, reconhecimento de código de barras, uma demonstração do famoso jogo Quake executando perfeitamente com uma ótima resolução e muito mais.

Um desses vídeos apresenta um dos clássicos recursos da plataforma e, em de-terminado momento, o apresentador diz algo como: “Hum, estou com fome, gosto de comer sushi, será que existe algum restaurante japonês por aqui?” E ele acessa o Google Maps para buscar os restaurantes mais próximos, sendo que utilizando GPS é possível saber sua exata localização e traçar a rota para o restaurante mais próximo desejado. É isso: os celulares não são mais apenas usados para atender ligações, sendo agora verdadeiras máquinas repletas de tecnologia para você usufruir.

Este livro foca no desenvolvimento de aplicações para o Android, utilizando a linguagem Java e a versão 2.2 do SDK. Em cada capítulo, novos conceitos e ideias serão apresentados, para que você saia na frente e possa estar preparado para quando esse mercado explodir.

21Capítulo 1 ■ Introdução ao Android

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 estão 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 endereço:

http://www.openhandsetalliance.com/oha_members.html

No site da OHA existe uma ótima descrição do que seria essa aliança. O texto está em inglês e vou apenas traduzir uma breve citação aqui. “Hoje, existem 1,5 bi-lhão de aparelhos de televisão em uso em todo o mundo e 1 bilhão de pessoas têm acesso à internet. No entanto, quase 3 bilhões de pessoas têm 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 inúme-ras pessoas em todo o mundo. A Open Handset Alliance é um grupo formado por empresas líderes em tecnologia móvel que compartilham essa visão para mudar a experiência móvel de todos os consumidores [...].”

Assim, o objetivo do grupo é definir uma plataforma única e aberta para ce-lulares para deixar os consumidores mais satisfeitos com o produto final. Outro objetivo principal dessa aliança é criar uma plataforma moderna e flexível para o desenvolvimento de aplicações coorporativas. O resultado dessa união, como você já deve saber, foi o nascimento do Android.

O Android é a nova plataforma de desenvolvimento para aplicativos móveis como smarthphones e contêm um sistema operacional baseado em Linux, uma interface visual rica, GPS, diversas aplicações já instaladas e ainda um ambiente de desenvolvimento bastante poderoso, inovador e flexível. Outra boa notícia é que podemos utilizar a consagrada linguagem Java para desenvolver as aplicações, usufruindo de todos os recursos a que temos direito.

Todos acabam se beneficiando dessa união: os fabricantes de celulares, os usu-ários comuns e, é claro, os desenvolvedores de aplicações.

Os usuários de celulares são extremamente favorecidos com tudo isso. Hoje em dia, todos querem um celular com um bom visual, de fácil usabilidade, com tela touch screen, câmera, músicas, jogos, GPS, acesso à internet e muito mais, e o celular está cada vez mais ocupando um espaço importante na vida das pessoas. O Android foi criado justamente pensando em agradar esses usuários, possibilitando que encontrem todos os recursos esperados em apenas um aparelho. O mundo da

Google Android22

tecnologia está sempre em evolução, e a OHA foi criada justamente para manter uma plataforma-padrão onde todas as novas tendências do mercado estejam englobadas em uma única solução.

Para os fabricantes de celulares, o fato de existir uma plataforma única e conso-lidada é uma grande vantagem para criar novos aparelhos. A grande vantagem para eles é que a plataforma também é livre e de código aberto. A licença do Android é flexível e permite que cada fabricante possa realizar alterações no código-fonte para customizar seus produtos, e o melhor de tudo, sem necessidade de compartilhar essas alterações com ninguém. O Android também é “free”, e os fabricantes podem usar e abusar dele sem precisar pagar por isso.

O fato de o Android ser de código aberto contribui muito para seu aperfeiçoa-mento, uma vez que desenvolvedores de todos os lugares do mundo podem contri-buir para seu código-fonte, adicionando novas funcionalidades ou simplesmente corrigindo falhas.

Já os desenvolvedores de aplicações podem desfrutar de uma plataforma de desenvolvimento moderna com diversos recursos incríveis, com tudo o que há de mais moderno. Este é o tema deste livro: o desenvolvimento de aplicações com o Android. E aqui você vai entender o porquê de toda essa revolução.

1.3 Conhecendo um pouco mais sobre o AndroidTodo celular tem uma tela inicial com alguns ícones e um menu, certo? Todo celular também tem uma agenda de contatos e uma tela para fazer a ligação, não é?

Agora, você já pensou em trocar algumas dessas telas por uma tela customizada desenvolvida por você? Com o Android isso é possível. Sua arquitetura é muito flexível e você pode integrar aplicações nativas com sua aplicação, ou até mesmo substituir qualquer aplicação nativa existente por uma que você mesmo criou. Creio que as operadoras ou fabricantes de celulares vão gostar dessa funcionalidade, já que dessa forma é possível trocar as telas e funcionalidades do celular para fazer aquele marketing básico.

É possível integrar aplicações de uma forma simples, sejam elas desenvolvidas por você, sejam aplicações nativas. Por exemplo, imagine que sua aplicação precise consultar a agenda de contatos para selecionar determinado amigo, e logo depois visualizar o endereço dele em um mapa. Bom, que existe a agenda de contatos e o Google Maps no Android todos já sabem, mas será que é possível utilizá-los e integrá-los em nossas aplicações? A resposta é sim. Integração é uma das palavras-chaves em aplicações coorporativas, e a arquitetura do Android foi criada justamente pensando nisso.

23Capítulo 1 ■ Introdução ao Android

O Android tem muitos diferenciais interessantes e uma arquitetura realmente flexível focada na integração de aplicações. Não existe diferença entre uma aplicação nativa e uma desenvolvida por você.

Falando em integração, existe uma classe que é o coração do Android, chamada de Intent, e ela será explicada no capítulo 5. Essa classe nada mais é do que uma mensagem enviada ao sistema operacional informando nossa “intenção” de realizar determinada tarefa.

Então, no sistema operacional do Android, mensagens são disparadas para todos os lados, identificadas pela classe Intent. Conforme o conteúdo da mensagem, ela pode ser interceptada por qualquer aplicação interessada a fim de realizar a tarefa que for necessária. Por exemplo, se você deseja abrir uma aplicação nativa como o browser ou abrir uma nova tela de sua aplicação, a única coisa que você precisa fazer é criar esse objeto Intent e configurar o conteúdo 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 memória e os processos. Isso permite que diversas aplicações possam ser executadas ao mesmo tempo, permitindo que apli-cações em segundo plano consigam executar sem que o usuário perceba, enquanto ele está acessando a internet ou atendendo uma ligação. Esse recurso é muito legal e você pode tranquilamente agendar uma aplicação para executar em determinada data e hora, sem atrapalhar a atividade do usuário.

É claro que não podemos esquecer os recursos visuais e aquelas funcionalidades que impressionam o usuário comum. Nesse quesito o Android certamente atende as expectativas. A navegação de telas por meio da touch screen permite que o usuário tenha uma ótima experiência ao usar o aparelho. Segundo avaliações sobre o HTC G1, o primeiro celular Android lançado no mercado, a navegação na internet é incrível.

O Android também tem suporte a gráficos 3D baseados na especificação 1.0 da OpenGL ES e, dessa forma, é possível criar jogos com uma qualidade excelente de resolução. Você pode conferir várias demonstrações de jogos nos vídeos do YouTube.

1.4 Sistema operacional LinuxO sistema operacional do Android foi baseado no kernel 2.6 do Linux, e é respon-sável por gerenciar a memória, os processos, threads e a segurança dos arquivos e pastas, além de redes e drivers.

Cada aplicativo no Android dispara um novo processo no sistema operacional. Alguns deles podem exibir uma tela para o usuário, e outros podem ficar em execução

Google Android24

em segundo plano por tempo indeterminado. Diversos processos e aplicativos podem ser executados simultaneamente, e o kernel do sistema operacional é o responsável por realizar todo o controle de memória.

Caso necessário, o próprio sistema operacional pode decidir encerrar algum processo para liberar memória e recursos, e talvez até reiniciar o mesmo processo posteriormente quando a situação estiver controlada.

Toda a segurança do Android é baseada na segurança do Linux. No Android cada aplicação é executada em um único processo e cada processo por sua vez possui uma thread dedicada. Para cada aplicação instalada no celular é criado um usuário no sistema operacional para ter acesso a sua estrutura de diretórios. Desta forma nenhum outro usuário pode ter acesso a esta aplicação.

1.5 Máquina virtual DalvikVocê já sabe que a linguagem Java é utilizada para construir as aplicações para o Android. O fato é que em seu sistema operacional não existe uma máquina virtual Java (JVM). Na verdade, o que temos é uma máquina virtual chamada Dalvik que é otimizada para execução em dispositivos móveis.

Ao desenvolver as aplicações para o Android você vai utilizar a linguagem Java e todos os seus recursos normalmente, mas depois que o bytecode (.class) é com-pilado ele é convertido para o formato .dex (Dalvik Executable), que representa a aplicação do Android compilada.

Depois disso, os arquivos .dex e outros recursos como imagens são compactados em um único arquivo com a extensão .apk (Android Package File), que representa a aplicação final, pronta para ser distribuída e instalada.

Ao utilizar o ambiente de desenvolvimento do Eclipse, toda essa compilação e geração do arquivo .apk ocorre automaticamente, portanto, não é preciso se preo-cupar com isso.

1.6 Código aberto e livreO Android é a primeira plataforma para aplicações móveis completamente livre e de código aberto (open-source), o que representa uma grande vantagem para sua evolução, uma vez que diversos programadores do mundo poderão contribuir para melhorar a plataforma.

25Capítulo 1 ■ Introdução ao Android

Para os fabricantes de celulares, isso também é uma grande vantagem, uma vez que é possível utilizar o sistema operacional do Android em seus celulares sem ter que pagar por isso. Além disso, a licença Apache Software Foundation (ASF) permite que alterações sejam efetuadas no código-fonte para criar produtos customizados sem precisar compartilhar as alterações com ninguém.

Você pode obter mais informações e até fazer o download do código-fonte do Android no seguinte site: http://source.android.com/

1.7 Android Developer ChallengePara promover o Android o Google começou investindo pesado e, assim que a primeira versão do SDK foi lançada, também foi anunciado o famoso concurso Android Developer Challenge (ADC), com mais de U$ 10 milhões em prêmios.

O prazo para enviar as aplicações era 14 de abril de 2008, e o concurso foi dividido em duas fases. Na primeira fase, as 50 melhores aplicações recebiam US$ 25.000 e, na segunda, mais 20 das melhores aplicações seriam selecionadas para receber US$ 275.000, e algumas US$ 100.000.

Na primeira etapa as aplicações foram testadas no próprio emulador do Android, porque na época nenhum celular com o Android tinha sido lançado. 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 aplicações 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 lançado, e dessa vez as aplicações seriam testadas em um aparelho real, e não mais em um emulador.

Quando este livro estava sendo escrito, a primeira parte já tinha terminado e todos os vencedores podiam ser vistos no endereço seguinte. Temos até um brasileiro que foi um dos vencedores com a aplicação TeraDesk.

http://code.google.com/intl/pt-BR/android/adc_gallery/

1.8 Android MarketPara auxiliar a distribuição das aplicações do Android, além da divulgação de sua nova plataforma, foi criado o site Android Market.

http://www.android.com/market/

Google Android26

O objetivo do site é fornecer aos desenvolvedores de aplicativos um lugar co-mum para disponibilizar suas aplicações. Funciona como o site do YouTube: basta cadastrar e enviar seu aplicativo. O site também conta com o mesmo esquema de comentários e classificação que o YouTube contém.

Para publicar uma aplicação 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 usuários. Existem aplicativos que são gratuitos, enquanto outros são pagos.

Uma boa notícia para os desenvolvedores é que 70% dos lucros com os aplicativos vendidos serão repassados para quem os construiu.

Para os usuários utilizarem o Android Market é muito simples. Basta acessar o site com o celular e fazer o download do aplicativo desejado. Os comentários e a classificação deixada pelos usuários serão utilizados para criar o ranking com os melhores aplicativos.

A figura 1.1 mostra o usuário selecionando alguma aplicação para ser instalada pelo Android Market.

Figura 1.1 – Seleção de uma aplicação no Android Market.

A figura 1.2 mostra as aplicações já instaladas e ainda com o sistema de classificação.

Se você deseja ver na prática como o Android Market funciona, procure pelos vídeos no YouTube, que contém ótimas demonstrações.

27Capítulo 1 ■ Introdução ao Android

Figura 1.2 – Aplicações instaladas pelo Android Market.

1.9 T-Mobile G1O T-Mobile G1 desenvolvido pela HTC foi o primeiro celular lançado com a plata-forma do Android e, como esperado, causou um grande agito no mercado. A notícia de seu lançamento causou um grande impacto e superou as expectativas de vendas da HTC, e mesmo antes de seu lançamento já havia sido esgotado todo o estoque para os pedidos de pré-venda.

Os primeiros celulares HTC G1 (Figura 1.3) começaram a ser vendidos nos Esta-dos Unidos no dia 22 de outubro de 2008 por US$ 179, disponibilizando uma tela sensível ao toque, um teclado Qwerty que abre para baixo para facilitar a digitação 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 endereço:

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 opções, como browser, mapas, agenda de contatos etc. Se clicar no menu 360 View você pode literalmente segurar um celular G1 na sua mão e girá-lo para ter uma ideia de sua aparência.

Vale à pena brincar um pouco com o emulador e assistir aos vídeos no YouTube sobre o G1, que demonstram as funcionalidades e toda a usabilidade do Android.

Google Android28

Figura 1.3 – Emulador do HTC G1.

1.10 Google Nexus OneNa época em que este livro estava sendo escrito, o Google tinha recém-lançado seu celular Nexus One, com Android 2.1 e um processador de 1Ghz, sendo o mais rápido de todos os smartphones Android já lançados até aquele momento.

Mas o grande triunfo do Android é sua plataforma aberta e flexível, a qual permite que o sistema operacional inteiro seja customizado. Desta forma vários fabricantes de celulares como a Motorola, HTC, Sony Ericsson etc já estavam customizando seus modelos de celulares Android para a última versão. A customização varia de fabricante para fabricante. Na HTC a customização é chamada de HTC Sense e muda totalmente o visual do aparelho, e ainda adiciona diversas aplicações. A Motorola chama sua de MotoBlur, e é focada em redes sociais. A customização da Sony Ericsson é conhecida como UX "User eXperience".

Com a grande popularização do Android, os usuários poderão escolher os modelos que mais lhe agradam e os desenvolvedores poderão desfrutar da sua plataforma de desenvolvimento e criar aplicações móveis incríveis.

1.11 Desenvolvimento de aplicações com o Eclipse e JavaPara alegria geral da nação é possível desenvolver uma aplicação 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 plug-in chamado ADT (Android Development Tools) para facilitar o desenvolvimento,

29Capítulo 1 ■ Introdução ao Android

os testes e a compilação do projeto e, portanto, adotaremos o Eclipse para nossos exemplos.

Utilizando o plug-in ADT é possível executar o emulador do Android diretamen-te do Eclipse, usufruindo de todos os seus recursos como o debug passo a passo, que funciona perfeitamente. Também diretamente do Eclipse é possível controlar o emulador, visualizando logs e simulando o envio de uma mensagem SMS ou uma ligação telefônica, além da capacidade de visualizar e enviar arquivos para o emulador, executar o garbage collector, visualizar a memória heap etc.

Para distribuir uma aplicação Android, é necessário compilar o projeto Java em um arquivo de extensão .apk (Android Package File), que é um arquivo binário com-pactado com as classes compiladas e os recursos do projeto. A boa notícia é que ao compilar o projeto pelo Eclipse esse arquivo é criado automaticamente pelo plug-in.

Para executar uma aplicação no emulador também é necessário instalar esse arquivo .apk, da mesma forma que em um aparelho de celular real. Entretanto, isso também é feito automaticamente pelo Eclipse quando a aplicação é executada.

Mas chega de teoria. Vamos partir para o próximo capítulo, onde aprenderemos a instalar o SDK e o plug-in ADT para o Eclipse e criaremos nossa primeira apli-cação para o Android.