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