• Nenhum resultado encontrado

Android em Ação - 3°. Edição

N/A
N/A
Protected

Academic year: 2021

Share "Android em Ação - 3°. Edição"

Copied!
650
0
0

Texto

(1)
(2)

Cadastre-se em www.elsevier.com.br para conhecer nosso catálogo completo,

ter acesso a serviços exclusivos no site e receber informações sobre nossos

(3)

Tradução

Eduardo Kraszczuk e

Edson Furmankiewicz

(4)

© 2012, Elsevier Editora Ltda.

Todos os direitos reservados e protegidos pela Lei no 9.610, de 19/02/1998.

Nenhuma parte deste livro, sem autorização prévia por escrito da editora, poderá ser reproduzida ou transmitida sejam quais forem os meios empregados: eletrônicos, mecânicos, fotográficos, gravação ou quaisquer outros.

Nota: Muito zelo e técnica foram empregados na edição desta obra. No entanto, podem ocorrer erros de

digita-ção, impressão ou dúvida conceitual. Em qualquer das hipóteses, solicitamos a comunicação ao nosso Serviço de Atendimento ao Cliente, para que possamos esclarecer ou encaminhar a questão.

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

Revisão: Edson Rosa

Editoração Eletrônica: Docware Traduções Técnicas

Elsevier Editora Ltda. Conhecimento sem Fronteiras

Rua Sete de Setembro, 111 - 16o andar

20050-006 - Centro - Rio de Janeiro - RJ - Brasil Rua Quintana, 753 - 8o andar

04569-011 - Brooklin - São Paulo - SP - Brasil Serviço de Atendimento ao Cliente 0800-0265340 [email protected]

ISBN 978-85-352-4841-8 (recurso eletrônico) ISBN da edição original: 978-1-617290-50-3

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

Ableson, W. Frank

Android em ação [recuro eletrônico] / W. Frank Ableson, Charlie Collins, Robi Sen ; tradução Eduardo Kraszczuk. - Rio de Janeiro : Elsevier, 2012.

recurso digital

Tradução de: Android in action, 2nd ed. Formato: PDF

Requisitos do sistema: Adobe Acrobat Reader Modo de acesso: World Wide Web

“Edição revisada de Unlocking Android” Apêndice

Inclui índice

ISBN 978-85-352-4841-8 (recurso eletrônico)

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

11-5995. CDD: 004.16 CDU: 004

(5)

Agradecimentos

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

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

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

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

(6)

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

F

rank

a

bleson

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

C

hris

k

ing

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

r

obi

s

en

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

C. e

nrirque

o

rtiz

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

(7)

Prefácio

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

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

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

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

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

(8)
(9)

Sobre este livro

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

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

Quem deve ler este livro?

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

(10)

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

Roteiro

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

Parte 1: Os fundamentos

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

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

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

Parte 2: O ambiente de programação

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

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

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

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

(11)

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

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

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

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

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

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

Parte 3: Combinando tudo

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

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

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

Parte 4: O amadurecimento da plataforma

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

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

(12)

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

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

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

Alarms.

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

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

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

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

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

Apêndices

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

Convenções de código e downloads

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

(13)

xiii os conceitos-chave; e marcadores numerados (como este:

q

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

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

Requisitos de software

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

Uma nota sobre as imagens

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

O autor online

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

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

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

(14)
(15)

Sobre a ilustração da capa

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

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

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

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

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

(16)
(17)

Sumário resumido

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

1 n Apresentando o Android 3

2 n O ambiente de desenvolvimento do Android 34

Parte 2 Usando o Android SDK ...63

3 n Interfaces de usuário 65

4 n Intents e Services 103

5 n Armazenando e recuperando dados 132

6 n Redes e serviços web 162

7 n Telefonia 189

8 n Notificações e alarmes 208

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

10 n Multimídia 262

11 n Trabalhando com a detecção da localização

(18)

Parte 3 Aplicativos Android ...309

12 n Colocando o Android para trabalhar em um aplicativo de

serviço de campo 311

13 n Compilando aplicativos Android em C 357

Parte 4 O amadurecimento da plataforma ...385

14 n Bluetooth e sensores 387

15 n Integração 406

16 n Desenvolvimento web com Android 441

17 n AppWidgets 474

18 n Localização 510

19 n Android Native Development Kit 525

20 n Fragmentos de activity 545

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

(19)

Sumário

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

1

Apresentando o Android 3

1.1 A plataforma Android 4

1.2 Entendendo o mercado do Android 5 Operadoras de telefonia móvel n Android versus feature

phones n Android versus smartphones n Android versus

Android n Licenciando o Android

1.3 As camadas do Android 10

Construindo sobre o kernel Linux n Executando na Dalvik VM

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

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

1.6 Entendendo o arquivo AndroidManifest.xml 25 1.7 Mapeando aplicativos para processos 26

1.8 Criando um aplicativo Android 27

1.9 Android 3.0 para tablets e smartphones 31 Por que desenvolver tablets Android? n Quais as novidades da

(20)

1.10 Resumo 32

2

O ambiente de desenvolvimento do Android 34

2.1 Apresentando o Android SDK 35 Pacotes Android essenciais n Pacotes opcionais

2.2 Explorando o ambiente de desenvolvimento 37

A perspectiva Java n A perspectiva DDMS. n Ferramentas de linha de

comando

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

Android n Empacotando o aplicativo

2.4 Usando o emulador Android 54

Configurando o ambiente emulado n Testando seu aplicativo no

emulador

2.5 Depurando seu aplicativo 61 2.6 Resumo 62

Parte 2 Usando o Android SDK ...63

3

Interfaces de usuário 65

3.1 Criando a Activity 67

Criando uma classe Activity n XML versus layouts

programáticos n Explorando o ciclo de vida da Activity

3.2 Trabalhando com views 76

Explorando views comuns n Usando um ListView n Múltiplas tarefas

com Handler e Message n Criando views personalizadas n Entendendo

o layout n Gerenciando o foco n Entendendo os eventos

3.3 Usando recursos 90

Tipos de recursos suportados n Referenciando recursos

em Java n Definindo views e layouts por meio de recursos

XML n Externalizando valores n Fornecendo animações

3.4 Explorando o arquivo AndroidManifest 99 3.5 Resumo 102

4

Intents e Services 103

4.1 Servindo o RestaurantFinder com Intent 104

Definindo Intents n Invocação implícita e explícita n Adicionando

links externos ao RestaurantFinder n Encontrando seu caminho com

(21)

SUMÁRIO xxi 4.2 Verificando o tempo com um URI personalizado 111

Oferecendo um URI personalizado n Inspecionando um URI

personalizado

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

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

4.5 Comunicando-se com o WeatherAlertService a partir de

outros aplicativos 121

Android Interface Definition Language n Binder e

Parcelable n Expondo uma interface remota n Vinculando-se a um

serviço n Iniciar versus vincular n Ciclo de vida de um serviço

4.6 Resumo 130

5

Armazenando e recuperando dados 132

5.1 Usando preferências 133

Trabalhando com SharedPreferences n Permissões de acesso a

preferências

5.2 Usando o sistema de arquivos 139

Criando arquivos n Acessando arquivos n Arquivos como recursos

brutos n Recursos de arquivo XML n Armazenamento externo em um

cartão SD

5.3 Persistindo dados em um banco de dados 147

Construindo e acessando um banco de dados n Usando a ferramenta

sqlite3

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

5.5 Resumo 161

6

Redes e serviços web 162

6.1 Visão geral de comunicação em rede 164 Princípios básicos de redes n Clientes e servidores

6.2 Verificando o estado da rede 167

(22)

6.4 Trabalhando com HTTP 171

HTTP e java.net simples n HTTP robusto com HttpClient n Criando

um helper HTTP e HTTPS

6.5 Serviços web 181

POX: juntando tudo com HTTP e XML n REST n SOAP ou não

SOAP, eis a questão 6.6 Resumo 188

7

Telefonia 189

7.1 Explorando o background da telefonia e seus termos 190

Entendendo o GSM n Entendendo o CDMA

7.2 Telefone ou não? 192

7.3 Acessando informações de telefonia 193

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

do telefone

7.4 Interagindo com o telefone 197

Usando Intents para fazer chamadas n Usando utilitários relacionados

a números de telefone n Interceptando chamadas de saída

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

7.6 Resumo 206

8

Notificações e alarmes 208

8.1 Apresentando o Toast 209

8.2 Posicionando sua mensagem Toast 211 8.3 Fazendo uma view Toast personalizada 212

8.4 Apresentando notificações 214

A classe Notification n Notificando o usuário com o simples pressionar

de um botão

8.5 Criando uma view Notification personalizada 218

8.6 Apresentando alarmes 220

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

alarmes

8.4 Resumo 227

9

Elementos gráficos e animação 228

9.1 Desenhando elementos gráficos no Android 229 Desenhando com XML n Explorando formas XML drawable

(23)

SUMÁRIO xxiii 9.2 Criando animações com a API Graphics do

Android 234

Animação quadro a quadro do Android n Criando uma animação

programaticamente

9.3 Apresentando a OpenGL for Embedded Systems 240 Criar um contexto OpenGL n Desenhando um retângulo com a

OpenGL ES n Formas e superfícies tridimensionais com OpenGL ES

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

aplicativo RenderScript 9.5 Resumo 261

10

Multimídia 262

10.1 Introdução à multimídia e ao Stagefright 263 Visão geral do Stagefright

10.2 Reproduzindo áudio 265

10.3 Reproduzindo vídeo 266

10.4 Capturando mídia 268

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

10.5 Resumo 284

11

Trabalhando com a detecção da localização

geográfica 285

11.1 Simulando sua localização dentro do emulador 287 Enviando suas coordenadas com a ferramenta DDMS n O GPS

Exchange Format n A Keyhole Markup Language do Google Earth

11.2 Usando LocationManager e LocationProvider 292 Acessando dados de localização com LocationManager n Usando

um LocationProvider n Recebendo atualizações de localização com

LocationListener

11.3 Trabalhando com mapas 299

Estendendo MapActivity n Usando uma MapView n Inserindo dados

em um mapa com um Overlay

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

(24)

Parte 3 Aplicativos Android ...309

12

Colocando o Android para trabalhar em um aplicativo de

serviço de campo 311

12.1 Projetando um aplicativo Android do mundo real 312 Requisitos básicos do aplicativo n Gerenciando os dados n Arquitetura

e integração do aplicativo

12.2 Mapeando o fluxo do aplicativo 316

Mapeando o aplicativo de serviço de campo n Lista de

arquivos-fonte n AndroidManifest.xml do aplicativo de serviço de campo

12.3 Código-fonte do aplicativo 321 SplashActivity n Preferências usadas pela

FieldService Activity n Implementando a FieldService

Activity n Configurações n Gerenciando dados do trabalho

12.4 Código-fonte para o gerenciamento dos trabalhos 335 RefreshJobs n Gerenciando os trabalhos: a Activity

ManageJobs n Lidando com um trabalho com a Activity

ShowJob n A captura de uma assinatura com a Activity

CloseJob

12.5 Código do servidor 353

Interface do usuário expedidor n Banco de dados n Código de

expedição em PHP n Código de integração móvel em PHP

12.6 Resumo 356

13

Compilando aplicativos Android em C 357

13.1 Compilando aplicativos Android sem o SDK 358 As ferramentas de compilação e vinculador do C n Compilando um

aplicativo Hello World n Instalando e executando o aplicativo n Script

de compilação de um aplicativo C

13.2 Resolvendo o problema com vinculação dinâmica 364 Bibliotecas de sistema Android n Compilando um aplicativo

dinamicamente vinculado n exit() versus return() n Código de partida

13.3 Que horas são? O DayTime Server 371

Aplicativo DayTime Server n daytime.c n O banco de dados

SQLite n Compilando e executando o DayTime Server

13.4 DayTime Client 379

Activity n Soquete de cliente n Testando o DayTime Client

(25)

SUMÁRIO xxv

Parte 4 O amadurecimento da plataforma ...385

14

Bluetooth e sensores 387

14.1 Explorando as capacidades do Android Bluetooth 388 Substituindo cabos n Papéis primários e secundários e

soquetes n Confiando em um dispositivo n Conectando-se a um

dispositivo remoto n Capturando eventos de Bluetooth n Permissões

Bluetooth

14.2 Interagindo com o SensorManager 395

Tipos de sensores n Lendo valores de sensor n Ativação e desativação

de sensores

14.3 Criando o aplicativo SenseBot 399

Interface do usuário n Interpretando os valores do sensor n Guiando o

robô n Comunicação com o robô

14.4 Resumo 405

15

Integração 406

15.1 Entendendo o modelo de contato do Android 407 Escolhendo registros abertos n Lidando com múltiplas contas n Uma

visualização unificadora a partir de diversos armazenamentos remotos n Compartilhando o playground

15.2 Introdução ao LinkedIn 412

15.3 Gerenciando contatos 414

Tirando proveito do aplicativo Contacts integrado n Solicitando

operações a partir de seu aplicativo n Lendo e modificando os contatos

diretamente no banco de dados n Adicionando contatos

15.4 Mantendo tudo junto 422

O sonho da sincronização n Definindo contas n Contando segredos:

o serviço AccountManager

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

15.6 Sincronizando com o backend usando SyncAdapter 433

O ciclo de vida da sincronização n Sincronizando dados do LinkedIn

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

problemas n Seguindo em frente

(26)

16

Desenvolvimento web Android 441

16.1 O que é desenvolvimento web Android? 442 Apresentando o WebKit n Examinando as opções de arquitetura

16.2 Otimizando aplicativos web para o Android 444 Projetando para uso móvel n Adicionando o tag

viewport n Carregando conteúdo seletivamente n Interrogando o agente

do usuário n A pesquisa de mídia n Considerando um aplicativo

voltado para dispositivos móveis

16.3 Armazenando dados diretamente no navegador 451 Configurando as coisas n Examinando o código n Interface de

usuário n Abrindo o banco de dados n Desempacotando a função

transaction n Inserindo e excluindo linhas n Testando o aplicativo

com as ferramentas WebKit

16.4 Construindo um aplicativo híbrido 460 Examinando o controle do navegador n Preparando o

controle n Implementando o handler JavaScript n Acessando

o código de JavaScript n Cavando o JavaScript n Questões de

segurança n Implementando um WebViewClient n Aprimorando o

navegador n Detectando eventos de navegação n Implementando

WebChromeClient 16.5 Resumo 473

17

AppWidgets 474

17.1 Apresentando o AppWidget 475

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

17.2 Apresentando o SiteMonitor 478

Os benefícios do SiteMonitor n A experiência do usuário

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

17.4 Gerenciamento de dados de AppWidget 485 17.5 Implementando o AppWidgetProvider 488

Inventário do método AppWidgetProvider n Implementando

SiteMonitorWidgetImpl n Lidando com widgets zumbis

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

17.7 Configurando uma instância de AppWidget 496 Metadados de AppWidget n Trabalhando com dados de

(27)

SUMÁRIO xxvii 17.8 Atualizando o AppWidget 500

Comparando services a alarms n Disparando a

atualização n Atualizando os widgets, finalmente!

17.9 Unindo tudo com AndroidManifest.xml 507

17.10 Resumo 508

18

Localização 510

18.1 A necessidade da localização 511

18.2 Explorando locais 512

18.3 Estratégias para localizar um aplicativo 513 Identificando locais e dados alvo n Identificando e gerenciando

strings n Drawables e layouts n Datas, horas, números e

moedas n Trabalhando com a equipe de tradução

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

18.5 Localização dinâmica em Java 520 18.6 Formatando strings localizadas 522 18.7 Obstáculos para a localização 523 18.8 Resumo 524

19

Android Native Development Kit 525

19.1 Apresentando o NDK 526 Usos do NDK n Examinando o NDK

19.2 Construindo um aplicativo com o NDK 528

Demonstrando o aplicativo completo n Examinando a estrutura do

projeto

19.3 Construindo a biblioteca JNI 530

Entendendo o JNI n Implementando a biblioteca n Compilando a

biblioteca JNI

19.4 Construindo a interface de usuário 537

Layout da interface de usuário n Tirando uma foto n Encontrando as

bordas

19.5 Integrando o NDK ao Eclipse 542

19.6 Resumo 544

20

Fragmentos de activity 545

20.1 Ciclo de vida de fragmento 546

20.2 Criando de fragmentos e layouts de fragmento 547 Crie a subclasse do fragmento n Definindo um layout de

(28)

20.3 Fragmentos de segundo plano 553 20.4 O gerenciador de fragmentos 555 20.5 Transações de fragmento 556 20.6 Pilha de fragmentos 556

20.7 O Android Compatibility Package 557 20.8 Resumo 559

21

A barra de ações do Android 3.0 560

21.1 Introdução à barra de ações 560 21.2 Visão geral das classes ActionBar 562 21.3 Opções de exibição da barra de ações 563

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

21.4 Itens de ação 571

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

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

21.6 Estilizando a barra de ações 576 21.7 Resumo 578

22

Arrastar e soltar 579

22.1 As classes de arrastar e soltar 580 22.2 Operações de arrastar e soltar 582 22.3 O construtor de sombras 583 22.4 Eventos de arrastar 585

22.5 Iniciando operações de arrastar 586 22.6 Ouvindo eventos de arrastar e soltar 587

22.7 Respondendo a operações de início de arrastar 588 22.8 Tratando operações de soltar 589

22.9 Resumo 590

Apêndice A Instalando o Android SDK 591

Apêndice B Publicando aplicativos 601

(29)

Parte1

O que é Android?

Uma visão geral

O

Android tornou-se uma plataforma de tecnologia capaz de mover o mer-cado — não só por causa da funcionalidade disponível na plataforma, mas por causa de como a plataforma entrou no mercado. A Parte 1 deste livro fornece uma visão geral para você como desenvolvedor da plataforma de código-fonte aberto Android. Começamos examinando a plataforma Android e o impacto que ela teve em cada um dos maiores protagonistas no mercado de aplicativos para aparelhos celulares (Capítulo 1). Vamos trazê-lo a bordo do desenvolvimento de aplicativos para An-droid com um passeio prático pelo ambiente de desenvolvimento do AnAn-droid (Ca-pítulo 2).

(30)
(31)

1

Apresentando o Android

Visão geral do capítulo:

Explorando o Android, a plataforma de celular e tablet de código-fonte aberto Os Intents do Android, como as coisas funcionam

Aplicativo de exemplo

Você já ouviu falar do Android. Você já leu sobre o Android. Agora, é hora de come-çar a desvendar o Android.

Android é uma plataforma de software que está revolucionando o mercado global de aplicativos para celulares. É a primeira plataforma de aplicativos para telefones celulares de código-fonte aberto que se fez notar pelos maiores mercados de telefo-nia celular do globo. Quando você examina o Android, existem diversas dimensões técnicas e mercadológicas a considerar. A primeira seção introduz a plataforma e fornece o contexto para ajudá-lo a entender melhor o Android e onde ele se encai-xa na cena global dos aplicativos para celulares. Além do mais, o Android eclipsou o mercado de telefonia celular e, com o lançamento do Android 3.X, começou a fazer também incursões no mercado de tablets. Este livro concentra-se no uso dos SDKs do 2.0 ao 3.X

O Android é primariamente um esforço do Google, em colaboração com a Open Handset Alliance. Open Handset Alliance é uma aliança de dezenas de organiza-ções comprometidas em trazer para o mercado um telefone celular “melhor” e mais “aberto”. Considerado uma curiosidade por alguns no começo, o Android cresceu em poucos anos para se tornar um ator capaz de mudar o mercado, ganhando tanto respeito como escárnio dos seus colegas da indústria.

Este capítulo apresenta o Android — o que ele é, e, igualmente importante, o que ele não é. Após ler este capítulo, você irá entender como o Android é cons truído, como ele se compara com outras opções do mercado e quais são suas tecnologias fundamentais. Além disso, você terá uma prévia da arquitetura de um aplicativo

(32)

Android. Mais especificamente, este capítulo examina a plataforma Android e sua relação com o popular sistema operacional Linux, a linguagem de programação Java e o ambiente de tempo de execução conhecido como Dalvik virtual machine (VM).

Conhecimentos em programação Java são úteis ao longo do livro, mas este capítulo é mais sobre preparar o palco do que sobre detalhes de codificação. Um elemento de código apresentado neste capítulo é a classe Intent. Entender bem e sentir-se à vontade com a classe Intent é essencial para trabalhar com a plataforma Android.

Além do Intent, este capítulo apresenta os quatro componentes principais do apli-cativo: Activity, Service, ContentProvider e BroadcastReceiver. O capítulo é concluído com um aplicativo Android simples para fazê-lo começar rapidamente.

1.1

A plataforma Android

O Android é um ambiente de software escrito para dispositivos móveis. Não é uma plataforma de hardware. O Android inclui um Sistema Operacional (OS) baseado em um kernel Linux, uma rica Interface de Usuário (IU), aplicativos de usuário, bibliotecas de código, frameworks de aplicativo, suporte a multimídia e muito mais. E sim, até funcionalidades de telefone estão incluídas! Enquanto os componentes do OS estão escritos em C ou C++, os aplicativos de usuários são escritos em Java para Android. Mesmo os aplicativos embutidos são escritos em Java. Com exceção de alguns exercícios exploratórios do Linux no Capítulo 13 e o Native Development Kit (NDK) no Capítulo 19, todos os exemplos de código neste livro estão escritos em Java, usando o Android Software Development Kit (SDK).

Uma característica da plataforma Android é que não existe diferença entre os aplicativos integrados e os aplicativos que você cria com o SDK. Isso significa que você pode escrever poderosos aplicativos que acessam os recursos disponíveis no dispositivo. A Figura 1.1 mostra a

re-lação entre o Android e o hardware em que ele é executado. A principal característica do Android é que seu código-fonte é aberto. Elementos fal-tantes podem ser fornecidos pela co-munidade global de desenvolvedores. O OS baseado em Linux do Android não possui um ambiente de shell so-fisticado, mas como a plataforma é aberta, você pode escrever e instalar shells em um dispositivo. Do mesmo modo, codecs multimídia podem ser fornecidos por desenvolvedores inde-pendentes e não é necessário depen-der do Google ou de mais ninguém para fornecer novas funcionalidades. Esse é o poder de uma plataforma de código-fonte aberto no mercado móvel. do Android Ambiente de software Aplicativos personalizados e integrados escritos em Java Kernel Linux Máquina virtual Dalvik virtual

Figura 1.1 O Android é somente software.

Tiran-do proveito Tiran-do seu kernel Linux para a interface com o hardware, o Android roda em muitos dispo-sitivos de vários fabricantes. Os desenvolvedores escrevem aplicativos em Java.

(33)

Entendendo o mercado do Android 5

PLATAFORMA VERSUS DISPOSITIVO Neste livro, sempre que o código precisar

ser testado em um dispositivo, geralmente será utilizado um software emulador. Há uma exceção no Capítulo 14, onde testamos Bluetooth e sensores. Consulte o Capítulo 2 para obter informações sobre como configurar e usar o emulador do Android.

O termo plataforma se refere ao próprio Android — o software — incluindo todos os binários, bibliotecas de código e ferramentas. Este livro se concentra na plataforma Android. Os emuladores de Android disponíveis no SDK são sim-ples componentes da plataforma Android.

Com tudo isso como fundo, criar uma plataforma móvel de sucesso é claramente uma tarefa não trivial, envolvendo diversos jogadores. O Android é um empreendi-mento ambicioso, mesmo para o Google, uma companhia de recursos e determina-ção que parecem sem limites — e eles estão realizando o trabalho. Em um período de três anos, o Android passou por vários grandes releases de software, o release de diversos aparelhos das maiores operadoras do mercado global e, mais recentemen-te, a introdução de tablets com tecnologia Android.

Agora que você foi apresentado ao que é o Android, vamos examinar o porquê e onde do Android para dar um pouco de contexto e dar a perspectiva da introdução do Android no mercado. Depois disso, vamos explorar a própria plataforma!

1.2

Entendendo o mercado do Android

O Android promete ter alguma coisa para todos. Ele visa suportar uma variedade de dispositivos de hardware, não somente dispositivos de ponta associados tipica-mente com caros smartphones. É claro, os usuários do Android vão desfrutar de desempenho melhor em um dispositivo mais poderoso, uma vez que ele possui uma série de características computacionais melhores. Mas como o Android consegue se adaptar a uma variedade de mercados e aumentar sua fatia de mercado e de mind share? Com que rapidez o mercado de smartphones se torna o padrão? Algumas pessoas ainda se apegam a dispositivos que são só telefones, embora os smartphones estejam crescendo rapidamente em todas as faixas demográficas. Vamos examinar o Android da perspectiva de alguns atores já existentes no mercado. Quando se fala do mercado de celulares, o lugar para começar é no topo, com as portadoras, ou, como às vezes são chamadas, operadoras de telefonia móvel.

1.2.1 Operadoras de telefonia móvel

As operadoras de telefonia celular (companhias de telefonia como a AT&T e a Ve-rizon) estão no negócio, acima de tudo, de vender assinaturas dos seus serviços. Os acionistas querem retorno do seu investimento, e é difícil imaginar uma indústria com maior investimento do que uma rede que se estende por territórios geográficos tão extensos. Para a operadora de telefonia móvel, os celulares são simultaneamente um canal de serviços, uma droga para atrair assinantes e um incômodo para supor-tar e manter.

Algumas operadoras estão abraçando o Android como uma plataforma para levar os novos serviços de dados além do excesso de capacidade que as

(34)

operado-ras possuem nas suas redes. Os serviços de dados são serviços premium, com alta margem de lucro para a operadora. Se o Android puder ajudar a aumentar os lucros da operadora, muito melhor!

Outras operadoras se sentem ameaçadas pelo Google e o potencial de “wireless gratuito”, suportado por anúncios e uma revolução no mercado. Outro desafio para as operadoras é que elas querem ter a palavra final sobre que serviços são permitidos nas suas redes. Historicamente, os fabricantes de aparelhos reclamam que seus dis-positivos são deficientes e não executam todos os recursos projetados neles porque as operadoras não têm a capacidade ou vontade de suportar esses recursos. Um sinal encorajador é que existem operadoras envolvidas na Open Handset Alliance.

Vamos fazer agora uma comparação entre o Android e os telefones celulares existentes hoje no mercado.

1.2.2 Android versus feature phones

A maioria dos celulares no mercado continua a ser telefones do tipo flip e feature phones — telefones que não são smartphones.1 Esses telefones são aqueles que os consumidores recebem quando entram na loja e perguntam o que podem receber de graça. Esses consumidores são aqueles que dizem “eu só quero um telefone”. Seu interesse principal é um telefone para comunicação por voz, uma agenda de contatos e, cada vez mais, texto. Talvez eles queiram até uma câmera. Muitos desses telefones possuem características adicionais

como navegação na web, mas devido à expe-riência de usuário relativamente pobre, essas características não são muito usadas. A única exceção são as mensagens de texto, que são a aplicação dominante, independente da classificação do dispositivo. Outra categoria cada vez mais procurada são os serviços de localização, que geralmente usam o Global Positioning System (GPS) .

O desafio do Android é se adaptar a esse mercado. Alguns dos recursos não essenciais do Android podem ser deixados de fora para se encaixar em hardwares mais básicos. Uma das grandes lacunas nas funcionalidades desses telefones básicos é a experiência web do usuário. Parte do problema é o tamanho da tela, mas igualmente desafiador é a pró-pria tecnologia do navegador, que muitas vezes luta para se igualar à rica experiên-cia dos computadores desktop. O Android possui o mecanismo de navegador WebKit,

1 Aproximadamente 25% dos telefones vendidos nos EUA no segundo trimestre de 2011 foram smartphones:

http://www.gartner.com/it/page.jsp?id=1764714.

Figura 1.2 A tecnologia nativa do

nave-gador do Android é baseada no mecanis-mo de navegador WebKit.

(35)

Entendendo o mercado do Android 7 líder de mercado, que traz para a arena de celulares uma navegação compatível com os desktops. A Figura 1.2 mostra o WebKit em ação no Android. Se uma experiência rica na web puder ser efetivamente adaptada para o hardware da classe dos feature phones, isso seria um grande avanço para penetração nessa faixa do mercado. O Capítulo 16 examina mais de perto o uso de conhecimentos de desenvolvimento web na criação de aplicativos Android.

WEBKIT O mecanismo de navegador WebKit (www.webkit.org) é um projeto

de código-fonte aberto que alimenta o navegador encontrado nos Macs (Safari) e é o mecanismo por trás do Safari Mobile, o navegador do iPhone. Não é exa- gero dizer que a experiência do navegador é um dos poucos recursos que tornou o iPhone popular desde o seu lançamento, de tal modo que sua inclu-são no Android é uma forte adição à arquitetura do Android.

Os softwares na faixa inferior do mercado geralmente se dividem em dois campos:

Ambiente BREW da Qualcomm — BREW significa Binary Runtime Enviroment for Wirelles (ambiente de tempo de execução binário para rede sem fio). Para um exemplo de alto volume da tecnologia BREW, considere os dispositivos “Get It Now” da Verizon, que rodam nessa plataforma. O desafio para os desenvolve-dores de software que querer ter acesso a esse mercado é que as barreiras para colocar um aplicativo nessa plataforma são muitas, porque tudo é gerenciado pela operadora de celular, com testes caros e estruturas de divisão de lucros. A vantagem dessa plataforma é que a operadora coleta o dinheiro e o repassa para o desenvolvedor após a venda, e frequentemente essas vendas ocorrem mensal-mente. Todo o resto é um desafio para o desenvolvedor de software. O ambiente de aplicativos abertos do Android é mais acessível que o BREW.

Java ME, ou Plataforma Java, Edição Micro — Uma plataforma popular nessa classe

de dispositivos. A barreira para entrada é muito menor para os desenvolvedores de software. Os desenvolvedores para Java ME encontraram um ambiente “pare-cido mas diferente” no Android. O Android não é uma plataforma estritamente compatível com Java-ME, mas o ambiente de programação Java encontrado no Android é um extra para os desenvolvedores para Java ME. Existem alguns pro-jetos em andamento para criar um ambiente-ponte, com a intenção de permitir que os aplicativos Java ME sejam compilados e executados em Android. Jogos, um navegador melhor e qualquer coisa relacionada a mensagens de texto e aplicati-vos sociais fornecem um território fértil para o Android nessa faixa do mercado. Embora a maioria dos celulares vendidos no mundo não seja considerada smart-phones, a popularidade do Android (e outras plataformas similares) aumentou a de-manda por dispositivos com funções avançadas. Isso é o que vamos discutir a seguir. 1.2.3 Android versus smartphones

Vamos começar enumerando as maiores empresas de smartphones: Symbian (grande excluído da América do Norte), BlackBerry da Research in Motion, iPhone da Apple, Windows (Mobile, SmartPhone, e agora Phone 7), e, é claro, a cada vez mais popular plataforma Android.

(36)

Uma das maiores preocupações do mercado de smartphones é se uma platafor-ma pode sincronizar dados e acessar sisteplatafor-mas de inforplatafor-mação corporativos para usu-ários empresariais. Ferramentas de gerenciamento de dispositivos são também um fator importante no mercado empresarial. A experiência de navegador é melhor do que nos celulares básicos, principalmente por causa das telas maiores e métodos de entrada mais intuitivos, tais como telas sensíveis ao toque, touch pad, teclados desli-zantes e controles giratórios.

A oportunidade do Android nesse mercado é fornecer um dispositivo e software que as pessoas queiram. Para todos os aplicativos disponíveis no iPhone, trabalhar com a Apple pode ser um desafio. Se o dispositivo não atender suas necessidades, há pouco espaço para manobra, por causa dos poucos modelos disponíveis e a histórica exclusividade de operadora. Agora que email, calendário e contatos podem ser sin-cronizados com o Microsoft Exchange, o ambiente corporativo está mais acessível, mas o Android vai continuar lutando para escalar as muralhas empresariais. Mais tarde, lançamentos do Android adicionaram suporte melhorado à plataforma Mi-crosoft Exchange, embora soluções de terceiros ainda tenham desempenho melhor que as nativas. O BlackBerry é dominante por causa das suas capacidades intuitivas de email, e as plataformas da Microsoft são convincentes por causa na integração à experiência de desktop e a familiaridade com os usuários Windows. O iPhone possui uma integração surpreendentemente boa com o Microsoft Exchange — Para o Android competir nessa arena, ele deve manter a paridade com o iPhone no su-porte empresarial.

Você viu agora como o Android se posiciona em comparação com os celulares básicos e com os smartphones. Agora, vamos ver se o Android, a plataforma de código-fonte aberto móvel, pode ter sucesso como projeto de código-fonte aberto. 1.2.4 Android versus Android

O Android provavelmente será sempre um projeto de código-fonte aberto, mas para ter sucesso no mercado móvel, ele deve vender milhões de unidades e continuar novo. Embora o Google tenha brevemente entrado na guerra dos dispositivos com seus celulares Nexus One e Nexus S, ele não é uma empresa de hardware. Histo-ricamente, os dispositivos com tecnologia Android são lançados no mercado por outras empresas, como a HTC, Samsung e Motorola, para citar os maiores atores. A partir da metade de 2011, o Google começou a ostentar sua força com a aquisição da divisão de negócios de telefonia celular da Motorola. Especula-se que o principal interesse do Google está no portfólio de patentes da Motorola, pois o panorama da propriedade intelectual está consideravelmente aquecido. Uma segunda razão pode ser adquirir a plataforma Motorola Xoom enquanto o Android continua a chegar aos telefones celulares, tablets e além disso. Quando um fabricante cria um dispositivo com tecnologia Android, ele começa com a Android Open Source Pla-tform (AOSP) e a estende para atender sua necessidade de diferenciar suas ofertas. O Android não foi o primeiro telefone de código-fonte aberto, mas foi o primeiro de um jogador com o peso mercadológico do Google liderando o ataque. Essa po-sição de liderança de mercado já se traduziu em impressionantes vendas entre os diversos fabricantes e mercados em todo o mundo. Com a variedade de dispositivos

(37)

Entendendo o mercado do Android 9 no mercado, poderá o Android deter a fragmentação há muito esperada da confian-ça do consumidor e investidor?

O código-fonte aberto é uma faca de dois gumes. Por um lado, o poder de muitas pessoas e companhias talentosas trabalhando ao redor do mundo e em tempo inte-gral para entregar recursos desejáveis é uma força a ser respeitada, particularmente em comparação com a abordagem comercial tradicional do desenvolvimento de software. Esse tópico é trivial, porque os benefícios do desenvolvimento de código--fonte aberto são bem documentados. Por outro lado, quanto os fabricantes concor-rentes irão expandir e potencialmente dividir o Android? Dependendo da sua pers-pectiva, a variedade de ofertas do Android é uma alternativa bem-vinda à plataforma mais monolítica do iPhone, onde os consumidores têm poucas opções disponíveis.

Outro desafio para o Android é que o modelo de licenciamento do código de código-fonte aberto para uso comercial pode ser complexo. Algumas licenças de software são mais restritivas que outras e algumas destas restrições oferecem um desafio ao modelo de código-fonte aberto. Ao mesmo tempo, os licenciadores de Android precisam proteger seu investimento, então o licenciamento é um tópico importante para a comercialização do Android.

1.2.5 Licenciando o Android

O Android é lançado com duas diferentes licenças de código-fonte aberto. O kernel Linux é lançado com a GNU General Public License (GPL), uma vez que ela é reque-Vendendo aplicativos

Uma plataforma móvel é valiosa somente se existirem aplicativos para serem usados e aproveitados nela. Para isso, o tópico de comprar e vender aplicativos para Android é importante e nos dá uma oportunidade de destacar uma diferença chave entre o Android e o iPhone. A AppStore da Apple contém softwares para o iPhone — muitos deles. Mas o controle algo draconiano da Apple sobre o mercado de softwares para iPhone requer que todos os aplicativos sejam vendidos neste ambiente. Embora o controle de direitos digitais (DRM) da Apple seja invejado pelo mercado, esta abordagem pode criar um ambiente desafiador para os desenvolvedores de software, que podem preferir disponi-bilizar seus aplicativos por meio de múltiplos canais de distribuição.

Em contraste com a abordagem da Apple para a distribuição de aplicativos está a liberdade que os desenvolvedores Android desfrutam para vender seus aplicativos por meios tradicionais, como freeware e shareware, e comercialmente por meio de diversas lojas, incluindo o próprio web site! Para os vendedores de software que desejam uma experiência de compra no dispositivo, o Google lançou e continua a melhorar o Android Market. Para desenvolvedores de software que já possuem títulos em outras platafor-mas, tais como Windows Mobile, Palm e BlackBerry, mercados tradicionais de software como o Handango, (www.Handango.com) também dão suporte à venda de aplicativos Android. O Handango e seus similares são lojas importantes. Os consumidores novatos no Android vão provavelmente visitar sites como o Handango, porque este pode ser o lugar onde eles compraram um dos aplicativos favoritos do dispositivo anterior.

(38)

rida para qualquer um que licencie o kernel OS de código-fonte aberto. A platafor-ma Android, excluindo o kernel, é licenciada sob a Apache Software License (ASL). Embora os dois modelos de licença sejam orientados a código-fonte aberto, a prin-cipal diferença é que a licença Apache é considerada mais amigável ao uso comer-cial. Alguns puristas do código-fonte aberto podem achar errado qualquer coisa diferente de abertura completa, distribuição de código fonte e não comercialização. A ASL procura equilibrar os objetivos de de código-fonte aberto e forças de merca-do. Até então, havia ocorrido apenas um problema de licenciamento que afetara a comunidade Android, e ela teve mais a ver com uma área cinzenta nas imagens de sistema completo do que com o uso do Android por um fabricante em uma versão do produto. Atualmente, o Android está enfrentando desafios relativos a proprie-dade intelectual: tanto a Microsoft quanto a Apple estão abrindo processos contra a Motorola e a HTC devido aos aparelhos Android desses fabricantes.

A parte geral do livro, orientada ao mercado, terminou aqui! O restante do livro é focalizado no desenvolvimento de aplicativos Android. Qualquer discussão técni-ca sobre um ambiente de software deve incluir uma revisão das técni-camadas que com-põem o ambiente, chamadas camadas por causa da sua construção em pilhas. A seguir, uma discriminação geral dos componentes da pilha Android.

1.3

As camadas do Android

A pilha do Android inclui uma impressionante gama de recursos para aplicativos móveis. De fato, examinando somente a arquitetura, sem o contexto de o Android ser uma plataforma projetada para ambientes móveis, seria fácil confundir o An-droid com um ambiente computacional geral. Todos os maiores componentes de uma plataforma computacional estão presentes. Aqui temos uma rápida descrição dos componentes proeminentes da pilha Android:

Um kernel Linux que fornece uma camada fundamental de abstração de

hardwa-re, além de serviços base como gerenciamento de processos, memória e sistema de arquivos. O kernel é onde os drivers específicos de hardware são implementa-dos — recursos como Wi-Fi e Bluetooth são encontraimplementa-dos aqui. A camada Android é projetada para ser flexível, com muitos componentes opcionais que dependem muito da disponibilidade do hardware específico de um dado dispositivo. Esses componentes incluem recursos como teclas sensíveis ao toque, câmeras, recepto-res GPS e acelerômetros.

Bibliotecas de código proeminentes, incluindo o seguinte:

– Tecnologia de navegador do WebKit, o mesmo mecanismo de código-fonte aberto por trás dos navegadores Safari do Mac e Safari Mobile do iPhone. O WebKit se tornou o padrão de fato para a maioria das plataformas móveis. – Suporte a bancos de dados via SQLite, um banco de dados SQL fácil de usar. – Suporte gráfico avançado, incluindo 2D, 3D, animações com a Scalable

Ga-mes Language (SGL), e OpenGL ES.

– Suporte a áudio e vídeo com o OpenCORE da PacketVideo e o framework de mídia Stagefright do Google.

Referências

Documentos relacionados

Este presente artigo é o resultado de um estudo de caso que buscou apresentar o surgimento da atividade turística dentro da favela de Paraisópolis, uma

Boa parte das questões que afetam o ambiente no qual as instituições estão inseridas será discutida nos capítulos que compõem a tese, tais como: a agenda da pesquisa pública frente

As principais indicações para a realização foram a suspeita de tuberculose (458 pacientes) e uso de imunobiológicos (380 pacientes).. A maior prevalência de resultado positivo

Safatle que na filosofia política moderna se tem algo que parece onipresente é a ideia de que a política é indissociável das modalidades de produção de um corpo político

Pode haver alguns acordos prévios, como visto na classificação proposta em trabalho anterior (GUERRERO, 2006), mas estes são propostos sempre mantendo elevado

Entendendo, então, como posto acima, propõe-se, com este trabalho, primeiramente estudar a Lei de Busca e Apreensão para dá-la a conhecer da melhor forma, fazendo o mesmo com o

A variação do pH da fase móvel, utilizando uma coluna C8 e o fluxo de 1,2 mL/min, permitiu o ajuste do tempo de retenção do lupeol em aproximadamente 6,2 minutos contribuindo para

Contudo, não é possível imaginar que essas formas de pensar e agir, tanto a orientada à Sustentabilidade quanto a tradicional cartesiana, se fomentariam nos indivíduos