28
Android em ação Terceira edição

Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

Embed Size (px)

Citation preview

Page 1: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

Android em ação

Terceira edição

Page 2: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

Preencha a ficha de cadastro no final deste livro e receba gratuitamente informações

sobre os lançamentos e as promoções da Elsevier.

Consulte também nosso catálogo completo, últimos lançamentos e

serviços exclusivos no site www.elsevier.com.br

Page 3: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

Android em açãoTerceira edição

W. FRANK ABLESON ROBI SEN

CHRIS KING C. ENRIQUE ORTIZ

TraduçãoEduardo Kraszczuk

Edson Furmankiewicz

Page 4: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

Do original: Android in Action, Third Edition de W. Frank Ableson, Robi Sen e Chris KingTradução autorizada do idioma inglês da edição publicada pela editora Manning Publications Co.

© 2012, Elsevier Editora Ltda.

Todos os direitos reservados e protegidos pela Lei no 9.610, de 19/02/1998.Nenhuma parte deste livro, sem autorização prévia por escrito da editora, poderá ser reproduzida ou transmitida sejam quais forem os meios empregados: eletrônicos, mecânicos, fotográficos, gravação ou quaisquer outros.

Nota: Muito zelo e técnica foram empregados na edição desta obra. No entanto, podem ocorrer erros de digita-ção, impressão ou dúvida conceitual. Em qualquer das hipóteses, solicitamos a comunicação ao nosso Serviço de Atendimento ao Cliente, para que possamos esclarecer ou encaminhar a questão.

Nem a editora nem o autor assumem qualquer responsabilidade por eventuais danos ou perdas a pessoas ou bens, originados do uso desta publicação.

CIP-Brasil. Catalogação-na-fonteSindicato Nacional dos Editores de Livros, RJ

W178m Ableson, W. FrankAndroid em ação / W. Frank Ableson, Charlie Collins, Robi Sen ; tradução Eduardo Kraszczuk,

Edson Furmankiewicz. - Rio de Janeiro : Elsevier, 2012.

Tradução de: Android in action, 3rd ed.“Edição revisada de Unlocking Android”Apêndice Inclui índiceISBN 978-85-352-4809-8

1. Android (Programa de computador). 2. Computação móvel. 3. Software de aplicação - Desenvolvimento. I. Collins, Charles (Charlie E.). II. Sen, Robi. III. Título.

11-5996 CDD: 004.16 CDU: 004

Revisão: Edson RosaEditoração Eletrônica: Docware Traduções Técnicas

Elsevier Editora Ltda.Conhecimento sem Fronteiras

Rua Sete de Setembro, 111 - 16o andar20050-006 - Centro - Rio de Janeiro - RJ - Brasil

Rua Quintana, 753 - 8o andar04569-011 - Brooklin - São Paulo - SP - Brasil

Serviço de Atendimento ao Cliente [email protected]

ISBN 978-85-352-4809-8ISBN da edição original: 978-1-617290-50-3

Page 5: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

AgradecimentosEscrever a terceira edição de Android em ação se parece um pouco com aquele antigo ditado sobre casamentos: “Algo velho, algo novo...” Os prazos para a terceira edição não foram nada fáceis, uma vez que pela última contagem ainda há somente 24 horas em um dia. E para algo novo – parece que o ritmo de inovação do Android continua a corresponder à sua taxa de adoção por usuários móveis ao redor do mundo. Assim como as duas edições anteriores, Android em ação, terceira edição representa uma colaboração entre diversos contribuintes. Eu tive o privilégio de trabalhar novamente com Robi Sen e Chris King, que trabalharam comigo na primeira edição. C. Enrique Ortiz uniu-se a nós para contribuir com conteúdo sobre os tablets. Mais uma vez, a talentosa equipe da Manning se empenhou para produzir esta edição.

Em particular, gostaríamos de reconhecer e agradecer a todos na Manning. Pri-meiro, obrigado a Troy Mott, nosso editor de aquisição e desenvolvimento, que se envolveu em todos os aspectos das três edições até agora deste projeto – parabéns, Troy, por seus três gols! Bob Herbstman fez todas as pequenas e grandes coisas para a realização do projeto; Mary Piergies orientou a equipe habilidosamente pelo lan-cinante processo de produção; e Marjan Bace, nossa editora, que mostrou atenção aos detalhes ao mesmo tempo desafiadora, benéfica e apreciada.

Uma vez que terminamos de escrever, a próxima parte do trabalho começou. Nossos agradecimentos especiais vão para Benjamin Berg, que fez a aprovação edi-torial de pré-produção; Tiffany Taylor, que aprovou a segunda revisão de texto e nos ajudou a organizar as partes finais do projeto; e finalmente Dottie Marsico, que compôs o layout real das páginas. Às vezes é difícil visualizar o produto final quando olhamos edições e mais edições em MS Word, mas a mágica de Dottie criou o produto que você tem em mãos. Em seguida, gostaríamos de agradecer a Candice Gillhoolley por seus esforços para divulgar o livro. Agradecemos a cada um de vocês por sua contribuição especial a este projeto.

E agradecimentos especiais aos revisores que leram nosso manuscrito revisado em diferentes momentos do seu desenvolvimento: Steve Prior, Matthew Johnson, Julian Harty, David Strong, Loïc Simon, Al Scherer, Gabor Paller e Pieter Kuijpers; e a Jérôme Bâton por sua cuidadosa revisão técnica do manuscrito final durante a produção.

Page 6: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

vi ANDROID EM AÇÃO ELSEVIER

Por último, gostaríamos de agradecer ao atencioso encorajamento dos assinan-tes da MEAP, que forneceram feedback ao longo do caminho. O livro está melhor graças a suas contribuições.

Frank ablesonAgradeço a meus coautores: Robi Sen, um verdadeiro profissional que se envolveu neste projeto desde o início; Chris King, que provou sua solidez em termos de ca-pacidade técnica e confiabilidade; e o recém-chegado C. Enrique Ortiz (CEO), que injetou energia e entusiasmo na Terceira Edição. É claro que, durante cada etapa deste projeto, Troy Mott apontou o caminho: gerenciando o processo, às vezes nos persuadindo, e sempre entregue ao trabalho. Bob Herbstman contribuiu valiosa-mente para o produto final e deve estar cansado de limpar meus escritos e elemen-tos gráficos amadores após todos esses anos. Agradecimentos especiais a Bob por recriar muitas ilustrações. Agradeço também à equipe de produção da Manning Publications, que mais uma vez realizou um excelente trabalho. Agradeço também a Candace Gillhoolley pelo apoio constante com livros e promoções para o suporte à palestras e conferências – sempre me socorrendo em pedidos de última hora. Por fim, e mais importante, agradeço a Nikki e companhia na família Ableson pelo apoio incondicional. Graças a Deus, outra versão está completa!

Chris kingSou profundamente grato a Troy Mott, Frank, Robi e Enrique, com os quais tive grande prazer de colaborar enquanto nos dirigíamos para a encarnação mais recen-te deste livro. Eu também aprecio todo o trabalho feito pelos revisores e editores da Manning, assim como dos dedicados leitores das edições anteriores que contri-buíram com sugestões nos fóruns Author Online. Agradecimentos especiais a Eric Tamo e Zac White por seu apoio e ânimo incansáveis. Por fim, meu amor por minha família: Charles, Karen, Patrick, Kathryn e Andrew.

robi senAgradeço a Troy Mott e à equipe — e a todos na Manning Publications — por seu trabalho duro em transformar este livro em algo que vale a pena ser lido. Eu gosta-ria de agradecer aos meus coautores, Frank e Chris, com quem foi ótimo trabalhar e que foram muito compreensivos quando era eu quem estava atrasado. Gostaria também de agradecer a C. Enrique Ortiz por suas contribuições. Finalmente, eu gostaria de dedicar meus esforços neste livro a meu irmão Neel, que faleceu en-quanto estávamos terminando o livro.

C. enrirque ortizA meus pais, família, amigos e colegas, que influenciaram meu trabalho e o torna-ram empolgante.

Page 7: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

PrefácioA ideia de escrever um livro sobre o desenvolvimento do Android pode ser um pouco fútil às vezes, considerando o ritmo em que o Android continua a se expan-dir, se transformar e mudar. O que começou como o projeto de um livro poucos anos atrás tornou-se agora uma série de atualizações do trabalho original, com pra-ticamente o dobro do número de páginas do projeto original – e isso após decisões difíceis sobre o que deixar de fora do livro para assegurar que ele fosse publicado.

A atualização de Android em ação representa nosso esforço mais recente para proporcionar a cobertura de assuntos importantes do desenvolvimento Android, a saber, a expansão para o espaço do tablet com o Android 3.x, bem como os avanços dos elementos gráficos e de mídia móveis, como o RenderScript.

Embora existam muitas ofertas de tablets de marcas conhecidas ou desconheci-das surgindo a todo momento, a equipe de desenvolvimento Android avançou ao adicionar capacidades específicas de tablet ao SDK sob a bandeira do 3.0. Com esse objetivo, o 3.0 foi rapidamente atualizado, desse modo, geralmente nos referimos aos recursos específicos de tablet como 3.x; e logo em breve tenho certeza que o Android 4.x será lançado com um superconjunto de recursos.

Assim como muitas coisas na vida, a única constante é a mudança, mas nós já es-tamos de certo modo acostumados com o ambiente acelerado do desenvolvimento Android. Nesse sentido, asseguramos que todos os aplicativos deste livro funcionam com o Android 3.x. Os capítulos mais recentes que cobrem o assunto específico dos tablets (20–22) exigem o SDK 3.x, enquanto os outros capítulos são compatíveis com as versões do SDK 2.x. Se planeja escrever aplicativos para Android, você preci-sa simplesmente se preparar para criar várias versões dele. Essa é, ao mesmo tempo, uma virtude e um desafio do ecossistema do Android.

A terceira edição foi escrita por Frank Ableson, Robi Sen, Chris King e o recém--chegado C. Enrique Ortiz, conhecido como CEO. Para citar uma frase do setor de viagens aéreas, “Nós sabemos que você tem uma escolha quando se trata de livros de desenvolvimento Android, então, obrigado por aprender e colaborar conosco”.

FRANK ABLESON

Page 8: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis
Page 9: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

Sobre este livroAndroid em ação, terceira edição é uma revisão e atualização da, você adivinhou, Se-gunda edição, publicada em janeiro de 2011. Este terceira edição acrescenta novo conteúdo relacionado ao avanço do Android no espaço dos tablets, bem como às melhorias em vários subsistemas dentro da plataforma Android. Assim como os an-teriores, este livro cobre temas básicos importantes, como “O que é Android” e a instalação e uso do ambiente de desenvolvimento. Nós então avançamos para exem-plos práticos de tópicos de programação básica que qualquer desenvolvedor ficará feliz de ter à mão na sua prateleira de referências. O restante dos capítulos apre-sentam exemplos de aplicativos bastante detalhados cobrindo tópicos avançados, incluindo um aplicativo completo de serviço de campo, localização e material sobre aplicativos web para Android, sensores Bluetooth, AppWidgets e adaptadores de integração. Nós incluímos ainda dois capítulos sobre a escrita de aplicativos em C — um para o lado nativo do Android e um usando o método geralmente mais aceito de empregar o Android Native Development Kit. O conteúdo mais recente cobrindo os tablets é encontrado nos capítulos 20 a 22. Os capítulos 20–22, especificamente, exigem o Android SDK 3.0 e superior, enquanto o restante do livro é compatível com as versões 2.x do Android.

Embora você possa ler este livro do começo ao fim, você também pode considerá--lo como vários livros em um. Se você é novo no Android, concentre-se primeiro no capítulo 1, no apêndice A e então no capítulo 2. Com estes fundamentos, você pode continuar nos capítulos 3–12. Os capítulos a partir do 13 são de natureza mais profunda e podem ser lidos independentemente dos demais. Os capítulos 20–22 concentram-se em tópicos importantes relacionados ao Android 3.0 e aos tablets.

Quem deve ler este livro?Escrevemos este livro tanto para programadores profissionais quanto para hobbys-tas. Muitos dos conceitos podem ser absorvidos sem conhecimento específico da linguagem Java, embora você possa obter melhor resultado se tiver habilidade em programação Java – a programação de aplicativos Android exige isso. Se tiver co-nhecimentos em programação C, C++ ou C#, você será capaz de seguir os exemplos.

Page 10: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

x ANDROID EM AÇÃO ELSEVIER

Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis para expandir o conteúdo deste livro.

RoteiroEste livro está dividido em quatro partes. A Parte 1 contém material introdutório sobre a plataforma e ambiente de desenvolvimento. A Parte 2 examina de perto as habilidades fundamentais necessárias na construção de aplicativos Android. A Parte 3 apresenta um aplicativo de maior alcance e um aplicativo Android em C Nativo. A parte 4 explora recursos adicionados à plataforma Android, fornecendo exemplos de uso da competente plataforma Android para a criação de inovadores aplicativos móveis.

Parte 1: Os fundamentos

A Parte 1 apresenta a plataforma Android, incluindo sua arquitetura e configuração do ambiente de desenvolvimento.

O Capítulo 1 lida com o background e posição da plataforma Android, incluindo comparações com outras plataformas populares como BlackBerry, iPhone e Windo-ws Mobile. Após apresentar a plataforma, o primeiro capítulo apresenta a arquitetu-ra de alto nível dos aplicativos Android e o ambiente do sistema operacional.

O Capítulo 2 guia você por um exercício de desenvolvimento passo a passo, ensi-nando-o a usar o ambiente de desenvolvimento Android, incluindo as ferramentas e conceitos chave para construção de um aplicativo . Se você nunca usou Eclipse ou nunca escreveu um aplicativo Android, este capítulo irá prepará-lo para a próxima parte do livro.

Parte 2: O ambiente de programação

A Parte 2 inclui um exame extenso dos tópicos fundamentais de programação em ambiente Android.

O Capítulo 3 cobre os componentes fundamentais da interface de usuário (IU) do Android, incluindo View e Layout. Vamos também examinar a Activity em maiores detalhes. Estes são os blocos básicos das telas e aplicativos da plataforma Android. Ao longo do caminho, vamos também tocar em outros conceitos básicos, como o acesso de recursos externos, a resposta a eventos e o ciclo de vida de um aplicativo Android.

O Capítulo 4 expande os conceitos que você aprendeu no Capítulo 3. Nós nos aprofundamos no Intent Android para demonstrar a interação entre telas, ativida-des e aplicativos inteiros. Também introduzimos e usamos o framework Service, que permite os processos de segundo plano em andamento.

O Capítulo 5 incorpora métodos e estratégias para armazenamento e recupera-ção de dados localmente. O capítulo examina o uso do sistema de arquivos, bancos de dados, o cartão SD e entidades de armazenamento específicas do Android, como as classes SharedPreferences e ContentProvider. Este capítulo começa combi-nando os conceitos fundamentais com detalhes mais realistas, como o tratamento do estado do aplicativo, o uso de um banco de dados para armazenamento perma-nente e o trabalho com SQLite.

Page 11: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

SObRE EStE lIvRO xi

O Capítulo 6 trata de armazenamento e recuperação de dados na rede. Aqui in-cluímos uma cartilha sobre redes antes de nos aprofundarmos no uso de conceitos brutos sobre redes, como soquetes no Android. A partir dali, vamos avançar para o uso do HTTP e explorar serviços web (como REST e SOAP).

O Capítulo 7 cobre a telefonia na plataforma Android. Vamos tocar em temas básicos, como originar e receber chamadas, além de tópicos mais complexos, como identificar torres de celulares e enviar ou receber mensagens SMS.

O Capítulo 8 examina como trabalhar com notificações e alarmes. Nesse capítu-lo, vamos examinar como notificar os usuários de diversos eventos, como o recebi-mento de uma mensagem SMS, além como gerenciar e ajustar alarmes.

O Capítulo 9 trata do básico da API gráfica do Android e conceitos mais avança-dos, como trabalhar com a biblioteca OpenGL ES para criar sofisticados elementos-gráficos 2D e 3D. Vamos também falar de animação e dos novos sistemas gráficos RenderScript do Android.

O Capítulo 10 examina o suporte do Android à multimídia; vamos cobrir tanto a reprodução multimídia quanto o uso da câmera e microfone para gravar seus pró-prios arquivos multimídia.

O Capítulo 11 introduz serviços baseados em localidade, onde examinamos um exemplo em que combinamos muitos dos conceitos das partes anteriores do livro em um aplicativo de mapas. Você vai aprender a usar as APIs de mapas do Android, incluindo diferentes provedores de localização e propriedades disponíveis, como construir e manipular telas relativas a mapas e como trabalhar com conceitos relati-vos à localização dentro do emulador.

Parte 3: Combinando tudo

A Parte 3 contém dois capítulos que somam ao conhecimento que você obteve antes no texto, com foco em tornar um aplicativo maior uma realidade.

O Capítulo 12 demonstra um aplicativo de serviço de campo ponto a ponto. O aplicativo inclui comunicação entre servidores, armazenamento persistente, menus de navegação de múltiplas atividades e captura de assinatura.

O Capítulo 13 explora o mundo dos aplicativos em linguagem C nativa. O SDK Android é limitado à linguagem Java, embora aplicativos nativos possam ser escritos para Android. Este capítulo vai guiá-lo por exemplos de construção de aplicativos em linguagem C para Android, incluindo o uso de bibliotecas embutidas e comu-nicações por soquete TCP quando um aplicativo Java se conecta ao seu aplicativo C. Este capítulo é útil para desenvolvedores buscando soluções além dos celulares bloqueados subsidiados pelas operadoras.

Parte 4: O amadurecimento da plataforma

A Parte 4 contém nove novos capítulos, cada um dos quais representa um tópico de desenvolvimento mais avançado.

O Capítulo 14 demonstra o uso de comunicação Bluetooth e o processamento de dados dos sensores. O aplicativo de exemplo que acompanha este capítulo, o SenseBot, permite ao usuário guiar um robô LEGO Mindstorms com seu telefone Android.

Page 12: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

xii ANDROID EM AÇÃO ELSEVIER

O Capítulo 15 explora o banco de dados de contatos do Android e demonstra a integração com uma fonte de dados externa. Em particular, este aplicativo traz o Android para a cena das redes sociais, integrando-o ao popular serviço de rede profissional LinkedIn.

O Capítulo 16 explora o mundo do desenvolvimento web. O navegador do An-droid é baseado no mecanismo de código-fonte livre WebKit, e traz ao navegador móvel capacidades de desktop. Este capítulo equipa você a criar aplicativos web atraentes e capazes para o Android.

O Capítulo 17 apresenta a tela inicial do seu aplicativo Android mostrando a você como construir um aplicativo que apresenta sua interface como um AppWidget. Além dos AppWidgets, este capítulo demonstra o BroadcastReceiver, Service e Alarms.

O Capítulo 18 mostra como localizar um aplicativo existente no mundo real. O aplicativo Field Service do Capítulo 12 é modificado para suportar múltiplos idio-mas. A versão do Capítulo 18 do aplicativo Field Service suporta inglês e espanhol.

O Capítulos 19 alcança a base do código fonte aberto do Android, usando um algoritmo popular de processamento de imagens para detecção de arestas. O algo-ritmo Sobel Edge Detection é escrito em C e compilado em uma biblioteca nativa. O aplicativo de exemplo tira uma foto com a câmera do Android e então usa esse algoritmo em C para encontrar as bordas da foto.

O Capítulo cobre o Fragments Android, um novo componente do aplicativo que foi introduzido com o Android 3.0. O Fragments propicia controle mais granular do aplicativo do que trabalhar somente com as Activitys isoladas.

O Capítulo 21 explora a barra de ações. Também introduzida com o Android 3.0, a barra de ações fornece uma aparência e comportamento consistentes para o título, ícones, ações e opções do menu do aplicativo.

O Capítulo 22 apresenta a nova API de arrastar e soltar, também introduzida com o Android 3.0. A API de arrastar e soltar permite operações interativas basea-das no toque: por exemplo, para mover ou copiar dados entre views selecionando visualmente os dados de uma view e arrastando-os para a outra view na tela. Outro exemplo é para disparar ações do dispositivo: por exemplo, compartilhar imagens arrastando uma imagem da view de uma galeria de imagens para uma view compar-tilhada.

Apêndices

Os apêndices contêm informações adicionais que não se encaixaram no fluxo do texto principal. O Apêndice A é um guia passo a passo para instalação do ambiente de desenvolvimento. Este apêndice, em conjunto com o capítulo 2, fornece toda a informação que você precisa para construir uma aplicação Android. O apêndice B demonstra como preparar e submeter um aplicativo para o Android Market — um tópico importante para todos que querem comercializar seu aplicativo .

Convenções de código e downloadsTodo código fonte no livro está em fonte de largura fixa como esta, o que a destaca do texto em volta. Em muitas listagens, o código está anotado para apontar

Page 13: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

SObRE EStE lIvRO xiii

os conceitos-chave; e marcadores numerados (como este: q) são usados às vezes para fornecer informações adicionais sobre o código. Tentamos formatar o código de modo que ele se encaixasse no espaço de página disponível no livro, adicionando algumas quebras de linha e usando os recuos com cuidado. Algumas vezes, porém, linhas muito longas incluem marcadores de continuação de linha (➥).

O código-fonte de todos os exercícios está disponível em www.elsevier.com.br/ ableson. Um arquivo Readme.txt é fornecido na pasta raiz e também na pasta de cada capítulo. Esse arquivo fornece detalhes sobre como instalar e executar o código. Exemplos de código aparecem ao longo de todo o livro. Listagens de código mais curtas aparecem em blocos de texto identificados por uma fonte monoespaçada, enquanto as listagens mais longas além da fonte também são claramente identifica-das por cabeçalhos de listagem.

Requisitos de softwareO desenvolvimento de aplicativos para Android pode ser feito no ambiente Windows XP/Vista/7, ambiente Mac OS X (somente Intel) ou ambiente Linux. O Apêndice A inclui uma descrição detalhada do ajuste do ambiente Eclipse além do plug-in An-droid Developer Tools para Eclipse.

Uma nota sobre as imagensMuitas das imagens originais da primeira edição, Unlocking Android, foram reutili-zadas na segunda e terceira edições do livro. Embora o título tenha mudado para Android em Ação durante a redação da segunda edição, mantivemos o título original do livro nas imagens e aplicativos de exemplo.

O autor onlineA compra de Android em ação, terceira edição inclui acesso gratuito ao fórum web parti-cular mantido pela Manning Publications, onde você pode fazer comentários sobre o livro, fazer perguntas técnicas e receber ajuda dos autores e outros usuários do fórum. Para acessar e se inscrever no fórum, acesse www.manning.com/Androidin-ActionThirdEdition ou www.manning.com/ableson3. Essa página fornece informa-ções sobre como acessar o fórum após se registrar, que tipo de ajuda está disponível e as regras de conduta do fórum.

O compromisso da Manning com nossos leitores é fornecer um ponto de en-contro onde o diálogo significativo entre leitores e entre leitores e os autores possa acontecer. Não é um compromisso sobre qualquer grau específico de participação por parte dos autores, cuja contribuição ao fórum é voluntária (e não paga). Sugeri-mos que você faça aos autores algumas perguntas desafiadoras, ou o interesse deles pode diminuir!

O fórum Author Online e os arquivos de discussões passadas estarão disponíveis no site web da editora enquanto o livro estiver em catálogo.

Page 14: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis
Page 15: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

Sobre a ilustração da capaA ilustração da capa de Android em ação, terceira edição foi tirada de um livro francês sobre costumes de vestimenta, Encyclopédie des Voyages, de J. G. St. Saveur, publicado em 1796. Viajar por prazer era um fenômeno relativamente novo na época e guias ilustrados como esse eram populares, apresentando ao turista e ao viajante de sofá os habitantes de outras regiões do mundo, além dos costumes regionais e uniformes da França.

A diversidade dos desenhos na Encyclopédie des Voyages fala vividamente da singula-ridade e individualidade dos países e regiões do mundo apenas 200 anos atrás. Este era um tempo onde os códigos de vestimenta de duas regiões separadas por poucas milhas identificavam as pessoas como sendo unicamente de uma ou outra região, e quando membros de uma classe social ou tribo podiam ser facilmente distinguidos pelo que estavam vestindo.

Era também um tempo em que as pessoas eram fascinadas por terras estrangeiras e lugares distantes, embora não viajassem para estes lugares exóticos elas mesmas. Os códigos de vestimenta mudaram desde então e a diversidade entre regiões e tribos, tão rica na época, desapareceu. Hoje, é difícil distinguir o habitante de um continente do de outro.

Quem sabe, olhando com otimismo, nós trocamos um mundo de diversidade cultural e visual por outro de vida pessoal mais variada. Ou uma vida mais variada e interessante técnica e intelectualmente.

Nós na Manning celebramos a criatividade, a iniciativa e a diversão do negócio dos computadores com capas baseadas em costumes nativos e tribais de dois séculos atrás trazidos à vida pelas figuras deste guia de viagem.

Page 16: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis
Page 17: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

Sumário resumido

Parte 1 O que é Android? Uma visão geral ...................1

1 n Apresentando o Android 3

2 n O ambiente de desenvolvimento do Android 34

Parte 2 Usando o Android SDK .......................................63

3 n Interfaces de usuário 65

4 n Intents e Services 103

5 n Armazenando e recuperando dados 132

6 n Redes e serviços web 162

7 n Telefonia 189

8 n Notificações e alarmes 208

9 n Elementos gráficos e animação 228

10 n Multimídia 262

11 n Trabalhando com a detecção da localização geográfica 285

Page 18: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

xviii ANDROID EM AÇÃO ELSEVIER

Parte 3 Aplicativos Android .........................................309

12 n Colocando o Android para trabalhar em um aplicativo de serviço de campo 311

13 n Compilando aplicativos Android em C 357

Parte 4 O amadurecimento da plataforma ................385

14 n Bluetooth e sensores 387

15 n Integração 406

16 n Desenvolvimento web com Android 441

17 n AppWidgets 474

18 n Localização 510

19 n Android Native Development Kit 525

20 n Fragmentos de activity 545

21 n A barra de ações do Android 3.0 560

22 n Arrastar e soltar 579

Page 19: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

Sumário

Parte 1 O que é Android? Uma visão geral ...................1

1 Apresentando o Android 31.1 A plataforma Android 41.2 Entendendo o mercado do Android 5

Operadoras de telefonia móvel n Android versus feature phones n Android versus smartphones n Android versus Android n Licenciando o Android

1.3 As camadas do Android 10Construindo sobre o kernel Linux n Executando na Dalvik VM

1.4 O Intent do desenvolvimento Android 13Criando UIs intuitivas n Intents e como eles funcionam

1.5 Os quatro tipos de componentes Android 17Activity n Service n BroadcastReceiver n ContentProvider

1.6 Entendendo o arquivo AndroidManifest.xml 251.7 Mapeando aplicativos para processos 261.8 Criando um aplicativo Android 271.9 Android 3.0 para tablets e smartphones 31

Por que desenvolver tablets Android? n Quais as novidades da plataforma Android 3.0 Honeycomb?

Page 20: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

xx ANDROID EM AÇÃO ELSEVIER

1.10 Resumo 32

2 O ambiente de desenvolvimento do Android 342.1 Apresentando o Android SDK 35

Pacotes Android essenciais n Pacotes opcionais

2.2 Explorando o ambiente de desenvolvimento 37A perspectiva Java n A perspectiva DDMS. n Ferramentas de linha de comando

2.3 Construindo um aplicativo Android no Eclipse 46O Android Project Wizard n Código do aplicativo Android n Empacotando o aplicativo

2.4 Usando o emulador Android 54Configurando o ambiente emulado n Testando seu aplicativo no emulador

2.5 Depurando seu aplicativo 612.6 Resumo 62

Parte 2 Usando o Android SDK .......................................63

3 Interfaces de usuário 653.1 Criando a Activity 67

Criando uma classe Activity n XML versus layouts programáticos n Explorando o ciclo de vida da Activity

3.2 Trabalhando com views 76Explorando views comuns n Usando um ListView n Múltiplas tarefas com Handler e Message n Criando views personalizadas n Entendendo o layout n Gerenciando o foco n Entendendo os eventos

3.3 Usando recursos 90Tipos de recursos suportados n Referenciando recursos em Java n Definindo views e layouts por meio de recursos XML n Externalizando valores n Fornecendo animações

3.4 Explorando o arquivo AndroidManifest 993.5 Resumo 102

4 Intents e Services 1034.1 Servindo o RestaurantFinder com Intent 104

Definindo Intents n Invocação implícita e explícita n Adicionando links externos ao RestaurantFinder n Encontrando seu caminho com Intents n Tirando proveito das activities fornecidas pelo Android

Page 21: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

SUMÁRIO xxi

4.2 Verificando o tempo com um URI personalizado 111Oferecendo um URI personalizado n Inspecionando um URI personalizado

4.3 Verificando o tempo com broadcast receivers 115Transmitindo um Intent n Criando um receptor

4.4 Criando um serviço de metereologia em segundo plano 117

4.5 Comunicando-se com o WeatherAlertService a partir de outros aplicativos 121Android Interface Definition Language n Binder e Parcelable n Expondo uma interface remota n Vinculando-se a um serviço n Iniciar versus vincular n Ciclo de vida de um serviço

4.6 Resumo 130

5 Armazenando e recuperando dados 1325.1 Usando preferências 133

Trabalhando com SharedPreferences n Permissões de acesso a preferências

5.2 Usando o sistema de arquivos 139Criando arquivos n Acessando arquivos n Arquivos como recursos brutos n Recursos de arquivo XML n Armazenamento externo em um cartão SD

5.3 Persistindo dados em um banco de dados 147Construindo e acessando um banco de dados n Usando a ferramenta sqlite3

5.4 Trabalhando com as classes ContentProvider 153Usando um ContentProvider existente n Criando um ContentProvider

5.5 Resumo 161

6 Redes e serviços web 1626.1 Visão geral de comunicação em rede 164

Princípios básicos de redes n Clientes e servidores

6.2 Verificando o estado da rede 1676.3 Comunicação com um soquete de servidor 1686.4 Trabalhando com HTTP 171

HTTP e java.net simples n HTTP robusto com HttpClient n Criando um helper HTTP e HTTPS

6.5 Serviços web 181POX: juntando tudo com HTTP e XML n REST n SOAP ou não SOAP, eis a questão

Page 22: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

xxii ANDROID EM AÇÃO ELSEVIER

6.6 Resumo 188

7 Telefonia 1897.1 Explorando o background da telefonia e seus

termos 190Entendendo o GSM n Entendendo o CDMA

7.2 Telefone ou não? 1927.3 Acessando informações de telefonia 193

Recuperando propriedades de telefonia n Obtendo informações de status do telefone

7.4 Interagindo com o telefone 197Usando Intents para fazer chamadas n Usando utilitários relacionados a números de telefone n Interceptando chamadas de saída

7.5 Trabalhando com mensagens: SMS 201Enviando mensagens SMS n Recebendo mensagens SMS

7.6 Resumo 206

8 Notificações e alarmes 2088.1 Apresentando o Toast 2098.2 Posicionando sua mensagem Toast 211

Fazendo uma view Toast personalizada

8.4 Apresentando notificações 214A classe Notification n Notificando o usuário com o simples pressionar de um botão

8.5 Criando uma view Notification personalizada 2188.6 Apresentando alarmes 220

Criando um exemplo simples de alarme n Usando notificações com alarmes

8.4 Resumo 227

9 Elementos gráficos e animação 2289.1 Desenhando elementos gráficos no Android 229

Desenhando com XML n Explorando formas XML drawable

9.2 Criando animações com a API Graphics do Android 234Animação quadro a quadro do Android n Criando uma animação programaticamente

9.3 Apresentando a OpenGL for Embedded Systems 240Criar um contexto OpenGL n Desenhando um retângulo com a OpenGL ES n Formas e superfícies tridimensionais com OpenGL ES

Page 23: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

SUMÁRIO xxiii

9.4 Apresentando o RenderScript do Android 253Vantagens e desvantagens do RenderScript n Construindo um aplicativo RenderScript

9.5 Resumo 261

10 Multimídia 26210.1 Introdução à multimídia e ao Stagefright 263

Visão geral do Stagefright

10.2 Reproduzindo áudio 26510.3 Reproduzindo vídeo 26610.4 Capturando mídia 268

Entendendo a câmera n Capturando áudio n Gravando vídeo

10.5 Resumo 284

11 Trabalhando com a detecção da localização geográfica 28511.1 Simulando sua localização dentro do emulador 287

Enviando suas coordenadas com a ferramenta DDMS n O GPS Exchange Format n A Keyhole Markup Language do Google Earth

11.2 Usando LocationManager e LocationProvider 292Acessando dados de localização com LocationManager n Usando um LocationProvider n Recebendo atualizações de localização com LocationListener

11.3 Trabalhando com mapas 299Estendendo MapActivity n Usando uma MapView n Inserindo dados em um mapa com um Overlay

11.4 Convertendo lugares e endereços com o Geocoder 30611.5 Resumo 308

Parte 3 Aplicativos Android .........................................309

12 Colocando o Android para trabalhar em um aplicativo de serviço de campo 31112.1 Projetando um aplicativo Android do mundo real 312

Requisitos básicos do aplicativo n Gerenciando os dados n Arquitetura e integração do aplicativo

12.2 Mapeando o fluxo do aplicativo 316Mapeando o aplicativo de serviço de campo n Lista de arquivos-fonte n AndroidManifest.xml do aplicativo de serviço de campo

Page 24: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

xxiv ANDROID EM AÇÃO ELSEVIER

12.3 Código-fonte do aplicativo 321SplashActivity n Preferências usadas pela FieldService Activity n Implementando a FieldService Activity n Configurações n Gerenciando dados do trabalho

12.4 Código-fonte para o gerenciamento dos trabalhos 335RefreshJobs n Gerenciando os trabalhos: a Activity ManageJobs n Lidando com um trabalho com a Activity ShowJob n A captura de uma assinatura com a Activity CloseJob

12.5 Código do servidor 353Interface do usuário expedidor n Banco de dados n Código de expedição em PHP n Código de integração móvel em PHP

12.6 Resumo 356

13 Compilando aplicativos Android em C 35713.1 Compilando aplicativos Android sem o SDK 358

As ferramentas de compilação e vinculador do C n Compilando um aplicativo Hello World n Instalando e executando o aplicativo n Script de compilação de um aplicativo C

13.2 Resolvendo o problema com vinculação dinâmica 364Bibliotecas de sistema Android n Compilando um aplicativo dinamicamente vinculado n exit() versus return() n Código de partida

13.3 Que horas são? O DayTime Server 371Aplicativo DayTime Server n daytime.c n O banco de dados SQLite n Compilando e executando o DayTime Server

13.4 DayTime Client 379Activity n Soquete de cliente n Testando o DayTime Client

13.5 Resumo 381

Parte 4 O amadurecimento da plataforma ................385

14 Bluetooth e sensores 38714.1 Explorando as capacidades do Android Bluetooth 388

Substituindo cabos n Papéis primários e secundários e soquetes n Confiando em um dispositivo n Conectando-se a um dispositivo remoto n Capturando eventos de Bluetooth n Permissões Bluetooth

14.2 Interagindo com o SensorManager 395Tipos de sensores n Lendo valores de sensor n Ativação e desativação de sensores

Page 25: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

SUMÁRIO xxv

14.3 Criando o aplicativo SenseBot 399Interface do usuário n Interpretando os valores do sensor n Guiando o robô n Comunicação com o robô

14.4 Resumo 405

15 Integração 40615.1 Entendendo o modelo de contato do Android 407

Escolhendo registros abertos n Lidando com múltiplas contas n Uma visualização unificadora a partir de diversos armazenamentos remotos n Compartilhando o playground

15.2 Introdução ao LinkedIn 41215.3 Gerenciando contatos 414

Tirando proveito do aplicativo Contacts integrado n Solicitando operações a partir de seu aplicativo n Lendo e modificando os contatos diretamente no banco de dados n Adicionando contatos

15.4 Mantendo tudo junto 422O sonho da sincronização n Definindo contas n Contando segredos: o serviço AccountManager

15.5 Criando uma conta no LinkedIn 426Não amigável para celulares n Autenticando o LinkedIn

15.6 Sincronizando com o backend usando SyncAdapter 433O ciclo de vida da sincronização n Sincronizando dados do LinkedIn

15.7 Conclusão: o LinkedIn em ação 436Finalizando o projeto LinkedIn n Dica para solução de problemas n Seguindo em frente

15.8 Resumo 439

16 Desenvolvimento web Android 44116.1 O que é desenvolvimento web Android? 442

Apresentando o WebKit n Examinando as opções de arquitetura

16.2 Otimizando aplicativos web para o Android 444Projetando para uso móvel n Adicionando o tag viewport n Carregando conteúdo seletivamente n Interrogando o agente do usuário n A pesquisa de mídia n Considerando um aplicativo voltado para dispositivos móveis

16.3 Armazenando dados diretamente no navegador 451Configurando as coisas n Examinando o código n Interface de usuário n Abrindo o banco de dados n Desempacotando a função transaction n Inserindo e excluindo linhas n Testando o aplicativo com as ferramentas WebKit

Page 26: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

xxvi ANDROID EM AÇÃO ELSEVIER

16.4 Construindo um aplicativo híbrido 460Examinando o controle do navegador n Preparando o controle n Implementando o handler JavaScript n Acessando o código de JavaScript n Cavando o JavaScript n Questões de segurança n Implementando um WebViewClient n Aprimorando o navegador n Detectando eventos de navegação n Implementando WebChromeClient

16.5 Resumo 473

17 AppWidgets 47417.1 Apresentando o AppWidget 475

O que é um AppWidget? n Estratégias de implementação do AppWidget

17.2 Apresentando o SiteMonitor 478Os benefícios do SiteMonitor n A experiência do usuário

17.3 Arquitetura do aplicativo SiteMonitor 482Visão panorâmica do aplicativo n Arquivo por arquivo

17.4 Gerenciamento de dados de AppWidget 48517.5 Implementando o AppWidgetProvider 488

Inventário do método AppWidgetProvider n Implementando SiteMonitorWidgetImpl n Lidando com widgets zumbis

17.6 Exibindo um AppWidget com RemoteViews 493Trabalhando com RemoteViews n UpdateOneWidget explicado

17.7 Configurando uma instância de AppWidget 496Metadados de AppWidget n Trabalhando com dados de Intent n Confirmando a criação de um widget

17.8 Atualizando o AppWidget 500Comparando services a alarms n Disparando a atualização n Atualizando os widgets, finalmente!

17.9 Unindo tudo com AndroidManifest.xml 50717.10 Resumo 508

18 Localização 51018.1 A necessidade da localização 51118.2 Explorando locais 51218.3 Estratégias para localizar um aplicativo 513

Identificando locais e dados alvo n Identificando e gerenciando strings n Drawables e layouts n Datas, horas, números e moedas n Trabalhando com a equipe de tradução

18.4 Alavancando as capacidades de recursos Android 518Mais que o local n Designando strings nos recursos

Page 27: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

SUMÁRIO xxvii

18.5 Localização dinâmica em Java 52018.6 Formatando strings localizadas 52218.7 Obstáculos para a localização 52318.8 Resumo 524

19 Android Native Development Kit 52519.1 Apresentando o NDK 526

Usos do NDK n Examinando o NDK

19.2 Construindo um aplicativo com o NDK 528Demonstrando o aplicativo completo n Examinando a estrutura do projeto

19.3 Construindo a biblioteca JNI 530Entendendo o JNI n Implementando a biblioteca n Compilando a biblioteca JNI

19.4 Construindo a interface de usuário 537Layout da interface de usuário n Tirando uma foto n Encontrando as bordas

19.5 Integrando o NDK ao Eclipse 54219.6 Resumo 544

20 Fragmentos de activity 54520.1 Ciclo de vida de fragmento 54620.2 Criando de fragmentos e layouts de fragmento 547

Crie a subclasse do fragmento n Definindo um layout de fragmento n Incluindo o fragmento dentro da activity

20.3 Fragmentos de segundo plano 55320.4 O gerenciador de fragmentos 55520.5 Transações de fragmento 55620.6 Pilha de fragmentos 55620.7 O Android Compatibility Package 55720.8 Resumo 559

21 A barra de ações do Android 3.0 56021.1 Introdução à barra de ações 56021.2 Visão geral das classes ActionBar 56221.3 Opções de exibição da barra de ações 563

Nome e ícone do aplicativo n Modos de navegação

21.4 Itens de ação 571O ícone do aplicativo como um item de ação n Action views

Page 28: Android em ação Terceira edição - portalandroid.org · Experiência prévia em Eclipse é útil, mas não necessária. Diversos recursos sobre Java e Eclipse estão disponíveis

xxviii ANDROID EM AÇÃO ELSEVIER

21.5 Removendo, mostrando e ocultando a barra de ações 575

21.6 Estilizando a barra de ações 57621.7 Resumo 578

22 Arrastar e soltar 57922.1 As classes de arrastar e soltar 58022.2 Operações de arrastar e soltar 58222.3 O construtor de sombras 58322.4 Eventos de arrastar 58522.5 Iniciando operações de arrastar 58622.6 Ouvindo eventos de arrastar e soltar 58722.7 Respondendo a operações de início de arrastar 58822.8 Tratando operações de soltar 58922.9 Resumo 590

Apêndice A Instalando o Android SDK 591

Apêndice B Publicando aplicativos 601

Índice 613