Desenvolvimento de Aplicativos
Wireless para AndroidTM
Volume 1
Fundamentos do Android
Terceira Edição
Lauren Darcey
Shane Conder
Do original:
Android Wireless Application Development Vol. 1: Android Essentials – Third Edition
Copyright©
© 2012 Editora Ciência Moderna
©
© ! "
#
$
%
&&
'
()*
+%,-
Editor: Paulo André P. Marques
Produtora Editorial: Laura Santos Souza
Diagramação: Daniel Jara
Tradução: Angelo Giuseppe Meira Costa (angico)
Capa: Daniel Jara (Baseada na Original)
Assistente Editorial: Amanda Lima da Costa
Várias Marcas Registradas aparecem no decorrer deste livro. Mais do que
simplesmente listar esses nomes e informar quem possui seus direitos de exploração, ou
ainda imprimir os logotipos das mesmas, o editor declara estar utilizando tais nomes
apenas para fins editoriais, em benefício exclusivo do dono da Marca Registrada, sem
intenção de infringir as regras de sua utilização. Qualquer semelhança em nomes
próprios e acontecimentos será mera coincidência.
FICHA CATALOGRÁFICA
DARCEY, Lauren. CONDER, Shane.
Desenvolvimento de Aplicativos Wireless para Android
Vol. 1 – Fundamentos do Android – Terceira Edição
Rio de Janeiro: Editora Ciência Moderna Ltda., 2012.
1. Informática; 2. Linguagem de programação.
I — Título
ISBN: 978-85-399-0316-0
CDD 001.642
005.133
!"#$%#&'%#
(!)"'*""#'&"+,!)"'*""#'&-$
&.!
/
0 111
0
#$+'" Dedicatória
Este livro é dedicado a Chickpea.
Introdução
Tendo por pioneira a Open Handset Alliance e o Google, o Android é uma
popular plataforma móvel de código aberto e gratuita que abalou o mundo sem
fios. Este livro, e o próximo volume, Android Wireless Application Development
Volume II: Advanced Topics, oferece diretriz abrangente para equipes de
desenvolvimento de software sobre projeto, desenvolvimento, teste, depuração
e distribuição de aplicativos Android profissionais. Se você é desenvolvedor
móvel veterano, poderá encontrar dicas e truques para organizar o processo
de desenvolvimento e tirar vantagem das funcionalidades únicas do Android.
Se você é novo no desenvolvimento móvel, estes livros fornecerão tudo de que
você precisa para realizar uma transição transparente do desenvolvimento de
software tradicional para o desenvolvimento móvel – especificamente, sua
plataforma mais promissora: o Android.
Quem deve ler este livro
Este livro inclui dicas para o desenvolvimento móvel de sucesso com base
em nossos anos na indústria móvel, e cobre tudo o que você precisa saber para
levar um projeto Android de sucesso, do conceito à finalização. Nós cobrimos
como o processo de software móvel difere do desenvolvimento de software
tradicional, incluindo truques para poupar tempo valioso e as armadilhas a
evitar. Independente do tamanho de seu projeto, este livro é para você.
Este livro foi escrito para várias públicos:
ѩ
ѩ
Desenvolvedores de software que querem aprender a desenvolver
aplicativos Android profissionais. A massa deste livro é destinada
aos desenvolvedores de software com experiência em Java que
não necessariamente têm experiência no desenvolvimento móvel.
Desenvolvedores mais maduros de aplicativos móveis podem aprender a
tirar vantagem do Android e de como ele difere de outras tecnologias do
mercado atual de desenvolvimento móvel;
Pessoal de controle de qualidade com a tarefa de testar aplicativos
Android. Sejam eles de teste interno ou externo, os engenheiros de
controle de qualidade podem achar este livro valioso. Nós dedicamos
vários capítulos às questões de CQ móvel, incluindo tópicos tais como o
desenvolvimento de sólidos planos de teste e de sistemas de rastreamento
de defeitos para aplicativos móveis, como gerenciar aparelhos, e como
testar aplicativos exaustivamente, usando todas as ferramentas Android
disponíveis;
VI
Desenvolvimento de Aplicativos Wireless para Android
ѩ
ѩ
Gerentes de projeto planejando e gerenciando equipes de desenvolvimento
Android. Os gerentes podem usar este livro para ajudar a planejar,
contratar e executar projetos Android do começo ao fim. Nós cobrimos
o gerenciamento de riscos de projeto e como manter os projetos Android
rodando sem problemas;
Outros públicos. Este livro é útil não só para o desenvolvedor de
software, mas também para a empresa em busca de potenciais aplicativos
de mercado vertical, para o empreendedor que está pensando num
aplicativo bacana para celular, e para quem procura alguma diversão
com seu novo celular. Empresas procurando avaliar o Android para
suas necessidades específicas (incluindo análise de viabilidade) também
podem achar valiosa a informação fornecida. Qualquer pessoa com um
aparelho Android e uma boa ideia para um aplicativo móvel pode pôr em
uso a informação fornecida neste livro para diversão e ganho.
Questões chaves respondidas neste volume
Este volume do livro responde as seguintes questões:
1. Que é o Android? Como as versões do SDK diferem?
2. Como o Android é diferente de outras tecnologias móveis, e como os
desenvolvedores podem tirar vantagem dessas diferenças?
3. Como os desenvolvedores usam o Ambiente de Desenvolvimento Eclipse
para Java para desenvolver e depurar aplicativos Android no simulador
e nos aparelhos?
4. Como os aplicativos Android são estruturados?
5. Como os desenvolvedores projetam interfaces de usuário robustas para
móveis – especificamente para o Android?
6. Que capacidades o SDK do Android tem e como os desenvolvedores
podem usá-las?
7. Como o processo de desenvolvimento móvel difere do desenvolvimento
para desktop tradicional?
8. Que estratégias de desenvolvimento funcionam melhor para o
desenvolvimento Android?
9. O que os gerentes, desenvolvedores e testadores precisa procurar, quando
planejando, desenvolvendo e testando um aplicativo de desenvolvimento
móvel?
10. Como as equipes móveis projetam aplicativos Android à prova de falhas
para publicação?
Introdução
VII
11. Como as equipes móveis empacotam aplicativos Android para
distribuição?
12. Como as equipes móveis ganham dinheiro com aplicativos Android?
13. E, por fim, o que há de novo nesta edição do livro?
Como estes livros estão estruturados
Nós escrevemos a primeira edição deste livro antes do SDK do Android ser
liberado. Agora, três anos e 14 liberações do SDK do Android depois, há tanta coisa
a falar que tivemos de dividir o conteúdo do Desenvolvimento de Aplicativos
Wireless para o Android em dois volumes separados para esta terceira edição.
O Desenvolvimento de Aplicativos Wireless para o Android Volume I:
Fundamentos do Android foca nos fundamentos do Android, incluindo a
configuração de seu ambiente de desenvolvimento, o entendimento do ciclo
de vida do aplicativo, o design da interface de usuário, o desenvolvimento para
diferentes tipos de dispositivos, e o processo do software móvel, do design e
desenvolvimento até os testes e a publicação de aplicativos de nível comercial.
O Android Wireless Application Development Volume II: Advanced Topics
foca nos tópicos avançados, incluindo a exploração de várias APIs do Android
para segmentação, rede, serviços baseados em localização, sensores de hardware,
animação, gráficos, e outros mais. A cobertura dos componentes avançados
dos aplicativos Android, tais como serviços, bases de dados de aplicativos,
provedores de conteúdo e intenções, também está incluída. Os desenvolvedores
aprendem a projetar componentes avançados de interface de usuário e integrar
profundamente seus aplicativos na plataforma. Por fim, os desenvolvedores
aprendem a estender seus aplicativos além dos limites tradicionais, usando
funcionalidades opcionais da plataforma Android, incluindo o Android Native
Development Kit (NDK), o serviço Cloud-To-Device Messaging (C2DM), as APIs
In-Application Billing do Android Market, as APIs do Google Analytics, e outros
mais.
O Desenvolvimento de Aplicativos Wireless para o Android Volume I:
Fundamentos do Android está dividido em seis partes. As quatro primeiras
partes são primariamente de interesse dos desenvolvedores; a parte V fornece
muitas informações úteis para gerentes de projeto e pessoal de controle de
qualidade, bem como para desenvolvedores. A parte VI inclui vários apêndices
úteis para ajudar você a ficar a par das ferramentas mais importantes do Android.
Aqui está uma visão geral das várias partes deste livro:
VIII
Desenvolvimento de Aplicativos Wireless para Android
ʘ Parte I: Visão Geral da Plataforma Android
A parte I oferece uma introdução ao Android, explicando como ele difere de
outras plataformas móveis. Você se familiarizará com o SDK do Android e
suas ferramentas, instalará as ferramentas de desenvolvimento, e escreverá e
rodará seu primeiro aplicativo Android – no simulador e num aparelho;
ʘ Parte II: Fundamentos de aplicativos Android
A parte II apresenta os princípios de design necessários para se escrever
aplicativos Android. Você aprenderá como os aplicativos Android são
estruturados e como incluir recursos, tais como strings, gráficos e
componentes da interface de usuário em seus projetos;
ʘ Parte III: Fundamentos de design de interfaces de usuário do Android
A parte III mergulha mais fundo em como as interfaces de usuário são
projetadas no Android. Você aprenderá sobre o elemento central da interface
de usuário no Android: a View. Você também aprenderá sobre os controles
mais comuns da interface de usuário fornecidos no SDK do Android;
ʘ Parte IV: O essencial do design de aplicativos Android
A parte IV cobre as funcionalidades usadas pela maioria dos aplicativos
Android, incluindo o armazenamento persistente de dados de aplicativos
usando preferências e o trabalho com arquivos, diretórios e provedores de
conteúdo. Você também aprenderá a projetar aplicativos que rodarão sem
problemas em muitos dispositivos Android diferentes;
ʘ Parte V: Publicando e distribuindo aplicativos Android
A parte V cobre o processo de desenvolvimento de software para móveis, do
início ao fim, com dicas e truques para o gerentes de projetos, desenvolvedores
de software, e pessoal de controle de qualidade;
ʘ Parte VI: Apêndices
A parte VI inclui dois guias úteis de iniciação rápida para as ferramentas de
desenvolvimento Android – o simulador e o DDMS – bem como um apêndice
de dicas e truques para o Eclipse.
Visão geral das mudanças nesta edição
Quando começamos a escrever a primeira edição deste livro, não havia
dispositivos Android no mercado. Um dispositivo Android se tornou disponível
Introdução
IX
logo depois que começamos a escrever, e ele só estava disponível nos Estados
Unidos. Hoje, há centenas de dispositivos sendo lançados em todo o mundo –
smartphones, tablets, leitores de e-books, e dispositivos especiais, tal como a
Google TV. A plataforma Android passou por mudanças extensivas, desde que
a primeira edição deste livro foi publicada. O SDK do Android tem muitas
novas funcionalidades e as ferramentas de desenvolvimento receberam muitas
atualizações muito necessárias. O Android, como tecnologia, agora está num
sólido patamar, dentro do mercado móvel.
Nesta nova edição, nós aproveitamos a oportunidade para fazer um sério
exame do conteúdo do livro. Mas não se preocupe, ele ainda é o livro que os
leitores adoraram da primeira (e segunda!) vez; ele só está maior, melhor e
mais abrangente. Para cobrir mais dos empolgantes tópicos disponíveis para
os desenvolvedores Android, nós tivemos de dividir o livro em dois volumes.
Além de adicionar toneladas de conteúdo novo, nós refizemos os testes e
atualizamos todo o conteúdo existente (texto e código de amostra) para uso com
os SDKs do Android mais recentes disponíveis, mantendo, ao mesmo tempo,
a compatibilidade retroativa. A comunidade de desenvolvimento Android é
diversa, e nós objetivamos suportar todos os desenvolvedores, independente dos
dispositivos para os quais eles estão desenvolvendo. Isso inclui desenvolvedores
que precisam objetivar quase todas as plataformas, de forma que a cobertura em
algumas áreas chaves de SDKs mais antigos continua a ser incluída, porque essa
é, frequentemente, a opção mais razoável para compatibilidade.
Aqui estão alguns dos destaques dos acréscimos e melhorias que fizemos
nesta edição:
ѩ
ѩ
ѩ
ѩ
ѩ
ѩ
Cobertura das melhores e mais recentes ferramentas e utilitários do Android;
Atualizações a todos os capítulos existentes, frequentemente com algumas seções inteiramente novas;
Novos capítulos, que cobrem novas funcionalidades do SDK ou que se
expandem além daquelas cobertas em edições anteriores;
Aplicativos e código de amostra atualizados, convenientemente organizados por capítulo;
Tópicos como os arquivos de manifesto do Android, provedores de conteúdo, projeto de aplicativos, e testes, agora têm seus próprios capítulos;
Cobertura de tópicos quentes, como a compatibilidade de aplicativos, o
projeto para diferentes dispositivos, e o trabalho com componentes de
interface de usuário relativamente novos, tais como os fragmentos;
X
Desenvolvimento de Aplicativos Wireless para Android
ѩ
Ainda mais dicas e truques de primeira, para ajudar você a projetar,
desenvolver e testar aplicativos para diferentes dispositivos alvos,
incluindo um capítulo totalmente novo sobre o tratamento de problemas
de compatibilidade.
Como você pode ver, nós cobrimos muitas das funcionalidades mais quentes
e empolgantes que o Android tem a oferecer. Nós não pegamos leve nesta revisão;
tocamos em cada capítulo existente, atualizamos conteúdo e adicionamos muitos
capítulos novos, também. Por fim, incluímos muitos acréscimos, esclarecimentos
e, sim, até algumas correções com base no feedback de nossos fantásticos (e
meticulosos) leitores. Obrigado!
Ambiente de desenvolvimento usado neste livro
O código Android neste livro foi escrito usando os seguintes ambientes de
desenvolvimento:
1.
2.
3.
4.
5.
Windows 7 e Mac OS X 10.7.x;
IDE Eclipse Java versão 3.7 (Indigo) e versão 3.6 (Helios);
Complemento JDT para o Eclipse e and Web Tools Platform (WTP);
Kit de desenvolvimento Java SE (JDK) 6 Update 26;
SDK do Android versão 2.3.4, API nível 10 (Gingerbread MR1); SDK do
Android versão 3.2, API nível 13 (Honeycomb MR2); SDK do Android
versão 4.0, API nível 14 (Ice Cream Sandwich)
6. Complemento ADT para o Eclipse 15.0.0;
7. Ferramentas do SDK revisão 15.
Dispositivos Android: Samsung Nexus S, HTC Evo 4G, Motorola Droid 3,
Samsung Galaxy Tab 10.1, Motorola Xoom, Motorola Atrix 4G, e Sony Ericsson
Xperia Play.
A plataforma Android continua a crescer agressivamente na partilha do
mercado, contra as plataformas móveis comcorrentes, tais como o Apple iOS
e o BlackBerry. Novos e excitantes tipos de dispositivos chegam às mãos dos
consumidores numa razão furiosa, com novas edições da plataforma Android
aparecendo a todo o tempo. Os desenvolvedores não podem mais ignorar o
Android como plataforma alvo, se quiserem alcançar os usuários de smartphone
(ou de dispositivos inteligentes) de hoje e amanhã.
A mais recente atualização maior da plataforma Android, o Android 4.0
Introdução
XI
– frequentemente chamado pelo seu codinome, Ice Cream Sandwich, ou
simplesmente ICS – combina as edições de plataforma Android 2.3.x (Gingerbread)
centrada no smartphone, e Android 3.x (Honeycomb) centrada no tablet, num
único SDK para todos os dispositivos inteligentes, sejam eles celulares, tablets,
televisores, ou torradeiras. Este livro apresenta o SDK e as ferramentas mais
recentes disponíveis, mas não foca neles em detrimento de versões populares
legadas da plataforma. Este livro tem por objetivo ser uma referência geral
para ajudar os desenvolvedores a suportar todos os dispositivos populares no
mercado, hoje. Quando da escrita deste livro, apenas uma porcentagem muito
pequena (menos de 5%) dos dispositivos de usuários estavam rodando o Android
3.0 ou 4.0. É claro que alguns desses dispositivo receberão atualizações, e os
usuários comprarão novos dispositivos Ice Cream Sandwich, à medida que eles
se tornarem disponíveis, mas, por ora, os desenvolvedores precisam preencher
este espaço e suportar numerosas versões do Android para chegarem à maioria
dos usuário em campo.
Então, o que isso significa para este livro? Significa que nós oferecemos tanto
suporte a APIs legadas quanto discutimos algumas das APIs mais novas, disponíveis
apenas em versões mais recentes do SDK do Android. Discutimos estratégias
para suportar todos (ou, pelo menos, a maioria dos) usuários, em termos de
compatibilidade. E fornecemos capturas de tela que destacam diferentes versões
do SDK do Android, porque cada revisão maior trouxe consigo uma mudança
no visual e uso da plataforma em geral. Dito isso, nós estamos considerando
que você está baixando as ferramentas mais recentes do Android, de modo que
fornecemos capturas de tela e passos que suportam as ferramentas mais recentes
disponíveis, no momento desta escrita, não das ferramentas legadas. Estes são os
limites que definimos, quando tentamos determinar o que incluir ou deixar de
fora deste livro.
Materiais suplementares disponíveis
O código fonte que acompanha este livro está disponível para download
no website do editor: www.informit.com/title/9780321813831. O código fonte
também está disponível para download a partir do website de nosso livro:
http://androidbook.blogspot.com/p/book-codedownloads.html
(http://goo.
gl/kyAsN). Você também encontrará vários tópicos do Android discutidos no
website de nosso livro (http://androidbook.blogspot.com). Por exemplo, nós
apresentamos feedback de leitores, questões, e outras informações. Você também
pode encontrar links para nossos vários artigos técnicos no website de nosso
livro.
XII
Desenvolvimento de Aplicativos Wireless para Android
Onde encontrar maiores informações
Há uma vibrante e útil comunidade de desenvolvedores Android, na Web.
Aqui está uma série de websites úteis para os desenvolvedores Android e
seguidores da indústria wireless:
ѩ
ѩ
ѩ
ѩ
ѩ
ѩ
ѩ
ѩ
ѩ
ѩ
ѩ
ѩ
O website Android Developer: o site de referência do desenvolvedor e do
SDK do Android:
http://developer.android.com or http://d.android.com
Stack Overflow: o website do Android com excelentes informações
técnicas (completo com marcas) e um fórum de suporte oficial para
desenvolvedores:
http://stackoverflow.com/questions/tagged/android
A Open Handset Alliance: fabricantes, operadoras e desenvolvedores
Android:
http://www.openhandsetalliance.com
O Android Market: compre e venda aplicativos Android:
http://www.android.com/market
Mobiletuts+: tutoriais de desenvolvimento móvel, incluindo o Android:
http://mobile.tutsplus.com/category/tutorials/android
anddev.org: fórum de desenvolvedor Android:
http://www.anddev.org
Aplicativos Android da equipe do Google: aplicativos Android de código
aberto:
http://apps-for-android.googlecode.com
Site de projeto de ferramentas Android: a equipe de ferramentas discute
atualizações e mudanças:
https://sites.google.com/a/android.com/tools/recent
FierceDeveloper: um jornal semanal para desenvolvedores sem fios:
http://www.fiercedeveloper.com
Rede de desenvolvedores Wireless: notícias diárias sobre a indústria
wireless:
http://www.wirelessdevnet.com
XDA-Developers Android Forum: do desenvolvimento em geral até
ROMs:
http://forum.xda-developers.com/forumdisplay.php?f=564
Developer.com: um site orientado pelo desenvolvedor com artigos
móveis: http://www.developer.com
Introdução
XIII
Convenções usadas neste livro
Este livro usa as seguintes convenções:
ѩ
ѩ
ѩ
é usado para significar aos leitores que os autores querem dizer aos
leitores que o código continuado aparece na mesma linha. Nenhuma
indentação deve ser feita na linha continuada;
Código ou termos de programação são apresentados em texto
monoespaçado;
Sentenças import Java, tratamento de exceção e verificação de erros são
frequentemente removidas dos exemplos de código impresso, a bem da
clareza e para manter o livro com uma extensão razoável.
Este livro também apresenta informações nas seguintes barras laterais:
Dica
Notas oferecem informações adicionais que podem ser interessantes ou relevantes.
Nota
Notas oferecem informações adicionais que podem ser interessantes ou relevantes.
Aviso
Avisos oferecem dicas sobre armadilhas que podem ser encontradas e como evitá-las.
Sumário Resumido
I - Visão Geral da Plataforma Android .......................................... 1
Capítulo 1 - Apresentando o Android............................................................................... 3
Capítulo 2 - Configurando seu ambiente de desenvolvimento Android .............33
Capítulo 3 - Escrevendo seu primeiro aplicativo Android........................................51
Capítulo 4 - Dominando as ferramentas de desenvolvimento do Android ........ 81
II - Fundamentos de aplicativos Android ................................. 101
Capítulo 5 - Entendendo a anatomia de um aplicativo Android .......................... 103
Capítulo 6 - Definindo seu aplicativo usando o arquivo de manifesto do
Android ................................................................................................................................. 123
Capítulo 7 - Gerenciando recursos do aplicativo...................................................... 147
III - Fundamentos de design de interfaces de usuário do
Android ............................................................................................189
Capítulo 8 - Explorando os elementos de tela da interface de usuário ...............191
Capítulo 9 - Projetando interfaces de usuário com arranjos .................................225
Capítulo 10 - Trabalhando com fragmentos ...............................................................265
Capítulo 11 - Trabalhando com diálogos .................................................................... 289
IV - O essencial do design de aplicativos Android ................. 303
Capítulo 12 - Usando preferências do Android ........................................................ 305
Capítulo 13 - Trabalhando com arquivos e diretórios ............................................. 319
Capítulo 14 - Usando provedores de conteúdo..........................................................333
Capítulo 15 - Projetando aplicativos compatíveis .....................................................355
V - Publicando e distribuindo aplicativos Android ................ 381
Capítulo 16 - O processo de desenvolvimento de Software Android..................383
Capítulo 17- Projetando e desenvolvendo aplicativos Android à prova de
falhas ....................................................................................................................................... 411
Capítulo 18 - Testando aplicativos Android................................................................ 431
Capítulo 19 - Publicando seu aplicativo Android ...................................................... 451
VI - Apêndices.................................................................................475
Apêndice A - Guia de iniciação rápida do simulador do Android .......................477
Apêndice B - Guia de iniciação rápida do DDMS do Android ............................ 503
Apêndice C - IDE Eclipse Tipos e Truques ................................................................ 519
Índice ..................................................................................................................................... 531
Sumário
I
Visão Geral da Plataforma Android
Capítulo 1 - Apresentando o Android ...................... 3
Breve história do desenvolvimento de software móvel..................................3
Tempos atrás .....................................................................................................................................3
“O tijolo”.............................................................................................................................................5
O Protocolo de Aplicativos Sem-Fios (WAP) ..........................................................................7
Plataformas Móveis Proprietárias ............................................................................................. 9
A Open Handset Alliance ....................................................................................12
Google se torna sem-fios.............................................................................................................12
Formando a Open Handset Alliance ........................................................................................12
Fabricantes: projetando dispositivos Android ......................................................................13
Operadoras móveis: oferecendo a experiência Android ....................................................15
Aplicativos impulsionam vendas de dispositivos: desenvolvendo aplicativos
Android ............................................................................................................................................15
Tirando vantagem de tudo o que o Android tem para oferecer ......................................16
O mercado Android: onde estamos, agora .............................................................................16
Diferenças entre plataformas Android ............................................................18
Android: uma plataforma da próxima geração .....................................................................18
Gratuito e de Código Aberto .....................................................................................................19
Ferramentas de desenvolvimento familiares e baratas .......................................................19
Kit de desenvolvimento de software disponível gratuitamente......................................20
Linguagem familiar, ambientes de desenvolvimento familiares.....................................20
Curva de aprendizado razoável para desenvolvedores .....................................................20
Habilitando o desenvolvimento de aplicativos poderosos ...............................................20
XVIII
Desenvolvimento de Aplicativos Wireless para Android
Integração rica e segura de aplicativos ....................................................................................21
Nenhum obstáculo caro à publicação ......................................................................................21
Um “mercado livre” para aplicativos ...................................................................................... 22
Uma plataforma em crescimento ............................................................................................. 23
A plataforma Android..........................................................................................24
A arquitetura subjacente ao Android ...................................................................................... 25
O Sistema Operacional Linux................................................................................................... 26
Ambiente de tempo de execução de aplicativos Android ................................................. 26
Segurança e permissões .............................................................................................................. 26
Aplicativos como usuários do sistema operacional ............................................................ 26
Permissões de aplicativos explicitamente definidas ........................................................... 26
Permissões ad-hoc limitadas ..................................................................................................... 27
Assinatura de aplicativos para relacionamentos de confiança ........................................ 27
Registro do desenvolvedor no mercado................................................................................. 28
Desenvolvendo aplicativos Android ....................................................................................... 28
Opções de linguagem de programação Android ................................................................. 28
Nenhuma distinção feita entre aplicativos nativos e de terceiros .................................. 29
Pacotes comumente usados ....................................................................................................... 29
Estrutura do Aplicativo Android .............................................................................................30
Serviços da Plataforma Android ..............................................................................................30
Resumo ...................................................................................................................31
Referências e mais informações ................................................................................................ 31
Capítulo 2 - Configurando seu ambiente de desenvolvimento Android .................................................. 33
Configurando seu ambiente de desenvolvimento .........................................33
Configurando seu sistema operacional para depuração de dispositivos...................... 36
Configurando seu hardware Android para depuração...................................................... 36
Atualizando o SDK do Android ............................................................................................... 38
Problemas com o Kit de Desenvolvimento de Software Android.................................. 38
Explorando o SDK do Android ..........................................................................39
Entendendo o acordo de licença do SDK do Android ....................................................... 39
Lendo a documentação do SDK do Android........................................................................40
Explorando a estrutura central dos aplicativos Android ..................................................40
Explorando as ferramentas centrais do Android ................................................................44
O Eclipse e o complemento ADT ............................................................................................44
Sumário
XIX
O SDK do Android e os AVD Managers (controladores de AVD) .................................. 45
O simulador do Android ............................................................................................................ 47
Explorando os aplicativos Android de amostra...................................................................48
Resumo .................................................................................................................. 50
Referências e maiores informações .........................................................................................50
Capítulo 3 - Escrevendo seu primeiro aplicativo
Android .........................................................................51
Testando seu ambiente de desenvolvimento................................................... 51
Criando um Dispositivo Android Virtual (AVD) para seu projeto Snake .................... 54
Criando uma configuração de inicialização para seu projeto Snake ............................. 56
Rodando o aplicativo Snake no Android Emulator ............................................................ 57
Construindo seu primeiro aplicativo Android ..............................................59
Criando e configurando um novo projeto Android ...........................................................60
Arquivos e diretórios centrais do aplicativo Android........................................................ 62
Criando um AVD para seu projeto .......................................................................................... 63
Criando uma configuração de iniciação para seu projeto ................................................64
Rodando seu aplicativo Android no simulador ................................................................... 65
Depurando seu aplicativo Android no simulador............................................................... 67
Adicionando suporte a registro a seu aplicativo Android ................................................70
Adicionando algum suporte a meios ao seu aplicativo ...................................................... 72
Adicionando serviços baseados em localização a seu aplicativo..................................... 75
Configurando a localização do simulador ............................................................................ 75
Encontrando a última localização conhecida....................................................................... 76
Depurando seu aplicativo no Hardware ................................................................................ 77
Resumo ...................................................................................................................79
Referências e maiores informações ......................................................................................... 79
Capítulo 4 - Dominando as ferramentas de
desenvolvimento do Android ...................................81
Usando a documentação do Android ................................................................81
Explorando o simulador do Android .............................................................. 84
Visualizando dados registrados pelo aplicativo com o LogCat ...................85
XX
Desenvolvimento de Aplicativos Wireless para Android
Depurando aplicativos com o DDMS ...............................................................85
Usando o Android Debug Bridge (ADB) .......................................................... 86
Usando os editores de recursos e o UI Designer.............................................87
Usando o visualizador de hierarquia do Android ......................................... 89
Iniciando o Hierarchy Viewer ..................................................................................................90
Trabalhando no modo Layout View Mode ............................................................................91
Otimizando sua interface de usuário...................................................................................... 92
Trabalhando no modo Pixel Perfect ........................................................................................ 93
Trabalhando com gráficos esticáveis Nine-Patch ......................................... 94
Trabalhando com outras ferramentas do Android........................................97
Resumo .................................................................................................................. 98
Referências e maiores informações .........................................................................................98
II
Fundamentos de aplicativos Android
Capítulo 5 - Entendendo a anatomia de um aplicativo Android ...............................................................103
Dominando a importante terminologia do Android ..................................103
Usando o contexto do aplicativo ......................................................................105
Recuperando o contexto do aplicativo ................................................................................. 105
Usando o Contexto do aplicativo .......................................................................................... 105
Recuperando recursos do aplicativo ..................................................................................... 106
Acessando preferências do aplicativo ................................................................................... 106
Acessando arquivos e diretórios do aplicativo ................................................................... 106
Recuperando bens do aplicativo ............................................................................................ 106
Realizando tarefas do aplicativo com atividades .........................................106
O ciclo de vida de uma atividade do Android ...............................................107
Sumário
XXI
Usando rechamadas da Activity para gerenciar o estado e os recursos do aplicativo .... 108
Evitando que atividades sejam mortas ................................................................................... 111
Organizando componentes de atividades com fragmentos........................113
Gerenciando transições de atividades com intenções .................................115
Transitando entre atividades com intenções ....................................................................... 115
Organizando a navegação do aplicativo com atividades e intenções ........................... 118
Trabalhando com serviços ................................................................................ 119
Recebendo e difundindo intenções .................................................................120
Resumo ................................................................................................................. 121
Referências e maiores informações ........................................................................................122
Capítulo 6 - Definindo seu aplicativo usando o
arquivo de manifesto do Android .........................123
Configurando aplicativos Android usando o arquivo de manifesto do
Android .................................................................................................................123
Editando o arquivo de manifesto do Android.................................................................... 124
Gerenciando a identidade de seu aplicativo ..................................................129
Aplicando versão a seu aplicativo .......................................................................................... 129
Ajustando o nome e o ícone do aplicativo........................................................................... 130
Impondo requisitos de sistema do aplicativo ................................................131
Objetivando versões específicas do SDK .............................................................................. 131
Impondo requisitos de plataforma do aplicativo ...............................................................135
Trabalhando com bibliotecas externas ..................................................................................137
Outros ajustes e filtros de configuração do aplicativo......................................................138
Registrando atividades no manifesto do Android .......................................138
Designando uma atividade de ponto de entrada primário para seu aplicativo
usando um filtro de intenção ...................................................................................................139
Configurando outros filtros de intenção ..............................................................................139
Registrando outros componentes do aplicativo ................................................................. 141
Trabalhando com permissões .......................................................................... 141
Registando as permissões de que seu aplicativo precisa .................................................. 141
Registrando permissões que seu aplicativo impõe ............................................................143
Explorando outros ajustes do arquivo de manifesto ........................................................ 144
XXII
Desenvolvimento de Aplicativos Wireless para Android
Resumo .................................................................................................................144
Referências e maiores informações ........................................................................................145
Capítulo 7 - Gerenciando recursos do
aplicativo ....................................................................147
Que são recursos?................................................................................................147
Armazenando recursos do aplicativo ................................................................................... 148
Tipos de valor de recursos ....................................................................................................... 149
Armazenando gráficos e arquivos ..........................................................................................152
Armazenando outros tipos de recursos ................................................................................152
Entendendo como os recursos são resolvidos ....................................................................152
Acessando recursos programaticamente ..............................................................................153
Ajustando valores simples de recursos usando o Eclipse ...........................154
Trabalhando com diferentes tipos de recursos ............................................158
Trabalhando com recursos String ..........................................................................................158
Strings em negrito, itálico e sublinhadas ..............................................................................159
Usando recursos String programaticamente...................................................................... 160
Trabalhando com matrizes de String.................................................................................... 162
Trabalhando com recursos booleanos ...................................................................................163
Definindo recursos booleanos em XML...............................................................................163
Usando recursos booleanos programaticamente ...............................................................163
Trabalhando com recursos inteiros........................................................................................163
Definindo recursos inteiros em XML .................................................................................. 164
Usando recursos inteiros programaticamente ................................................................... 164
Trabalhando com cores............................................................................................................. 164
Definindo recursos de cor em XML ......................................................................................165
Usando recursos de cor programaticamente.......................................................................165
Trabalhando com dimensões ...................................................................................................165
Definindo recursos de dimensões em XML ........................................................................165
Usando recursos de dimensão programaticamente ..........................................................167
Trabalhando com desenháveis simples .................................................................................167
Definindo recursos desenháveis simples em XML ............................................................167
Usando recursos desenháveis simples programaticamente ........................................... 168
Trabalhando com imagens ....................................................................................................... 169
Trabalhando com gráficos esticáveis Nine-Patch ............................................................. 170
Usando recursos de imagem programaticamente............................................................. 170
Trabalhando com animações ...................................................................................................172
Sumário
XXIII
Trabalhando com menus ...........................................................................................................174
Trabalhando com arquivos XML ............................................................................................176
Trabalhando com arquivos crus ..............................................................................................177
Referências a recursos ................................................................................................................178
Trabalhando com arranjos ...............................................................................180
Referenciando recursos do sistema ................................................................185
Resumo .................................................................................................................187
Referências e maiores informações ........................................................................................187
III
Fundamentos de design de interfaces de
usuário do Android
Capítulo 8 - Explorando os elementos de tela da
interface de usuário.................................................. 191
Apresentando as vistas e os arranjos do Android ........................................ 191
Apresentando a View do Android .......................................................................................... 191
Apresentando os controles do Android ............................................................................... 192
Apresentando o arranjo do Android ..................................................................................... 192
Exibindo texto para os usuários com a TextView ........................................193
Configurando arranjo e tamanhos ........................................................................................ 194
Criando links contextuais no texto ........................................................................................195
Recuperando dados do usuário com EditText .............................................. 197
Recuperando entrada de texto usando controles EditText .............................................197
Restringindo a entrada do usuário com filtros de entrada ............................................. 199
Ajudando o usuário com autocompletamento ............................................200
Oferecendo opções ao usuário com controles Spinner ............................. 203
Permitindo seleções simples do usuário com botões, caixas de verificação,
XXIV
Desenvolvimento de Aplicativos Wireless para Android
chaves e grupos de rádio.......................................................................................................... 204
Usando botões básicos ..............................................................................................................205
Usando os controles CheckBox e ToggleButton ...............................................................207
Usando RadioGroup e RadioButton .................................................................................... 209
Recebendo datas e horas do usuário ......................................................................................212
Usando indicadores para exibir dados ao usuário .............................................................215
Indicando progresso com ProgressBar .................................................................................215
Ajustando o progresso com SeekBar .....................................................................................217
Exibindo dados de avaliação com a RatingBar .................................................................. 218
Mostrando a passagem do tempo com o Chronometer ................................................. 220
Exibindo a hora ............................................................................................................................221
Usando o DigitalClock ...............................................................................................................221
Usando o AnalogClock ..............................................................................................................221
Resumo ................................................................................................................ 222
Referências e maiores informações .......................................................................................222
Capítulo 9 - Projetando interfaces de usuário com
arranjos ...................................................................... 225
Criando interfaces de usuário no Android .................................................. 225
Criando arranjos com recursos XML...................................................................................226
Criando arranjos programaticamente ..................................................................................227
Organizando sua interface de usuário .......................................................... 230
Usando subclasses de ViewGroup para projeto de arranjo .............................................231
Usando subclasses de ViewGroup como contentores de View......................................231
Usando classes de arranjo embutidas ............................................................ 232
Usando FrameLayout ................................................................................................................234
Usando LinearLayout ................................................................................................................ 237
Usando RelativeLayout .............................................................................................................239
Usando TableLayout ..................................................................................................................243
Usando GridLayout ...................................................................................................................246
Usando múltiplos arranjos numa tela...................................................................................250
Usando classes de controles contentores .......................................................251
Usando contentores dirigidos por dados .............................................................................251
Organizando telas com abas.................................................................................................... 257
Adicionando suporte a rolagem ............................................................................................. 261
Explorando outros contentores de vistas ............................................................................262
Sumário
XXV
Resumo ................................................................................................................ 262
Referências e maiores informações .......................................................................................263
Capítulo 10 - Trabalhando com fragmentos....... 265
Entendendo os fragmentos .............................................................................. 265
Entendendo o ciclo de vida dos fragmentos .......................................................................267
Trabalhando com tipos especiais de fragmentos...............................................................270
Projetando aplicativos baseados em fragmentos................................................................271
Usando o Android Support Package .............................................................. 283
Adicionando suporte a fragmentos a aplicativos legados ...............................................283
Usando fragmentos em novos aplicativos objetivando plataformas mais antigas...284
Resumo ................................................................................................................ 286
Referências e maiores informações .......................................................................................286
Capítulo 11 - Trabalhando com diálogos ............ 289
Escolhendo a implementação de seu diálogo ............................................... 289
Explorando os diferentes tipos de diálogo ....................................................291
Trabalhando com diálogos: o método legado ............................................... 292
Traçando o ciclo de vida de um diálogo...............................................................................292
Trabalhando com diálogos personalizados .........................................................................296
Trabalhando com diálogos: o método com fragmentos............................. 296
Resumo ................................................................................................................300
Referências e maiores informações ....................................................................................... 301
IV
O essencial do design de aplicativos
Android
XXVI
Desenvolvimento de Aplicativos Wireless para Android
Capítulo 12 - Usando preferências do Android.. 305
Trabalhando com preferências de aplicativo ............................................... 305
Determinando quando preferências são apropriadas ......................................................305
Armazenando diferentes tipos de valores de preferências .............................................306
Criando preferências privadas para uso por uma única atividade ...............................306
Criando preferências compartilhadas para uso por múltiplas atividades..................307
Procurando e lendo preferências .......................................................................................... 308
Adicionando, atualizando e excluindo preferências........................................................ 308
Reagindo a alterações de preferências .................................................................................. 310
Encontrando dados de preferências no sistema de arquivos do Android................... 311
Criando preferências de usuário gerenciáveis .............................................312
Criando um arquivo de recursos de preferências ..............................................................312
Usando a classe PreferenceActivity ........................................................................................315
Resumo .................................................................................................................317
Referências e maiores informações ........................................................................................318
Capítulo 13 - Trabalhando com arquivos e
diretórios ....................................................................319
Trabalhando com dados do aplicativo no dispositivo .................................319
Praticando um bom gerenciamento de arquivos ........................................ 320
Entendendo as permissões de arquivo do Android .....................................321
Trabalhando com arquivos e diretórios ........................................................ 322
Explorando os diretórios de aplicativos Android .............................................................323
Trabalhando com outros diretórios e arquivos no sistema de arquivos do
Android .........................................................................................................................................328
Resumo .................................................................................................................331
Referências e maiores informações ........................................................................................331
Capítulo 14 - Usando provedores de conteúdo .. 333
Explorando provedores de conteúdo do Android........................................333
Usando o provedor de conteúdo MediaStore .................................................................... 335
Usando o provedor de conteúdo CallLog ........................................................................... 337
Usando o provedor de conteúdo Browser ..........................................................................339
Sumário
XXVII
Usando o provedor de conteúdo CalendarContract .........................................................341
Usando o provedor de conteúdo UserDictionary .............................................................342
Usando o provedor de conteúdo VoicemailContract ......................................................342
Usando o provedor de conteúdo Settings ...........................................................................342
Usando o provedor de conteúdo Contacts .........................................................................342
Trabalhando com o provedor de conteúdo legado Contacts .........................................343
Modificando dados dos provedores de conteúdo ........................................ 349
Adicionando registros ...............................................................................................................349
Atualizando registros .................................................................................................................351
Excluindo registros .....................................................................................................................351
Usando provedores de conteúdo de terceiros ...............................................352
Resumo .................................................................................................................353
Referências e maiores informações ....................................................................................... 353
Capítulo 15 - Projetando aplicativos
compatíveis ............................................................... 355
Maximizando a compatibilidade dos aplicativos .........................................355
Projetando interfaces de usuário para compatibilidade ........................... 358
Trabalhando com fragmentos .................................................................................................359
Explorando o Android Support Package .............................................................................360
Suportando tipos específicos de tela .....................................................................................360
Trabalhando com gráficos esticáveis Nine-Patch ..............................................................361
Usando o princípio do quadrado funcional ........................................................................362
Fornecendo recursos alternativos do aplicativo ......................................... 363
Entendendo como os recursos são resolvidos ...................................................................363
Organizando recursos alternativos com qualificadores..................................................365
Fornecendo recursos para diferentes orientações ............................................................ 373
Usando recursos alternativos programaticamente ........................................................... 373
Organizando recursos do aplicativo eficientemente .......................................................374
Projetando para Tablets, TVs e outros dispositivos novos ............................................. 375
Projetando para dispositivos Tablet ...................................................................................... 375
Projetando para dispositivos de TV Google ....................................................................... 377
Resumo .................................................................................................................379
Referências e maiores informações .......................................................................................379
XXVIII
Desenvolvimento de Aplicativos Wireless para Android
V
Publicando e distribuindo aplicativos
Android
Capítulo 16 - O processo de desenvolvimento de
Software Android ................................................... 383
Visão geral do processo de desenvolvimento móvel .................................. 383
Escolhendo uma metodologia de software ................................................... 384
Entendendo os perigos de abordagens em cascata ...........................................................384
Entendendo o valor da iteração .............................................................................................385
Coletando requisitos do aplicativo................................................................. 385
Determinando os requisitos do projeto ...............................................................................385
Desenvolvendo casos de uso para aplicativos móveis......................................................388
Incorporando requisitos de terceiros ...................................................................................389
Gerenciando uma base de dados de dispositivos ..............................................................389
Avaliando os riscos do projeto ........................................................................ 394
Identificando dispositivos alvos .............................................................................................394
Adquirindo dispositivos alvos ................................................................................................396
Determinando a viabilidade dos requisitos do aplicativo...............................................397
Entendendo os riscos do controle de qualidade ................................................................398
Escrevendo a documentação essencial do projeto ...................................... 399
Desenvolvendo planos de teste para fins de controle de qualidade ............................ 400
Fornecendo documentação exigida por terceiros ............................................................. 401
Fornecendo documentação para manutenção e portada ................................................ 401
Explorando os sistemas de gerenciamento de configuração .....................401
Escolhendo um sistema de controle de fontes ................................................................... 401
Implementando um sistema de versões de aplicativo que funcione ........................... 402
Desenvolvendo aplicativos móveis ................................................................ 406
Testando aplicativos móveis ............................................................................ 407
Sumário
XXIX
Distribuindo aplicativos móveis .................................................................... 407
Determinando os mercados alvos......................................................................................... 408
Suportando e mantendo aplicativos móveis ................................................ 408
Acompanhar e atender a falhas reportadas por usuários ............................................... 409
Testar atualizações de firmware ............................................................................................ 409
Manter uma adequada documentação do aplicativo....................................................... 409
Gerenciar mudanças ativas no servidor.............................................................................. 409
Identificar oportunidades de portada de baixo risco ....................................................... 410
Resumo .................................................................................................................410
Capítulo 17 - Projetando e desenvolvendo aplicativos Android à prova de falhas ................................ 411
Melhores práticas no projeto de aplicativos móveis à prova de falhas.... 411
Atendendo às exigências dos usuários móveis ................................................................... 412
Projetando interfaces de usuário para dispositivos móveis ........................................... 412
Projetando aplicativos móveis estáveis e responsivos ..................................................... 414
Projetando aplicativos móveis seguros ................................................................................ 416
Projetando aplicativos móveis para máximo lucro............................................................417
Explorando padrões de qualidade de terceiros .................................................................. 418
Projetando aplicativos móveis para facilidade de manutenção e atualização ........... 419
Explorando diagnósticos de aplicativos............................................................................... 419
Explorando ferramentas do Android para design de aplicativos ................................. 421
Evitando erros tolos no design de aplicativos Android ............................. 422
Melhores práticas no desenvolvimento de aplicativos móveis à prova de
falhas .........................................................................................................422
Projetando um processo de desenvolvimento que funcione para o
desenvolvimento móvel ............................................................................................................423
Testar a viabilidade de seu aplicativo antecipada e frequentemente ...........................423
Usando padrões de codificação, revisões e testes de unidade para melhorar a
qualidade do código ...................................................................................................................424
Tratando defeitos que ocorrem num único dispositivo ..................................................427
Explorando ferramentas do Android para desenvolvimento ........................................428
Resumo ................................................................................................................ 429
Referências e maiores informações .......................................................................................429
XXX
Desenvolvimento de Aplicativos Wireless para Android
Capítulo 18 - Testando aplicativos Android ........431
Melhores práticas no teste de aplicativos móveis ........................................431
Projetando um sistema de rastreamento de defeitos em aplicativos móveis ............431
Gerenciando o ambiente de testes .........................................................................................433
Maximizando a cobertura dos testes ....................................................................................437
Explorando ferramentas do Android para teste de aplicativos Android....................447
Evitando erros tolos no teste de aplicativos Android ......................................................448
Resumo ................................................................................................................ 448
Capítulo 19 - Publicando seu aplicativo
Android .......................................................................451
Escolhendo o modelo certo de distribuição ..................................................451
Protegendo sua propriedade intelectual ..............................................................................452
Cobrando ao usuário .................................................................................................................453
Empacotando seu aplicativo para publicação ....................................................................455
Preparando seu código para empacotamento ....................................................................455
Preparando o pacote de seu aplicativo para o Android Market....................................457
Empacotando e assinando seu aplicativo ............................................................................458
Testando a versão de liberação do pacote de seu aplicativo ........................................... 461
Distribuindo seu aplicativo...................................................................................................... 461
Publicando no Android Market .......................................................................461
Subscrevendo-se para uma conta de desenvolvedor no Android Market .................462
Transferindo seu aplicativo para o Android Market ........................................................464
Transferindo recursos de marketing do aplicativo ...........................................................465
Configurando detalhes da listagem do aplicativo .............................................................465
Configurando as opções de publicação do aplicativo ......................................................467
Configurando informações de contato e consentimento do aplicativo .....................468
Publicando seu aplicativo no Android Market ..................................................................469
Gerenciando seu aplicativo no Android Market ...............................................................469
Publicando com outras alternativas .............................................................. 470
Publicando seu aplicativo por conta própria......................................................................472
Resumo .................................................................................................................473
Referências e maiores informações .......................................................................................473
Sumário
XXXI
VI
Apêndices
Apêndice A - Guia de iniciação rápida do simulador do Android ......................................................... 477
Simulando a realidade: a finalidade do simulador ......................................477
Trabalhando com Dispositivos Android Virtuais (AVDs) ......................... 480
Usando o Android Virtual Device Manager ....................................................................... 481
Criando um AVD ........................................................................................................................482
Iniciando o simulador com um AVD específico .......................................... 487
Iniciando um simulador para rodar um aplicativo ...........................................................488
Iniciando um simulador a partir do Android Virtual Device Manager...................... 491
Configurando a localização de GPS do simulador .......................................491
Fazendo chamadas entre duas instâncias do simulador ............................ 493
Enviando mensagens entre duas instâncias de simulador........................ 494
Interagindo com o simulador através do console ....................................... 495
Usando o console para simular o recebimento de chamadas ........................................496
Usando o console para enviar coordenadas de GPS ........................................................498
Usando o console para monitorar o status da rede ..........................................................498
Usando o console para manipular os ajustes de alimentação ........................................498
Usando outros comandos do console ...................................................................................499
Curtindo o simulador .......................................................................................500
Entendendo as limitações do simulador ........................................................501
Referências e maiores informações ....................................................................................... 501
Apêndice B - Guia de iniciação rápida do DDMS
do Android ................................................................503
Usando o DDMS com o Eclipse e como aplicativo isolado........................ 503
XXXII
Desenvolvimento de Aplicativos Wireless para Android
Preparando-se para usar funcionalidades chaves do DDMS .................... 505
Trabalhando com processos, segmentos e a área de alocação dinâmica 505
Anexando um depurador a um aplicativo Android ..........................................................506
Interrompendo um processo...................................................................................................506
Monitorando a atividade da área de alocação ....................................................................507
Solicitando a coleta de lixo ......................................................................................................509
Criando e usando um arquivo HPROF ................................................................................509
Usando o rastreador de alocação .....................................................................510
Trabalhando com o File Explorer ........................................................................................... 511
Navegando no sistema de arquivos de um simulador ou dispositivo ..........................512
Copiando arquivos do simulador ou dispositivo ...............................................................513
Copiando arquivos para o simulador ou dispositivo ........................................................514
Excluindo arquivos no simulador ou dispositivo...............................................................514
Trabalhando com o controle do simulador .........................................................................515
Simulando o recebimento de chamadas de voz ..................................................................515
Simulando o recebimento de mensagens SMS ...................................................................515
Enviando uma localização ........................................................................................................516
Fazendo capturas de tela do simulador e do dispositivo..................................................516
Trabalhando com registros de aplicativos ............................................................................517
Apêndice C - Eclipse IDE Tips and Tricks ...........519
Organizando seu espaço de trabalho do Eclipse...........................................519
Integrando com serviços de controle de fonte....................................................................519
Reposicionando abas dentro de perspectivas .....................................................................520
Maximizando janelas..................................................................................................................521
Minimizando janelas ..................................................................................................................521
Visualizando janelas lado a lado ..............................................................................................521
Visualizando duas seções do mesmo arquivo......................................................................521
Fechando abas indesejadas........................................................................................................521
Mantendo as janelas sob controle..........................................................................................522
Criando filtros de registro personalizados .........................................................................522
Procurando em seu projeto ..................................................................................................... 523
Organizando tarefas do Eclipse ............................................................................................. 523
Escrevendo código em Java .............................................................................. 524
Usando autocompletamento ...................................................................................................524
Organizando Imports................................................................................................................ 525
Sumário
XXXIII
Formatando código.............................................................................................525
Renomeando quase tudo .................................................................................. 526
Refazendo código ............................................................................................... 526
Reorganizando o código ................................................................................... 528
Usando o QuickFix ............................................................................................ 528
Fornecendo documentação no estilo Javadoc .............................................. 529
Resolvendo erros misteriosos de construção .............................................. 529
Índice ...........................................................................531
I
Visão Geral da Plataforma Android
1.
Apresentando o Android
2. Configurando seu ambiente de desenvolvimento Android
3. Escrevendo seu primeiro aplicativo Android
4. Dominando as ferramentas de desenvolvimento Android
Capítulo 1
Apresentando o Android
A comunidade de desenvolvimento móvel está num ponto de estabilização.
Os usuários móveis exigem mais opções, mais oportunidades de personalizar
seus dispositivos, e mais funcionalidades. As operadoras móveis querem fornecer
conteúdo com valor agregado a seus assinantes de uma forma gerenciável
e lucrativa. Os desenvolvedores móveis querem a liberdade de desenvolver
os poderosos aplicativos móveis que os usuários exigem, com o mínimo de
obstáculos para o sucesso. Por fim, os fabricantes de celulares querem uma
plataforma estável, segura e acessível para impulsionar seus dispositivos.
O Android surgiu como uma plataforma de virada de mesa para a comunidade
de desenvolvimento móvel. Sendo uma plataforma inovadora e aberta, o Android
está bem posicionado para atender às crescentes necessidades do mercado
móvel, uma vez que ele continua a se expandir para além dos primeiros a adotar
e comprar os sofisticados dispositivos inteligentes.
Este capítulo explica o que é o Android, como e por que ele foi desenvolvido,
e onde a plataforma se encaixa no bem estabelecido mercado móvel. A primeira
metade deste capítulo foca a história, e a segunda se concentra em como a
plataforma Android funciona.
Breve história do desenvolvimento de software móvel
Para entender o que torna o Android tão convincente, nós devemos examinar
como o desenvolvimento móvel evoluiu e como o Android difere das plataformas
concorrentes.
Tempos atrás
Você lembra de quando um telefone era apenas um telefone? De quando
dependíamos de telefones fixos? De quando corríamos para o telefone, em vez de
tirá-lo do bolso? De quando perdíamos nossos amigos num jogo de bola lotado
e ficávamos horas esperando para nos reunirmos? De quando esquecíamos da
4
Desenvolvimento de Aplicativos Wireless para Android
lista de compras (veja a figura 1.1) e tínhamos que encontrar um orelhão ou voltar
novamente em casa para pegá-la?
Esses dias vão longe. Hoje, problemas comuns como esses são facilmente
resolvidos com uma discagem rápida de um botão ou uma mensagem de texto
simples, como “kd vc?” Ou “20?” Ou “Leite e...?”
Nossos celulares nos mantêm seguros e conectados. Agora, nós vagamos
livremente, contando com nossos celulares não só para nos manter em contato
com amigos, familiares e colegas de trabalho, mas também para nos dizer aonde
ir, o que fazer e como fazê-lo. Mesmo os eventos mais domésticos parecem
envolver meu celular, hoje em dia.
Figura 1.1
Os celulares se tornaram
um acessório de compras crucial.
Considere a seguinte história real, que foi
ligeiramente reforçada para dar um efeito:
Certa vez, numa noite quente de verão, eu
estava alegremente falando com meus botões
e cuidando do jantar, na minha nova casa, na
zona rural de New Hampshire, quando um
morcego voou sobre minha cabeça, matandome de susto.
A primeira coisa que fiz – enquanto me
abaixava – foi pegar o celular e mandar uma
mensagem de texto para meu marido, que estava
do outro lado do país, na época. Eu digitei: “Há
um morcego em casa!”
Meu marido não respondeu de imediatato
(um incidente digno de um divórcio, pensei na
época), então eu liguei para meu pai e lhe pedi sugestões sobre como me livrar
do morcego.
Ele simplesmente riu.
Irritada, eu tirei uma foto do morcego com meu celular a enviei para meu
marido e meu blog, simultaneamente deixando-o com um sentimento de culpa e
informando o mundo a respeito de meu traiçoeiro encontro com a vida selvagem
doméstica.
Por fim, eu procurei no Google “livrar-se de morcego” e depois segui as
Capítulo 1 - Apresentando o Android
5
úteis instruções de faça-você-mesmo fornecidas na Web para pessoas na minha
situação. Aprendi também que o final de agosto é quando os bebês morcegos
frequentemente deixam o ninho pela primeira vez e aprendem a voar. Recéminformada de ter um bebê morcego em minhas mãos, eu calmamente peguei uma
vassoura e consegui pôr o morcego pra fora de casa.
Problema resolvido – e fiz tudo isso com a ajuda do meu celular de confiança,
o velho LG VX9800.
Meu ponto, aqui? Os dispositivos móveis de hoje não são chamados
smartphones à toa. Eles podem resolver qualquer coisa – e nós contamos com
eles para tudo, hoje em dia.
Perceba que eu usei meia dúzia de diferentes aplicativos móveis, ao longo
desta história. Cada aplicativo foi desenvolvido por uma empresa diferente e
tinha uma interface de usuário diferente. Alguns foram bem projetados; outros
nem tanto. Eu paguei por alguns deles, e outros já vieram com o celular.
Como usuário, eu achei a experiência funcional, mas não terrivelmente
inspiradora. Como desenvolvedor móvel, eu queria uma oportunidade para criar
um aplicativo mais uniforme e poderoso, que pudesse cuidar de tudo o que eu fiz
e muito mais. Eu queria construir uma melhor armadilha de morcegos, se você
quisesse.
Antes do Android, os desenvolvedores móveis enfrentavam muitos obstáculos,
quando se tratava de escrever aplicativos. Construir o melhor aplicativo, o
aplicativo único, o aplicativo da concorrência, o aplicativo híbrido, e incorporar
muitas tarefas comuns, como mensagens e chamadas, de uma forma familiar,
eram muitas vezes objetivos irreais.
Para entender por quê, vamos dar uma breve olhada na história do
desenvolvimento de software móvel.
“O tijolo”
O Motorola DynaTAC 8000X foi o primeiro celular portátil comercialmente
disponível. Comercializado pela primeira vez em 1983, ele tinha 33 × 4,5 × 8,9
centímetros, pesava pouco mais de 1Kg, e permitia que você conversasse por
pouco mais de meia hora. Era vendido por 3.995 dólares, além de pesadas taxas
mensais de serviço e tarifas por minuto.
Nós o chamávamos de “o tijolo”, e o apelido pegou para muitos daqueles
antigos celulares que nós alternadamente amamos e odiamos. Com o tamanho
aproximado de um tijolo, com bateria suficiente para apenas meia conversação,
esses primeiros celulares eram vistos principalmente nas mãos de executivos
em viagens de negócio, de pessoal de segurança, e de ricos. Os celulares de
6
Desenvolvimento de Aplicativos Wireless para Android
primeira geração eram simplesmente caros demais. As simples taxas de serviços
eram capazes de levar à falência uma pessoa média, especialmente quando em
deslocamento.
Os primeiros celulares não eram particularmente cheio de recursos (embora
mesmo o Motorola DynaTAC, mostrado na figura 1.2, tivesse muitos dos botões
com que nos familiarizamos, como o SEND, o END e o CLR). Estes primeiros
celulares faziam pouco mais que fazer e receber chamadas e, se você tivesse sorte,
havia um aplicativo simples de contatos que não era impossível de usar.
Os celulares de primeira geração foram projetados e desenvolvidos por
fabricantes de telefones. A competição era feroz e segredos comerciais eram
muito bem guardados. Os fabricantes não queriam expor o funcionamento
interno de seus aparelhos, de modo que eles geralmente desenvolviam o software
do telefone a portas bem fechadas. Como desenvolvedor, se você não fizesse
parte deste círculo íntimo, não teria oportunidade de escrever aplicativos para
os celulares.
Figura 1.2
O primeiro celular
disponível no mercado:
Motorola DynaTAC.
Foi nessa época que vimos os primeiros jogos de passa-tempo
começarem a aparecer. A Nokia ficou famosa por colocar o game
Serpente, dos anos 1970, em alguns de seus primeiros celulares
monocromáticas. Outros fabricantes seguiram o exemplo,
adicionando jogos como Pong, Tetris, e o Jogo da Velha.
Esses primeiros dispositivos eram falhos, mas fizeram algo de
importante – eles mudaram a forma de se pensar em comunicação.
À medida que os preços dos dispositivos móveis caía, que as
baterias melhoravam, e que as áreas de recepção cresciam, mais e
mais pessoas começavam a levar consigo esses úteis dispositivos.
Logo os dispositivos móveis eram mais que simples novidade.
Os clientes começaram a pressionar por mais funcionalidades
e mais jogos. Mas havia um problema. Os fabricantes de aparelhos
não tinham motivação ou recursos para construir todos os
aplicativos que os usuários queriam. Eles precisavam de alguma
forma de fornecer um portal de serviços de entretenimento e
Capítulo 1 - Apresentando o Android
7
informação, sem permitir o acesso direto ao aparelho.
Que melhor maneira de fornecer estes serviços que não a Internet?
O Protocolo de Aplicativos Sem-Fios (WAP)
Como ficou claro, permitir o acesso direto do telefone à Internet não se
ajustava bem para celulares.
A esta altura, os websites profissionais eram totalmente coloridos e cheios de
textos, imagens e outros tipos de meios. Esses sites usavam JavaScript, Flash e
outras tecnologias para aprimorar a experiência do usuário, e muitas vezes eram
concebidos com uma resolução alvo igual ou superior a 800 × 600 pixels.
Quando o primeiro celular flip, o Motorola StarTAC, foi lançado, em 1996, mal
tinha um visor LCD segmentado de 10 dígitos (modelos posteriores adicionariam
um visor de texto em matriz de pontos). Enquanto isso, a Nokia lançava um
dos primeiros celulares deslizantes, o 8110 – carinhosamente conhecido como
“o celular do Matrix”, porque foi muito usado em filmes. O 8110 podia exibir
quatro linhas de texto com 13 caracteres por linha. A figura 1.3 mostra alguns dos
formatos comuns de celulares.
Figura 1.3
Vários formatos de
celulares: a “barra de
chocolate”, o deslizante
(slider), e o flip.
Com suas telas de baixa resolução com tamanho de um selo de postagem e
poder de armazenamento e processamento limitado, esses celulares não podiam
tratar as intensas operações de dados exigidas pelos tradicionais navegadores
web. As exigências de largura de banda para transmissão de dados também eram
caras para o usuário.
O padrão do Protocolo de Aplicativos Sem-Fios (WAP, na sigla em inglês)
surgiu para atender a estas questões. Simplificando, o WAP era uma versão
reduzida do HTTP, que é o protocolo da espinha dorsal da World Wide Web.
8
Desenvolvimento de Aplicativos Wireless para Android
Diferentemente dos navegadores web tradicionais, os navegadores WAP foram
projetados para rodar dentro das limitações de memória e de largura de banda
dos celulares. Os websites de terceiros serviam páginas escritas numa linguagem
de marcação chamada Wireless Markup Language (WML). Estas páginas eram
então exibidas no navegador WAP do celular. Os usuários navegavam como na
Web, mas as páginas eram muito mais simples no design.
A solução WAP foi ótima para os fabricantes de aparelhos. A pressão diminuía
– eles podiam escrever um navegador WAP que acompanhasse o aparelho,
e deixar que os desenvolvedores produzissem os conteúdos que os usuários
queriam.
A solução WAP foi ótima para as operadoras móveis. Elas podiam fornecer
um portal WAP personalizado, direcionando seus assinantes para o conteúdo
que queriam oferecer, e arrecadar as tarifas de dados associadas à navegação, que
muitas vezes eram elevadas.
Pela primeira vez, os desenvolvedores tiveram a oportunidade de desenvolver
conteúdo para usuários de celulares, e alguns o fizeram, com sucesso limitado.
Poucos ganharam algum impulso nos mercados de consumo, porque o conteúdo
era de valor limitado e a experiência do usuário final deixava muito a desejar.
A maioria dos primeiros sites WAP eram extensões dos websites de marcas
mais populares, como o CNN.com e o ESPN.com, que estavam à procura de
novas maneiras de estender seu alcance a leitores. De repente, os usuários de
celulares acessavam notícias, cotações de ações e placares esportivos em seus
telefones.
A comercialização de aplicativos WAP era difícil, e não havia mecanismo de
cobrança embutido. Alguns dos aplicativos WAP comerciais mais populares que
surgiram neste tempo eram simples catálogos de sons de chamada e de papel
de parede que permitiam pela primeira vez que os usuários personalizassem
seus celulares. Por exemplo, um usuário navegava um site WAP e solicitava um
item específico. Ele preenchia um formulário de pedido simples, com o número
de seu celular e modelo de aparelho. Cabia ao provedor de conteúdo oferecer
um arquivo de imagem ou áudio compatível com o dado celular. Pagamento e
verificação eram tratados através de vários mecanismos de entrega por preço
prêmio, tais como Short Message Service (SMS), Enhanced Messaging Service
(EMS), Multimedia Messaging Service (MMS), e WAP Push.
Os navegadores WAP, especialmente nos primeiros tempos, eram lentos e
frustrantes. Digitar longos URLs com o teclado numérico era oneroso. Páginas
WAP eram frequentemente difíceis de navegar. A maioria dos sites WAP eram
escritos uma vez para todos os celulares e não levavam em conta as especificações
Capítulo 1 - Apresentando o Android
9
de aparelhos individuais. Não importava se o celular do usuário final tinha uma
grande tela colorida ou uma tela monocromática do tamanho de um selo; o
desenvolvedor não podia adequar a experiência do usuário. O resultado era uma
experiência medíocre e não muito atraente para todos os envolvidos.
Os provedores de conteúdo frequentemente não se preocupavam com um
site WAP e, ao invés, simplesmente anunciavam em breves códigos SMS na TV
e em revistas. Neste caso, o usuário enviava uma mensagem SMS premium com
um pedido de um papel de parede ou som específico, e o provedor de conteúdo o
enviava de volta. As operadoras móveis, em geral, gostavam desses mecanismos
de entrega, porque recebiam uma grande porção de cada taxa do serviço de
mensagens.
O WAP ficou aquém das expectativas comerciais. Em alguns mercados, como
no japonês, ele floresceu, enquanto em outros, como nos Estados Unidos, ele não
decolou. As telas de celulares eram muito pequenas para a navegação. Ler um
fragmento de frase por vez, e depois esperar segundos que o próximo segmento
baixasse, arruinou a experiência do usuário, especialmente porque cada segundo
de download era frequentemente cobrado ao usuário. Os críticos começaram a
chamar o WAP de “espere e pague” (em inglês, Wait And Pay).
Por fim, as operadoras móveis que proviam o portal WAP (a página base
omissiva carregada quando você iniciava seu navegador WAP), muitas vezes
restringia os sites WAP que eram acessíveis. O portal permitia que a operadora
restringisse o número de sites pelos quais os usuários poderiam navegar, e
canalizar os assinantes para provedores de conteúdo preferenciais da operadora
e excluir sites de concorrentes. Este tipo de abordagem de jardim murado
desencorajou ainda mais os desenvolvedores de terceiros, que já enfrentavam
dificuldades em remunerar os aplicativos, a escrever aplicativos.
Plataformas Móveis Proprietárias
Não era surpresa que os usuários queriam mais – eles sempre quererão mais.
Escrever aplicativos robustos com WAP, tais como jogos de gráficos intensivos,
era quase impossível. A doce população de 18 a 25 anos – as crianças com renda
disponível mais provável de personalizar seus aparelhos com papéis de parede
e sons de chamada – olhou para seus sistemas de jogos portáteis e pediu um
dispositivo que fosse tanto um telefone quanto um dispositivo de jogos, ou um
telefone e um reprodutor de músicas. Eles argumentaram que, se dispositivos tais
como o Game Boy da Nintendo podiam proporcionar horas de entretenimento
com apenas cinco botões, por que não bastava adicionar capacidades de telefone?
Outros olhavam para suas câmeras digitais, Palms, Blackberries, iPods, e até para
10
Desenvolvimento de Aplicativos Wireless para Android
seus laptops e faziam a mesma pergunta. O mercado parecia estar à beira de
convergência dos dispositivos.
Memória estava ficando mais barata, baterias estavam ficando cada melhores
e PDAs e outros dispositivos embutidos estavam começando a rodar versões
compactas de sistemas operacionais comuns, tais como Linux e Windows.
O tradicional desenvolvedor de aplicativos de área de trabalho de repente se
tornou um personagem no mercado de dispositivos embutidos, especialmente
com tecnologias de smartphones como o Windows Mobile, que eles achavam
familiares.
Os fabricantes de aparelhos perceberam que, se quisessem continuar a vender
os aparelhos tradicionais, eles precisavam mudar suas políticas protecionistas
relativas ao design do aparelho e expor suas estruturas internas até certo ponto.
Surgiu, então, uma série de diferentes plataformas proprietárias – e os
desenvolvedores ainda estão ativamente criando aplicativos para elas. Alguns
smartphones rodavam o Palm OS (mais tarde conhecido como Garnet OS) e o
RIM BlackBerry OS. A Sun Microsystems levou sua popular plataforma Java,
e o J2ME emergiu (agora conhecido como Java Micro Edition [ Java ME]). O
fabricante de chipsets Qualcomm desenvolveu e licenciou seu Binary Runtime
Environment for Wireless (ambiente de execução binária para sem-fios, ou
BREW, na sigla em inglês). Outras plataformas, como o Symbian OS, foram
desenvolvidos por fabricantes de aparelhos, tais como Nokia, Sony Ericsson,
Motorola, e Samsung. O iPhone OS da Apple (OS X iPhone) entrou para as fileiras
em 2008. A figura 1.4 mostra vários celulares diferentes, todos com diferentes
plataformas de desenvolvimento.
Muitas dessas plataformas têm programas de desenvolvimento associados.
Esses programas mantêm as comunidades de desenvolvedores pequenas,
examinadas, e sob acordos contratuais sobre o que eles podem e não podem
fazer. Esses programas são muitas vezes necessários e os desenvolvedores devem
pagar por eles.
Cada plataforma tem benefícios e desvantagens. É claro que os desenvolvedores
adoram debater sobre qual plataforma é “a melhor” (dica: geralmente é a
plataforma para a qual estamos atualmente desenvolvendo).
A verdade é que nenhuma plataforma saiu vitoriosa. Algumas plataformas
são mais adequadas para a comercialização de jogos e enriquecimento – se sua
empresa tiver o apoio de uma marca. Outras são mais abertas e apropriadas
para aplicativos dos mercados hobista ou vertical. Nenhuma plataforma móvel
é mais adequada para todos os aplicativos possíveis. Como resultado, o celular
se tornou cada vez mais fragmentado, com todas as plataformas compartilhando
parte do todo.
Download

Desenvolvimento de Aplicativos Wireless para