Android em ação Terceira edição
Transcrição
Android em ação Terceira edição
Android em ação Terceira edição 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 Android em ação Terceira edição W. FRANK ABLESON ROBI SEN CHRIS KING C. ENRIQUE ORTIZ Tradução Eduardo Kraszczuk Edson Furmankiewicz Do original: Android in Action, Third Edition de W. Frank Ableson, Robi Sen e Chris King Traduçã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. Revisão: Edson Rosa Editoração Eletrônica: Docware Traduções Técnicas Elsevier Editora Ltda. Conhecimento sem Fronteiras Rua Sete de Setembro, 111 - 16o andar 20050-006 - Centro - Rio de Janeiro - RJ - Brasil Rua Quintana, 753 - 8o andar 04569-011 - Brooklin - São Paulo - SP - Brasil Serviço de Atendimento ao Cliente 0800-0265340 [email protected] ISBN 978-85-352-4809-8 ISBN da edição original: 978-1-617290-50-3 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-fonte Sindicato Nacional dos Editores de Livros, RJ W178m Ableson, W. Frank Android 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 índice ISBN 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 Agradecimentos Escrever 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. Primeiro, 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 lancinante 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 editorial 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. vi ANDROID EM AÇÃO ELSEVIER Por último, gostaríamos de agradecer ao atencioso encorajamento dos assinantes da MEAP, que forneceram feedback ao longo do caminho. O livro está melhor graças a suas contribuições. Frank Ableson Agradeç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 capacidade 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 valiosamente para o produto final e deve estar cansado de limpar meus escritos e elementos 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 King Sou 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 recente 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 contribuí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 Sen Agradeç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 gostaria 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 enquanto estávamos terminando o livro. C. Enrirque Ortiz A meus pais, família, amigos e colegas, que influenciaram meu trabalho e o tornaram empolgante. Prefácio A 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 expandir, 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 praticamente 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 desconhecidas 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á estamos 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ê precisa 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 Sobre este livro Android em ação, terceira edição é uma revisão e atualização da, você adivinhou, Segunda 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 anteriores, 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 exemplos 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 apresentam 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 hobbystas. 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 conhecimentos em programação C, C++ ou C#, você será capaz de seguir os exemplos. 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. Roteiro Este 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 Windows Mobile. Após apresentar a plataforma, o primeiro capítulo apresenta a arquitetura 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, ensinando-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, atividades 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 combinando os conceitos fundamentais com detalhes mais realistas, como o tratamento do estado do aplicativo, o uso de um banco de dados para armazenamento permanente e o trabalho com SQLite. Sobre este livro xi O Capítulo 6 trata de armazenamento e recuperação de dados na rede. Aqui incluí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ítulo, vamos examinar como notificar os usuários de diversos eventos, como o recebimento 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çados, como trabalhar com a biblioteca OpenGL ES para criar sofisticados elementosgrá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 relativos à 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 comunicaçõ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. 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 Android é 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 idiomas. 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 algoritmo 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 baseadas 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 compartilhada. 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 downloads Todo 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 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 identificadas por cabeçalhos de listagem. Requisitos de software O 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 Android Developer Tools para Eclipse. Uma nota sobre as imagens Muitas das imagens originais da primeira edição, Unlocking Android, foram reutilizadas 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 online A compra de Android em ação, terceira edição inclui acesso gratuito ao fórum web particular 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/AndroidinActionThirdEdition 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 encontro 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). Sugerimos 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. Sobre a ilustração da capa A 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 singularidade 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. 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 xviii Parte 3 ANDROID EM AÇÃO ELSEVIER 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 Sumário Parte 1 O que é Android? Uma visão geral....................1 1 Apresentando o Android 3 1.1 A plataforma Android 4 1.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 10 Construindo sobre o kernel Linux n Executando na Dalvik VM 1.4 O Intent do desenvolvimento Android 13 Criando UIs intuitivas n Intents e como eles funcionam 1.5 Os quatro tipos de componentes Android 17 Activity n Service n BroadcastReceiver n ContentProvider 1.6 1.7 1.8 1.9 Entendendo o arquivo AndroidManifest.xml 25 Mapeando aplicativos para processos 26 Criando um aplicativo Android 27 Android 3.0 para tablets e smartphones 31 Por que desenvolver tablets Android? n Quais as novidades da plataforma Android 3.0 Honeycomb? xx ANDROID EM AÇÃO ELSEVIER 1.10Resumo 32 2 O ambiente de desenvolvimento do Android 34 2.1 Apresentando o Android SDK 35 Pacotes Android essenciais n Pacotes opcionais 2.2 Explorando o ambiente de desenvolvimento 37 A perspectiva Java n A perspectiva DDMS. n Ferramentas de linha de comando 2.3 Construindo um aplicativo Android no Eclipse 46 O Android Project Wizard n Código do aplicativo Android n Empacotando o aplicativo 2.4 Usando o emulador Android 54 Configurando o ambiente emulado n Testando seu aplicativo no emulador 2.5 Depurando seu aplicativo 61 2.6 Resumo 62 Parte 2 Usando o Android SDK........................................63 3 Interfaces de usuário 65 3.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 76 Explorando 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 90 Tipos 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 99 3.5 Resumo 102 4 Intents e Services 103 4.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 SUMÁRIO xxi 4.2 Verificando o tempo com um URI personalizado 111 Oferecendo um URI personalizado n Inspecionando um URI personalizado 4.3 Verificando o tempo com broadcast receivers 115 Transmitindo 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 121 Android 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 132 5.1 Usando preferências 133 Trabalhando com SharedPreferences n Permissões de acesso a preferências 5.2 Usando o sistema de arquivos 139 Criando 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 147 Construindo e acessando um banco de dados n Usando a ferramenta sqlite3 5.4 Trabalhando com as classes ContentProvider 153 Usando um ContentProvider existente n Criando um ContentProvider 5.5 Resumo 161 6 Redes e serviços web 162 6.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 167 6.3 Comunicação com um soquete de servidor 168 6.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 181 POX: juntando tudo com HTTP e XML n REST n SOAP ou não SOAP, eis a questão xxii ANDROID EM AÇÃO ELSEVIER 6.6 Resumo 188 7 Telefonia 189 7.1 Explorando o background da telefonia e seus termos 190 Entendendo o GSM n Entendendo o CDMA 7.2 Telefone ou não? 192 7.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 197 Usando 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 201 Enviando mensagens SMS n Recebendo mensagens SMS 7.6 Resumo 206 8 Notificações e alarmes 208 8.1 Apresentando o Toast 209 8.2 Posicionando sua mensagem Toast 211 Fazendo uma view Toast personalizada 8.4 Apresentando notificações 214 A classe Notification n Notificando o usuário com o simples pressionar de um botão 8.5 Criando uma view Notification personalizada 218 8.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 228 9.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 234 Animação quadro a quadro do Android n Criando uma animação programaticamente 9.3 Apresentando a OpenGL for Embedded Systems 240 Criar um contexto OpenGL n Desenhando um retângulo com a OpenGL ES n Formas e superfícies tridimensionais com OpenGL ES SUMÁRIO xxiii 9.4 Apresentando o RenderScript do Android 253 Vantagens e desvantagens do RenderScript n Construindo um aplicativo RenderScript 9.5 Resumo 261 10 Multimídia 262 10.1 Introdução à multimídia e ao Stagefright 263 Visão geral do Stagefright 10.2Reproduzindo áudio 265 10.3Reproduzindo vídeo 266 10.4Capturando mídia 268 Entendendo a câmera n Capturando áudio n Gravando vídeo 10.5Resumo 284 11 Trabalhando com a detecção da localização geográfica 285 11.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 292 Acessando dados de localização com LocationManager n Usando um LocationProvider n Recebendo atualizações de localização com LocationListener 11.3 Trabalhando com mapas 299 Estendendo MapActivity n Usando uma MapView n Inserindo dados em um mapa com um Overlay 11.4 Convertendo lugares e endereços com o Geocoder 306 11.5Resumo 308 Parte 3 Aplicativos Android..........................................309 12 Colocando o Android para trabalhar em um aplicativo de serviço de campo 311 12.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 316 Mapeando o aplicativo de serviço de campo n Lista de arquivosfonte n AndroidManifest.xml do aplicativo de serviço de campo xxiv ANDROID EM AÇÃO ELSEVIER 12.3 Código-fonte do aplicativo 321 SplashActivity 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 335 RefreshJobs 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 353 Interface 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.6Resumo 356 13 Compilando aplicativos Android em C 357 13.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 364 Bibliotecas 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 371 Aplicativo DayTime Server n daytime.c n O banco de dados SQLite n Compilando e executando o DayTime Server 13.4DayTime Client 379 Activity n Soquete de cliente n Testando o DayTime Client 13.5Resumo 381 Parte 4 O amadurecimento da plataforma.................385 14 Bluetooth e sensores 387 14.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 395 Tipos de sensores n Lendo valores de sensor n Ativação e desativação de sensores SUMÁRIO xxv 14.3 Criando o aplicativo SenseBot 399 Interface do usuário n Interpretando os valores do sensor n Guiando o robô n Comunicação com o robô 14.4Resumo 405 15 Integração 406 15.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 412 15.3Gerenciando 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 422 O sonho da sincronização n Definindo contas n Contando segredos: o serviço AccountManager 15.5 Criando uma conta no LinkedIn 426 Não amigável para celulares n Autenticando o LinkedIn 15.6 Sincronizando com o backend usando SyncAdapter 433 O ciclo de vida da sincronização n Sincronizando dados do LinkedIn 15.7 Conclusão: o LinkedIn em ação 436 Finalizando o projeto LinkedIn n Dica para solução de problemas n Seguindo em frente 15.8Resumo 439 16 Desenvolvimento web Android 441 16.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 444 Projetando 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 451 Configurando 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 xxvi ANDROID EM AÇÃO ELSEVIER 16.4 Construindo um aplicativo híbrido 460 Examinando 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.5Resumo 473 17 AppWidgets 474 17.1 Apresentando o AppWidget 475 O que é um AppWidget? n Estratégias de implementação do AppWidget 17.2 Apresentando o SiteMonitor 478 Os benefícios do SiteMonitor n A experiência do usuário 17.3 Arquitetura do aplicativo SiteMonitor 482 Visão panorâmica do aplicativo n Arquivo por arquivo 17.4 Gerenciamento de dados de AppWidget 485 17.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 493 Trabalhando com RemoteViews n UpdateOneWidget explicado 17.7 Configurando uma instância de AppWidget 496 Metadados de AppWidget n Trabalhando com dados de Intent n Confirmando a criação de um widget 17.8 Atualizando o AppWidget 500 Comparando services a alarms n Disparando a atualização n Atualizando os widgets, finalmente! 17.9 Unindo tudo com AndroidManifest.xml 507 17.10 Resumo 508 18 Localização 510 18.1 A necessidade da localização 511 18.2Explorando locais 512 18.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 518 Mais que o local n Designando strings nos recursos SUMÁRIO xxvii 18.5 Localização dinâmica em Java 520 18.6 Formatando strings localizadas 522 18.7 Obstáculos para a localização 523 18.8Resumo 524 19 Android Native Development Kit 525 19.1 Apresentando o NDK 526 Usos do NDK n Examinando o NDK 19.2 Construindo um aplicativo com o NDK 528 Demonstrando o aplicativo completo n Examinando a estrutura do projeto 19.3 Construindo a biblioteca JNI 530 Entendendo o JNI n Implementando a biblioteca n Compilando a biblioteca JNI 19.4 Construindo a interface de usuário 537 Layout da interface de usuário n Tirando uma foto n Encontrando as bordas 19.5 Integrando o NDK ao Eclipse 542 19.6Resumo 544 20 Fragmentos de activity 545 20.1 Ciclo de vida de fragmento 546 20.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 553 20.4 O gerenciador de fragmentos 555 20.5 Transações de fragmento 556 20.6 Pilha de fragmentos 556 20.7 O Android Compatibility Package 557 20.8Resumo 559 21 A barra de ações do Android 3.0 560 21.1 Introdução à barra de ações 560 21.2 Visão geral das classes ActionBar 562 21.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 571 O ícone do aplicativo como um item de ação n Action views 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 576 21.7Resumo 578 22 Arrastar e soltar 579 22.1 As classes de arrastar e soltar 580 22.2 Operações de arrastar e soltar 582 22.3 O construtor de sombras 583 22.4 Eventos de arrastar 585 22.5 Iniciando operações de arrastar 586 22.6 Ouvindo eventos de arrastar e soltar 587 22.7 Respondendo a operações de início de arrastar 588 22.8 Tratando operações de soltar 589 22.9Resumo 590 Apêndice A Instalando o Android SDK 591 Apêndice B Publicando aplicativos 601 Índice 613