Sei sulla pagina 1di 48

Android

Versão 1.0.0
Sumário

I Sobre essa Apostila 2

II Informações Básicas 4

III GNU Free Documentation License 9

IV Android 18

1 Android 19

2 O que é Android? 20
2.1 ANDROID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2 Opções: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3 Arquitetura Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3 Instalando SDK, Requisitos, Depuração e Dicas 24


3.1 Sistema e Requisitos de Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2 Instalação do SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.3 Desenvolvendo aplicações Android no Eclipse . . . . . . . . . . . . . . . . . . . . . 27
3.4 Executando e Depurando uma aplicação . . . . . . . . . . . . . . . . . . . . . . . . 28
3.5 Criação de um projeto Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.6 Dicas de depuração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.7 Construir e instalar uma aplicação Android . . . . . . . . . . . . . . . . . . . . . . . 33
3.8 Remoção de um aplicativo Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.9 Dicas para Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

4 Anatomia de uma Aplicação Android 35


4.1 Activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.2 Intent e Intent Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.3 Intent Receiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.4 Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.5 Content Provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

5 Ferramentas de Desenvolvimento e Ciclo de Vida de uma Aplicação 38


5.1 Ferramentas de Desenvolvimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.2 Ciclo de vida de uma aplicação Android . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.3 Filosofia para Design de aplicações Android . . . . . . . . . . . . . . . . . . . . . . . 41

1
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

5.4 Glossário Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43


5.5 Considerações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.6 Sítios de Referência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

2
Parte I

Sobre essa Apostila

3
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Conteúdo
O conteúdo dessa apostila é fruto da compilação de diversos materiais livres publicados na in-
ternet, disponíveis em diversos sites ou originalmente produzido no CDTC (http://www.cdtc.org.br.)

O formato original deste material bem como sua atualização está disponível dentro da licença
GNU Free Documentation License, cujo teor integral encontra-se aqui reproduzido na seção de
mesmo nome, tendo inclusive uma versão traduzida (não oficial).

A revisão e alteração vem sendo realizada pelo CDTC (suporte@cdtc.org.br) desde outubro
de 2006. Críticas e sugestões construtivas serão bem-vindas a qualquer hora.

Autores
A autoria deste é de responsabilidade de Edson Hungria Junior (hungria@cdtc.org.br) .

O texto original faz parte do projeto Centro de Difusão de Tecnologia e Conhecimento que
vêm sendo realizado pelo ITI (Instituto Nacional de Tecnologia da Informação) em conjunto com
outros parceiros institucionais, e com as universidades federais brasileiras que tem produzido e
utilizado Software Livre apoiando inclusive a comunidade Free Software junto a outras entidades
no país.

Informações adicionais podem ser obtidas através do email ouvidoria@cdtc.org.br, ou da


home page da entidade, através da URL http://www.cdtc.org.br.

Garantias
O material contido nesta apostila é isento de garantias e o seu uso é de inteira responsabi-
lidade do usuário/leitor. Os autores, bem como o ITI e seus parceiros, não se responsabilizam
direta ou indiretamente por qualquer prejuízo oriundo da utilização do material aqui contido.

Licença
Copyright ©2006, Instituto Nacional de Tecnologia da Informação (cdtc@iti.gov.br) .

Permission is granted to copy, distribute and/or modify this document under the terms
of the GNU Free Documentation License, Version 1.1 or any later version published by
the Free Software Foundation; with the Invariant Chapter being SOBRE ESSA APOS-
TILA. A copy of the license is included in the section entitled GNU Free Documentation
License.

4
Parte II

Informações Básicas

5
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Sobre o CDTC

Objetivo Geral

O Projeto CDTC visa a promoção e o desenvolvimento de ações que incentivem a dissemina-


ção de soluções que utilizem padrões abertos e não proprietários de tecnologia, em proveito do
desenvolvimento social, cultural, político, tecnológico e econômico da sociedade brasileira.

Objetivo Específico

Auxiliar o Governo Federal na implantação do plano nacional de software não-proprietário e


de código fonte aberto, identificando e mobilizando grupos de formadores de opinião dentre os
servidores públicos e agentes políticos da União Federal, estimulando e incentivando o mercado
nacional a adotar novos modelos de negócio da tecnologia da informação e de novos negócios
de comunicação com base em software não-proprietário e de código fonte aberto, oferecendo
treinamento específico para técnicos, profissionais de suporte e funcionários públicos usuários,
criando grupos de funcionários públicos que irão treinar outros funcionários públicos e atuar como
incentivadores e defensores dos produtos de software não proprietários e código fonte aberto, ofe-
recendo conteúdo técnico on-line para serviços de suporte, ferramentas para desenvolvimento de
produtos de software não proprietários e do seu código fonte livre, articulando redes de terceiros
(dentro e fora do governo) fornecedoras de educação, pesquisa, desenvolvimento e teste de pro-
dutos de software livre.

Guia do aluno

Neste guia, você terá reunidas uma série de informações importantes para que você comece
seu curso. São elas:

• Licenças para cópia de material disponível;

• Os 10 mandamentos do aluno de Educação a Distância;

• Como participar dos foruns e da wikipédia;

• Primeiros passos.

É muito importante que você entre em contato com TODAS estas informações, seguindo o
roteiro acima.

Licença

Copyright ©2006, Instituto Nacional de Tecnologia da Informação (cdtc@iti.gov.br).

6
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

É dada permissão para copiar, distribuir e/ou modificar este documento sob os termos
da Licença de Documentação Livre GNU, Versão 1.1 ou qualquer versão posterior
públicada pela Free Software Foundation; com o Capitulo Invariante SOBRE ESSA
APOSTILA. Uma cópia da licença está inclusa na seção entitulada "Licença de Docu-
mentação Livre GNU".

Os 10 mandamentos do aluno de educação online

• 1. Acesso à Internet: ter endereço eletrônico, um provedor e um equipamento adequado é


pré-requisito para a participação nos cursos a distância;

• 2. Habilidade e disposição para operar programas: ter conhecimentos básicos de Informá-


tica é necessário para poder executar as tarefas;

• 3. Vontade para aprender colaborativamente: interagir, ser participativo no ensino a distân-


cia conta muitos pontos, pois irá colaborar para o processo ensino-aprendizagem pessoal,
dos colegas e dos professores;

• 4. Comportamentos compatíveis com a etiqueta: mostrar-se interessado em conhecer seus


colegas de turma respeitando-os e se fazendo ser respeitado pelos mesmos;

• 5. Organização pessoal: planejar e organizar tudo é fundamental para facilitar a sua revisão
e a sua recuperação de materiais;

• 6. Vontade para realizar as atividades no tempo correto: anotar todas as suas obrigações e
realizá-las em tempo real;

• 7. Curiosidade e abertura para inovações: aceitar novas idéias e inovar sempre;

• 8. Flexibilidade e adaptação: requisitos necessário à mudança tecnológica, aprendizagens


e descobertas;

• 9. Objetividade em sua comunicação: comunicar-se de forma clara, breve e transparente é


ponto - chave na comunicação pela Internet;

• 10. Responsabilidade: ser responsável por seu próprio aprendizado. O ambiente virtual não
controla a sua dedicação, mas reflete os resultados do seu esforço e da sua colaboração.

Como participar dos fóruns e Wikipédia

Você tem um problema e precisa de ajuda?

Podemos te ajudar de 2 formas:

A primeira é o uso dos fóruns de notícias e de dúvidas gerais que se distinguem pelo uso:

. O fórum de notícias tem por objetivo disponibilizar um meio de acesso rápido a informações
que sejam pertinentes ao curso (avisos, notícias). As mensagens postadas nele são enviadas a

7
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

todos participantes. Assim, se o monitor ou algum outro participante tiver uma informação que
interesse ao grupo, favor postá-la aqui.
Porém, se o que você deseja é resolver alguma dúvida ou discutir algum tópico específico do
curso. É recomendado que você faça uso do Fórum de dúvidas gerais que lhe dá recursos mais
efetivos para esta prática.

. O fórum de dúvidas gerais tem por objetivo disponibilizar um meio fácil, rápido e interativo
para solucionar suas dúvidas e trocar experiências. As mensagens postadas nele são enviadas
a todos participantes do curso. Assim, fica muito mais fácil obter respostas, já que todos podem
ajudar.
Se você receber uma mensagem com algum tópico que saiba responder, não se preocupe com a
formalização ou a gramática. Responda! E não se esqueça de que antes de abrir um novo tópico
é recomendável ver se a sua pergunta já foi feita por outro participante.

A segunda forma se dá pelas Wikis:

. Uma wiki é uma página web que pode ser editada colaborativamente, ou seja, qualquer par-
ticipante pode inserir, editar, apagar textos. As versões antigas vão sendo arquivadas e podem
ser recuperadas a qualquer momento que um dos participantes o desejar. Assim, ela oferece um
ótimo suporte a processos de aprendizagem colaborativa. A maior wiki na web é o site "Wikipé-
dia", uma experiência grandiosa de construção de uma enciclopédia de forma colaborativa, por
pessoas de todas as partes do mundo. Acesse-a em português pelos links:

• Página principal da Wiki - http://pt.wikipedia.org/wiki/

Agradecemos antecipadamente a sua colaboração com a aprendizagem do grupo!

Primeiros Passos

Para uma melhor aprendizagem é recomendável que você siga os seguintes passos:

• Ler o Plano de Ensino e entender a que seu curso se dispõe a ensinar;

• Ler a Ambientação do Moodle para aprender a navegar neste ambiente e se utilizar das
ferramentas básicas do mesmo;

• Entrar nas lições seguindo a seqüência descrita no Plano de Ensino;

• Qualquer dúvida, reporte ao Fórum de Dúvidas Gerais.

Perfil do Tutor

Segue-se uma descrição do tutor ideal, baseada no feedback de alunos e de tutores.

O tutor ideal é um modelo de excelência: é consistente, justo e profissional nos respectivos


valores e atitudes, incentiva mas é honesto, imparcial, amável, positivo, respeitador, aceita as
idéias dos estudantes, é paciente, pessoal, tolerante, apreciativo, compreensivo e pronto a ajudar.

8
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

A classificação por um tutor desta natureza proporciona o melhor feedback possível, é crucial, e,
para a maior parte dos alunos, constitui o ponto central do processo de aprendizagem.’ Este tutor
ou instrutor:

• fornece explicações claras acerca do que ele espera e do estilo de classificação que irá
utilizar;

• gosta que lhe façam perguntas adicionais;

• identifica as nossas falhas, mas corrige-as amavelmente’, diz um estudante, ’e explica por-
que motivo a classificação foi ou não foi atribuída’;

• tece comentários completos e construtivos, mas de forma agradável (em contraste com um
reparo de um estudante: ’os comentários deixam-nos com uma sensação de crítica, de
ameaça e de nervossismo’)

• dá uma ajuda complementar para encorajar um estudante em dificuldade;

• esclarece pontos que não foram entendidos, ou corretamente aprendidos anteriormente;

• ajuda o estudante a alcançar os seus objetivos;

• é flexível quando necessário;

• mostra um interesse genuíno em motivar os alunos (mesmo os principiantes e, por isso,


talvez numa fase menos interessante para o tutor);

• escreve todas as correções de forma legível e com um nível de pormenorização adequado;

• acima de tudo, devolve os trabalhos rapidamente;

9
Parte III

GNU Free Documentation License

10
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

(Traduzido pelo João S. O. Bueno através do CIPSGA em 2001)


Esta é uma tradução não oficial da Licença de Documentação Livre GNU em Português Brasi-
leiro. Ela não é publicada pela Free Software Foundation, e não se aplica legalmente a distribuição
de textos que usem a GFDL - apenas o texto original em Inglês da GNU FDL faz isso. Entretanto,
nós esperamos que esta tradução ajude falantes de português a entenderem melhor a GFDL.

This is an unofficial translation of the GNU General Documentation License into Brazilian Por-
tuguese. It was not published by the Free Software Foundation, and does not legally state the
distribution terms for software that uses the GFDL–only the original English text of the GFDL does
that. However, we hope that this translation will help Portuguese speakers understand the GFDL
better.

Licença de Documentação Livre GNU Versão 1.1, Março de 2000

Copyright (C) 2000 Free Software Foundation, Inc.


59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

É permitido a qualquer um copiar e distribuir cópias exatas deste documento de licença, mas
não é permitido alterá-lo.

INTRODUÇÃO
O propósito desta Licença é deixar um manual, livro-texto ou outro documento escrito "livre"no
sentido de liberdade: assegurar a qualquer um a efetiva liberdade de copiá-lo ou redistribui-lo,
com ou sem modificações, comercialmente ou não. Secundariamente, esta Licença mantém
para o autor e editor uma forma de ter crédito por seu trabalho, sem ser considerado responsável
pelas modificações feitas por terceiros.

Esta Licença é um tipo de "copyleft"("direitos revertidos"), o que significa que derivações do


documento precisam ser livres no mesmo sentido. Ela complementa a GNU Licença Pública Ge-
ral (GNU GPL), que é um copyleft para software livre.

Nós fizemos esta Licença para que seja usada em manuais de software livre, por que software
livre precisa de documentação livre: um programa livre deve ser acompanhado de manuais que
provenham as mesmas liberdades que o software possui. Mas esta Licença não está restrita a
manuais de software; ela pode ser usada para qualquer trabalho em texto, independentemente
do assunto ou se ele é publicado como um livro impresso. Nós recomendamos esta Licença prin-
cipalmente para trabalhos cujo propósito seja de introdução ou referência.

APLICABILIDADE E DEFINIÇÕES
Esta Licença se aplica a qualquer manual ou outro texto que contenha uma nota colocada pelo
detentor dos direitos autorais dizendo que ele pode ser distribuído sob os termos desta Licença.
O "Documento"abaixo se refere a qualquer manual ou texto. Qualquer pessoa do público é um

11
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

licenciado e é referida como "você".

Uma "Versão Modificada"do Documento se refere a qualquer trabalho contendo o documento


ou uma parte dele, quer copiada exatamente, quer com modificações e/ou traduzida em outra
língua.

Uma "Seção Secundária"é um apêndice ou uma seção inicial do Documento que trata ex-
clusivamente da relação dos editores ou dos autores do Documento com o assunto geral do
Documento (ou assuntos relacionados) e não contém nada que poderia ser incluído diretamente
nesse assunto geral (Por exemplo, se o Documento é em parte um livro texto de matemática, a
Seção Secundária pode não explicar nada de matemática).

Essa relação poderia ser uma questão de ligação histórica com o assunto, ou matérias relaci-
onadas, ou de posições legais, comerciais, filosóficas, éticas ou políticas relacionadas ao mesmo.

As "Seções Invariantes"são certas Seções Secundárias cujos títulos são designados, como
sendo de Seções Invariantes, na nota que diz que o Documento é publicado sob esta Licença.

Os "Textos de Capa"são certos trechos curtos de texto que são listados, como Textos de Capa
Frontal ou Textos da Quarta Capa, na nota que diz que o texto é publicado sob esta Licença.

Uma cópia "Transparente"do Documento significa uma cópia que pode ser lida automatica-
mente, representada num formato cuja especificação esteja disponível ao público geral, cujos
conteúdos possam ser vistos e editados diretamente e sem mecanismos especiais com editores
de texto genéricos ou (para imagens compostas de pixels) programas de pintura genéricos ou
(para desenhos) por algum editor de desenhos grandemente difundido, e que seja passível de
servir como entrada a formatadores de texto ou para tradução automática para uma variedade
de formatos que sirvam de entrada para formatadores de texto. Uma cópia feita em um formato
de arquivo outrossim Transparente cuja constituição tenha sido projetada para atrapalhar ou de-
sencorajar modificações subsequentes pelos leitores não é Transparente. Uma cópia que não é
"Transparente"é chamada de "Opaca".

Exemplos de formatos que podem ser usados para cópias Transparentes incluem ASCII sim-
ples sem marcações, formato de entrada do Texinfo, formato de entrada do LaTex, SGML ou XML
usando uma DTD disponibilizada publicamente, e HTML simples, compatível com os padrões, e
projetado para ser modificado por pessoas. Formatos opacos incluem PostScript, PDF, formatos
proprietários que podem ser lidos e editados apenas com processadores de texto proprietários,
SGML ou XML para os quais a DTD e/ou ferramentas de processamento e edição não estejam
disponíveis para o público, e HTML gerado automaticamente por alguns editores de texto com
finalidade apenas de saída.

A "Página do Título"significa, para um livro impresso, a página do título propriamente dita,


mais quaisquer páginas subsequentes quantas forem necessárias para conter, de forma legível,
o material que esta Licença requer que apareça na página do título. Para trabalhos que não
tenham uma página do título, "Página do Título"significa o texto próximo da aparição mais proe-
minente do título do trabalho, precedendo o início do corpo do texto.

12
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

FAZENDO CÓPIAS EXATAS


Você pode copiar e distribuir o Documento em qualquer meio, de forma comercial ou não
comercial, desde que esta Licença, as notas de copyright, e a nota de licença dizendo que esta
Licença se aplica ao documento estejam reproduzidas em todas as cópias, e que você não acres-
cente nenhuma outra condição, quaisquer que sejam, às desta Licença.

Você não pode usar medidas técnicas para obstruir ou controlar a leitura ou confecção de
cópias subsequentes das cópias que você fizer ou distribuir. Entretanto, você pode aceitar com-
pensação em troca de cópias. Se você distribuir uma quantidade grande o suficiente de cópias,
você também precisa respeitar as condições da seção 3.

Você também pode emprestar cópias, sob as mesmas condições colocadas acima, e também
pode exibir cópias publicamente.

FAZENDO CÓPIAS EM QUANTIDADE


Se você publicar cópias do Documento em número maior que 100, e a nota de licença do
Documento obrigar Textos de Capa, você precisará incluir as cópias em capas que tragam, clara
e legivelmente, todos esses Textos de Capa: Textos de Capa da Frente na capa da frente, e
Textos da Quarta Capa na capa de trás. Ambas as capas também precisam identificar clara e
legivelmente você como o editor dessas cópias. A capa da frente precisa apresentar o título com-
pleto com todas as palavras do título igualmente proeminentes e visíveis. Você pode adicionar
outros materiais às capas. Fazer cópias com modificações limitadas às capas, tanto quanto estas
preservem o título do documento e satisfaçam a essas condições, pode ser tratado como cópia
exata em outros aspectos.

Se os textos requeridos em qualquer das capas for muito volumoso para caber de forma
legível, você deve colocar os primeiros (tantos quantos couberem de forma razoável) na capa
verdadeira, e continuar os outros nas páginas adjacentes.

Se você publicar ou distribuir cópias Opacas do Documento em número maior que 100, você
precisa ou incluir uma cópia Transparente que possa ser lida automaticamente com cada cópia
Opaca, ou informar, em ou com, cada cópia Opaca a localização de uma cópia Transparente
completa do Documento acessível publicamente em uma rede de computadores, à qual o público
usuário de redes tenha acesso a download gratuito e anônimo utilizando padrões públicos de
protocolos de rede. Se você utilizar o segundo método, você precisará tomar cuidados razoavel-
mente prudentes, quando iniciar a distribuição de cópias Opacas em quantidade, para assegurar
que esta cópia Transparente vai permanecer acessível desta forma na localização especificada
por pelo menos um ano depois da última vez em que você distribuir uma cópia Opaca (direta-
mente ou através de seus agentes ou distribuidores) daquela edição para o público.

É pedido, mas não é obrigatório, que você contate os autores do Documento bem antes de
redistribuir qualquer grande número de cópias, para lhes dar uma oportunidade de prover você
com uma versão atualizada do Documento.

13
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

MODIFICAÇÕES
Você pode copiar e distribuir uma Versão Modificada do Documento sob as condições das se-
ções 2 e 3 acima, desde que você publique a Versão Modificada estritamente sob esta Licença,
com a Versão Modificada tomando o papel do Documento, de forma a licenciar a distribuição
e modificação da Versão Modificada para quem quer que possua uma cópia da mesma. Além
disso, você precisa fazer o seguinte na versão modificada:

A. Usar na Página de Título (e nas capas, se houver alguma) um título distinto daquele do Do-
cumento, e daqueles de versões anteriores (que deveriam, se houvesse algum, estarem listados
na seção "Histórico do Documento"). Você pode usar o mesmo título de uma versão anterior se
o editor original daquela versão lhe der permissão;

B. Listar na Página de Título, como autores, uma ou mais das pessoas ou entidades responsá-
veis pela autoria das modificações na Versão Modificada, conjuntamente com pelo menos cinco
dos autores principais do Documento (todos os seus autores principais, se ele tiver menos que
cinco);

C. Colocar na Página de Título o nome do editor da Versão Modificada, como o editor;

D. Preservar todas as notas de copyright do Documento;

E. Adicionar uma nota de copyright apropriada para suas próprias modificações adjacente às
outras notas de copyright;

F. Incluir, imediatamente depois das notas de copyright, uma nota de licença dando ao público
o direito de usar a Versão Modificada sob os termos desta Licença, na forma mostrada no tópico
abaixo;

G. Preservar nessa nota de licença as listas completas das Seções Invariantes e os Textos de
Capa requeridos dados na nota de licença do Documento;

H. Incluir uma cópia inalterada desta Licença;

I. Preservar a seção entitulada "Histórico", e seu título, e adicionar à mesma um item dizendo
pelo menos o título, ano, novos autores e editor da Versão Modificada como dados na Página de
Título. Se não houver uma sessão denominada "Histórico"no Documento, criar uma dizendo o
título, ano, autores, e editor do Documento como dados em sua Página de Título, então adicionar
um item descrevendo a Versão Modificada, tal como descrito na sentença anterior;

J. Preservar o endereço de rede, se algum, dado no Documento para acesso público a uma
cópia Transparente do Documento, e da mesma forma, as localizações de rede dadas no Docu-
mento para as versões anteriores em que ele foi baseado. Elas podem ser colocadas na seção
"Histórico". Você pode omitir uma localização na rede para um trabalho que tenha sido publicado
pelo menos quatro anos antes do Documento, ou se o editor original da versão a que ela se refira
der sua permissão;

K. Em qualquer seção entitulada "Agradecimentos"ou "Dedicatórias", preservar o título da

14
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

seção e preservar a seção em toda substância e fim de cada um dos agradecimentos de contri-
buidores e/ou dedicatórias dados;

L. Preservar todas as Seções Invariantes do Documento, inalteradas em seus textos ou em


seus títulos. Números de seção ou equivalentes não são considerados parte dos títulos da seção;

M. Apagar qualquer seção entitulada "Endossos". Tal sessão não pode ser incluída na Versão
Modificada;

N. Não reentitular qualquer seção existente com o título "Endossos"ou com qualquer outro
título dado a uma Seção Invariante.

Se a Versão Modificada incluir novas seções iniciais ou apêndices que se qualifiquem como
Seções Secundárias e não contenham nenhum material copiado do Documento, você pode optar
por designar alguma ou todas aquelas seções como invariantes. Para fazer isso, adicione seus
títulos à lista de Seções Invariantes na nota de licença da Versão Modificada. Esses títulos preci-
sam ser diferentes de qualquer outro título de seção.

Você pode adicionar uma seção entitulada "Endossos", desde que ela não contenha qual-
quer coisa além de endossos da sua Versão Modificada por várias pessoas ou entidades - por
exemplo, declarações de revisores ou de que o texto foi aprovado por uma organização como a
definição oficial de um padrão.

Você pode adicionar uma passagem de até cinco palavras como um Texto de Capa da Frente
, e uma passagem de até 25 palavras como um Texto de Quarta Capa, ao final da lista de Textos
de Capa na Versão Modificada. Somente uma passagem de Texto da Capa da Frente e uma de
Texto da Quarta Capa podem ser adicionados por (ou por acordos feitos por) qualquer entidade.
Se o Documento já incluir um texto de capa para a mesma capa, adicionado previamente por
você ou por acordo feito com alguma entidade para a qual você esteja agindo, você não pode
adicionar um outro; mas você pode trocar o antigo, com permissão explícita do editor anterior que
adicionou a passagem antiga.

O(s) autor(es) e editor(es) do Documento não dão permissão por esta Licença para que seus
nomes sejam usados para publicidade ou para assegurar ou implicar endossamento de qualquer
Versão Modificada.

COMBINANDO DOCUMENTOS
Você pode combinar o Documento com outros documentos publicados sob esta Licença, sob
os termos definidos na seção 4 acima para versões modificadas, desde que você inclua na com-
binação todas as Seções Invariantes de todos os documentos originais, sem modificações, e liste
todas elas como Seções Invariantes de seu trabalho combinado em sua nota de licença.

O trabalho combinado precisa conter apenas uma cópia desta Licença, e Seções Invariantes
Idênticas com multiplas ocorrências podem ser substituídas por apenas uma cópia. Se houver
múltiplas Seções Invariantes com o mesmo nome mas com conteúdos distintos, faça o título de

15
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

cada seção único adicionando ao final do mesmo, em parênteses, o nome do autor ou editor
origianl daquela seção, se for conhecido, ou um número que seja único. Faça o mesmo ajuste
nos títulos de seção na lista de Seções Invariantes nota de licença do trabalho combinado.

Na combinação, você precisa combinar quaisquer seções entituladas "Histórico"dos diver-


sos documentos originais, formando uma seção entitulada "Histórico"; da mesma forma combine
quaisquer seções entituladas "Agradecimentos", ou "Dedicatórias". Você precisa apagar todas as
seções entituladas como "Endosso".

COLETÂNEAS DE DOCUMENTOS
Você pode fazer uma coletânea consitindo do Documento e outros documentos publicados
sob esta Licença, e substituir as cópias individuais desta Licença nos vários documentos com
uma única cópia incluida na coletânea, desde que você siga as regras desta Licença para cópia
exata de cada um dos Documentos em todos os outros aspectos.

Você pode extrair um único documento de tal coletânea, e distribuí-lo individualmente sob
esta Licença, desde que você insira uma cópia desta Licença no documento extraído, e siga esta
Licença em todos os outros aspectos relacionados à cópia exata daquele documento.

AGREGAÇÃO COM TRABALHOS INDEPENDENTES


Uma compilação do Documento ou derivados dele com outros trabalhos ou documentos se-
parados e independentes, em um volume ou mídia de distribuição, não conta como uma Ver-
são Modificada do Documento, desde que nenhum copyright de compilação seja reclamado pela
compilação. Tal compilação é chamada um "agregado", e esta Licença não se aplica aos outros
trabalhos auto-contidos compilados junto com o Documento, só por conta de terem sido assim
compilados, e eles não são trabalhos derivados do Documento.

Se o requerido para o Texto de Capa na seção 3 for aplicável a essas cópias do Documento,
então, se o Documento constituir menos de um quarto de todo o agregado, os Textos de Capa
do Documento podem ser colocados em capas adjacentes ao Documento dentro do agregado.
Senão eles precisarão aparecer nas capas de todo o agregado.

TRADUÇÃO
Tradução é considerada como um tipo de modificação, então você pode distribuir traduções
do Documento sob os termos da seção 4. A substituição de Seções Invariantes por traduções
requer uma permissão especial dos detentores do copyright das mesmas, mas você pode incluir
traduções de algumas ou de todas as Seções Invariantes em adição às versões orignais dessas
Seções Invariantes. Você pode incluir uma tradução desta Licença desde que você também in-
clua a versão original em Inglês desta Licença. No caso de discordância entre a tradução e a

16
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

versão original em Inglês desta Licença, a versão original em Inglês prevalecerá.

TÉRMINO
Você não pode copiar, modificar, sublicenciar, ou distribuir o Documento exceto como expres-
samente especificado sob esta Licença. Qualquer outra tentativa de copiar, modificar, sublicen-
ciar, ou distribuir o Documento é nula, e resultará automaticamente no término de seus direitos
sob esta Licença. Entretanto, terceiros que tenham recebido cópias, ou direitos de você sob esta
Licença não terão suas licenças terminadas, tanto quanto esses terceiros permaneçam em total
acordo com esta Licença.

REVISÕES FUTURAS DESTA LICENÇA


A Free Software Foundation pode publicar novas versões revisadas da Licença de Documen-
tação Livre GNU de tempos em tempos. Tais novas versões serão similares em espirito à versão
presente, mas podem diferir em detalhes ao abordarem novos porblemas e preocupações. Veja
http://www.gnu.org/copyleft/.

A cada versão da Licença é dado um número de versão distinto. Se o Documento especificar


que uma versão particular desta Licença "ou qualquer versão posterior"se aplica ao mesmo, você
tem a opção de seguir os termos e condições daquela versão específica, ou de qualquer versão
posterior que tenha sido publicada (não como rascunho) pela Free Software Foundation. Se o
Documento não especificar um número de Versão desta Licença, você pode escolher qualquer
versão já publicada (não como rascunho) pela Free Software Foundation.

ADENDO: Como usar esta Licença para seus documentos

Para usar esta Licença num documento que você escreveu, inclua uma cópia desta Licença
no documento e ponha as seguintes notas de copyright e licenças logo após a página de título:

Copyright (c) ANO SEU NOME.


É dada permissão para copiar, distribuir e/ou modificar este documento sob os termos da Licença
de Documentação Livre GNU, Versão 1.1 ou qualquer versão posterior publicada pela Free Soft-
ware Foundation; com as Seções Invariantes sendo LISTE SEUS TÍTULOS, com os Textos da
Capa da Frente sendo LISTE, e com os Textos da Quarta-Capa sendo LISTE. Uma cópia da li-
cença está inclusa na seção entitulada "Licença de Documentação Livre GNU".

Se você não tiver nenhuma Seção Invariante, escreva "sem Seções Invariantes"ao invés de
dizer quais são invariantes. Se você não tiver Textos de Capa da Frente, escreva "sem Textos de
Capa da Frente"ao invés de "com os Textos de Capa da Frente sendo LISTE"; o mesmo para os
Textos da Quarta Capa.

Se o seu documento contiver exemplos não triviais de código de programas, nós recomenda-
mos a publicação desses exemplos em paralelo sob a sua escolha de licença de software livre,

17
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

tal como a GNU General Public License, para permitir o seu uso em software livre.

18
Parte IV

Android

19
Capítulo 1

Android

Figura 1 - Android

A plataforma Android é um software para dispositivos móveis, incluindo um sistema opera-


cional, middleware e aplicativos-chave. Os desenvolvedores podem criar aplicações para a pla-
taforma usando o Android SDK, sendo que as aplicações são escritas utilizando a linguagem
de programação Java e executado no Dalvik, uma máquina virtual projetada para uso embutido
capaz de rodar em kernel Linux.

20
Capítulo 2

O que é Android?

2.1 ANDROID
Android é um software feito para dispositivos móveis que inclui um sistema operacional, mid-
dleware e aplicativos. O SDK fornece as ferramentas e APIs necessárias para começar a desen-
volver aplicações na plataforma Android usando a linguagem de programação Java.

2.2 Opções:
• Aplicativos Framework permitindo reutilização e substituição de componentes;

• Dalvik - máquina virtual otimizada para dispositivos móveis;

• Navegador código aberto integrado baseado no WebKit;

• Gráficos otimizados alimentado por bibliotecas gráficas 2D; Gráficos 3D baseados no OpenGL
ES 1.0;

• SQLite para armazenamento de dados estruturados;

• Média com suporte para áudio, vídeo e imagens(MPEG4, H.264, MP3, AAC, AMR, JPG,
PNG, GIF);

• Telefonia GSM (dependente de hardware);

• Bluetooth, EDGE, 3G, e WiFi (dependente de hardware);

• Câmera, GPS, bússola, e etc (dependente de hardware);

• Ambiente de desenvolvimento incluindo um dispositivo emulador, ferramentas de depura-


ção, memória, perfis de desempenho e um plugin para o IDE Eclipse.

21
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

2.3 Arquitetura Android

Figura 2 - Arquitetura Android

Aplicações
Android irá navegar com um grupo de aplicações, incluindo um cliente de email, programa
SMS, calendário, mapas, navegador, contatos, etc. Todas aplicações são escritas utilizando a
linguagem de programação Java.

Aplicações Framework
Desenvolvedores têm pleno acesso aos mesmos framework API’s utilizados por aplicações
complexas. A arquitetura da aplicação foi desenhada para simplificar a reutilização de compo-
nentes, sendo que qualquer aplicativo pode publicar as suas funcionalidades e qualquer outra
aplicação poderá fazer uso das mesmas(mesmo que sujeito a restrições de segurança impos-
tas pelo framework). Este mesmo mecanismo permite que componentes sejam substituído pelo
usuário.

Todas aplicações de baixo nível são um conjunto de serviços e de sistemas, incluindo:

• Um rico e extensível conjunto de Views que podem ser usadas para construir uma aplicação,
incluindo listas, grides, caixas de texto, botões e mesmo um navegador web;

22
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

• Content Providers aplicações que permitam o acesso a dados de outros aplicativos (como
Contatos), ou para compartilhar seus próprios dados;

• Resource Manager fornece acesso a recursos (não codificados) como gráficos e arquivos
de layout;

• Notification Manager permite que todas aplicações exibam avisos personalizados na barra
de estado;

• Activity Manager que gerencia o ciclo de vida das aplicações;

Bibliotecas
Android inclui um conjunto de bibliotecas C / C + + usadas por diversos componentes do
sistema Android. Estas capacidades são expostas aos desenvolvedores por meio da aplicação
framework Android. Algumas das principais bibliotecas são listadas a seguir:

• Sistema C library - Uma biblioteca derivada BSD que é uma implementação do sistema do
padrão C (libc), voltada para dispositivos baseados em Linux;

• Media Libraries - baseado em PacketVideo’s OpenCORE, as bibliotecas suportam reprodu-


ção e gravação de muitos formatos populares de áudio e vídeo incluindo MPEG4, H.264,
MP3, AAC, AMR, JPG e PNG;

• Surface Manager - Controla o acesso à exibição do subsistema e de camadas gráficas 2D


e 3D de múltiplas aplicações;

• LibWebCore - Um navegador web moderno que torna poderosa a navegação com Android;

• SGL - Gráficos 2D de baixa camada;

• 3D Libraries - Uma implementação baseada em OpenGL ES 1,0 APIs: Bibliotecas usadas


em aceleração de hardware 3D (quando disponível);

• FreeType - Bitmaps e fontes vetoriais para renderizção;

• SQLite - Leve e poderosa base de dados relacional disponível para todas as aplicações.

Android Runtime
Android inclui um grupo de bibliotecas que fornece a maioria das funcionalidades disponíveis
nas principais bibliotecas da linguagem de programação Java.

Cada aplicação Android roda em seu próprio processo, com a sua própria instância da má-
quina virtual Dalvik. O Dalvik VM executa arquivos no Dalvik Executável (.dex), que é otimizado
para usar mínimo de memória. A Dalvik VM baseia-se em kernel Linux para subjacentes funcio-
nalidade como o encadeamento e gestão de memória de baixo nível.

23
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Linux Kernel
Android invoca Linux versão 2.6 para o sistema central de serviços, tais como segurança,
gestão de memória, gestão de processos, rede e drivers. O kernel também atua como uma
camada de abstração entre o hardware e o resto do software.

24
Capítulo 3

Instalando SDK, Requisitos, Depuração


e Dicas

3.1 Sistema e Requisitos de Software

Para desenvolver aplicações no Android utilizando o código e ferramentas do Android SDK,


você precisará de um pc e adequado ambiente de desenvolvimento, conforme descrito abaixo.

Sistemas Operacionais Suportados


• Windows XP ou Vista;

• Mac OS X 10.4.8 ou posterior (x86 apenas);

• Linux (testado em Linux Ubuntu Dapper Drake);

Ambientes em desenvolvimento suportados


* IDE Eclipse

O Eclipse 3.2, 3.3 (Europa). O Eclipse JDT Plugin (incluído na maioria dos pacotes Eclipse
IDE). O JDK 5 ou JDK 6 (JRE por si só não é suficiente). Não é compatível com o Gnu Compiler
para Java (gcj). O Android Development Tools Plugin (opcional).

* Outros ambientes de desenvolvimento ou IDEs


O JDK 5 ou JDK 6 (JRE por si só não é suficiente). Não é compatível com o Gnu Compiler para
Java (gcj). O Apache Ant 1.6.5 ou posterior para Linux e Mac, 1.7 ou posterior para Windows.

Nota: Se JDK já está instalada em seu computador, certificar-se de que ele atende aos requi-
sitos listados acima. Em particular, note que algumas distribuições Linux podem incluir JDK 1.4
ou Gnu Compiler para Java, que não são suportados pelo ambiente Android de desenvolvimento.

25
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

3.2 Instalação do SDK


Depois de fazer o download do SDK, descompacte o arquivo (.zip) para um local adequado
na sua máquina. Por padrão, os arquivos SDK são desempacotados em um diretório chamado
android_sdk_<platform>_<release>_<build>. O diretório contém os subdiretórios /tools, /samples
e outros.
Anote o nome e local do diretório onde o SDK foi descompactado em seu sistema, você
precisará disto mais tarde, quando for configurar os plugins Android ou utilizar ferramentas SDK.
Opcionalmente, você pode adicionar o caminho para as ferramentas SDK no seu diretório.
Como mencionado acima, o diretório tools/ está localizado no diretório SDK.
No Linux, editar o arquivo /.bash_profile ou /.bashrc. Procure uma linha que define a variável
de ambiente PATH e adicione o caminho completo para o diretório tools/. Se você não visualizar
uma linha definindo o caminho, você pode adicionar um:

export PATH=${PATH}:<seu_sdk_dir>/tools

Em um computador Mac, procure em seu diretório home pelo .bash_profile e proceda da


mesma forma para Linux. Você pode criar o .bash_profile, se você ainda não o configurou em
sua máquina.
No Windows, clique com botão direito em Meu Computador e selecione Propriedades. Sob
a guia Avançado, apertar o botão Variáveis de Ambiente e na caixa de diálogo, que aparecerá,
clique duplo no Caminho sob Variáveis de Sistema. Adicione o caminho completo ao diretório
tools/.
Adicionando tools para o seu PATH permite que você execute Android Debug Bridge (adb)
e as outras linhas de comando tools, sem necessidade de fornecer o caminho completo para
o diretório. Note que, se você atualizar o seu SDK, você deve se lembrar de atualizar suas
configurações PATH para que aponte para o novo local, caso seja diferente.

Instalando o Plugin(ADT) Eclipse

Se você utilizar o Eclipse IDE como o seu ambiente de desenvolvimento de aplicações An-
droid, você pode instalar um plugin chamado Android Development Tools (ADT), que adiciona
suporte integrado para projetos e ferramentas Android. O ADT Plugin inclui uma variedade de
poderosas extensões que tornam a criação, a execução e depuração de aplicações Android mais
fáceis e rápidas.
Se você não estiver usando o IDE Eclipse, você não precisa fazer o download e instalar o ADT
plugins.
Para baixar e instalar o ADT plug-in siga as etapas a seguir:

• 1. Inicie o Eclipse e, em seguida, selecione Help > Software Updates > Find and Install....

• 2. Na caixa de diálogo que é exibida, selecione Search for new features to install em
seguida aperte Next.

• 3. Aperte New Remote Site.

• 4. Na caixa de diálogo resultante, digite um nome para o site (ex Android Plugin) e digite
isso como sua URL:

26
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

https://dl-ssl.google.com/android/eclipse/

Pressione OK.

• 5. Agora você deve ver o novo site adicionado à lista de pesquisa. Pressione Finish.
• 6. Na caixa de diálogo subseqüente Search Results, marque a caixa de seleção Android
Plugin > Eclipse Integration > Android Development Tools e pressione Next.
• 7. Leia o acordo de licença e, em seguida, selecione Accept para aceitar os termos do
contrato de licença, se for o caso. Pressione Next.
• 8. Pressione Finish.
• 9. A ADT plugin não está assinado, você pode aceitar a instalação mesmo assim, pressio-
nando Install All.
• 10. Reinicie o Eclipse.
• 11. Após o reinício, atualize suas preferências do Eclipse para apontar para o diretório SDK:
• 11.1 Selecione Window> Preferences... Para abrir o painel preferências. (Mac OS X:
Eclipse> Preferences)
• 11.2 Selecione Android do painel esquerdo.
• 11.3 Para a localização do SDK no painel principal, pressione Browse... E localize o diretó-
rio SDK.
• 11.4 Pressione Apply e, em seguida, OK.

Atualizando o plugin ADT

Para atualizar o ADT plugin para a versão mais recente, siga os seguintes passos:

• 1. Selecione Help> Software Updates> Find and Install ....


• 2. Selecione Search for updates for the currently installed features e pressione Finish.
• 3. Se alguma atualização para ADT está disponível, selecione e instale.

Alternativamente,

• 1. Selecione Help> Software Updates> Manage Configuration.


• 2. Navegue para baixo da árvore de diretório e selecione Android Development Tools
<version>
• 3. Selecione Scan for Updates sob Available Tasks.

27
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

3.3 Desenvolvendo aplicações Android no Eclipse


Para começar a desenvolver aplicações Android no Eclipse IDE, você precisa primeiro criar
um projeto e, em seguida, criar um conjunto de configurações. Depois disso, você pode escrever,
executar e depurar sua aplicação.
As seções a seguir fornecem instruções assumindo que você tenha instalado o ADT Plugin
no seu ambiente Eclipse. Se você não tiver instalado o ADT plugin, você deve fazê - lo antes de
usar as instruções abaixo.

Criação de um projeto Android


O ADT Plugin fornece um New Project Wizard que você pode usar para criar um projeto novo
ou de códigos já existentes. Para criar o projeto, siga os seguintes passos:

• 1. Selecione File> New> Project.

• 2. Selecione Android> Android Project, e pressione Next.

• 3. Selecione o conteúdo para o projeto:

• 3.1 Escolha Create new project in workspace para iniciar um projeto de código novo.
Digite o nome do projeto, do pacote básico, o nome de uma classe única Activity como um
arquivo .java e um nome para ser usado em sua aplicação.

• 3.2 Escolha Create project from existing source para iniciar um projeto de código exis-
tente. Use esta opção se você quiser construir e executar qualquer uma das amostras de
aplicações incluídas com o SDK. As aplicações de amostra(samples) estão localizadas no
diretório samples/ do SDK.

Navegue para o diretório que contenha o código fonte existente e clique em OK. Se o diretório
conter um arquivo válido Android, a ADT Plugin preencherá o pacote, o Activity, e o nome da
aplicação para você.

4. Pressione Finish.

O ADT Plugin cria essas pastas e arquivos para você de maneira apropriada para o tipo de
projeto:

• src/ A pasta que inclui o arquivo Activity .java.

• res/ A pasta de seus recursos.

• AndroidManifest.xml O xml para o seu projeto.

Criando configuração de lançamento


Antes que você possa executar e depurar sua aplicação no Eclipse, você deve criar uma con-
figuração lançamento para ele. A configuração de lançamento especifica o projeto a ser lançado,
o início do Activity, o emulador de opções a ser usado e assim por diante.
Para criar uma configuração para o lançamento da aplicação, siga os seguintes passos:

28
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

• 1. Selecione Run > Open Run Dialog ou Run > Open Debug Dialog conforme o caso;

• 2. Na lista de tipo de projeto à esquerda, clique com botão direito do mouse em Application
Android e selecione New;

• 3. Digite um nome para a sua configuração;

• 4. No guia Android, navegue para o projeto e Activity a iniciar;

• 5. No guia Emulator, defina as propriedades desejadas tela e da rede, bem como quaisquer
outras opções do emulador de inicialização;

• 6. Você pode definir opções adicionais no guia Common conforme desejado;

• 7. Pressione Apply para salvar a configuração de lançamento ou pressione Run ou Debug


(conforme o caso).

3.4 Executando e Depurando uma aplicação


Uma vez que você tenha criado o projeto e a configuração de lançamento de seu aplicativo,
você poderá executá-lo ou depurar conforme descrito abaixo.
No menu principal do Eclipse selecione Run> Run ou Run> Debug conforme adequado,
para executar ou depurar o lançamento configuração ativas.
Note que a configuração lançamento ativa é a que foi seleciona mais recentemente no gerente
de configuração Run. Ela não corresponde, necessariamente, à aplicação selecionada no painel
Eclipse Navigation (se houver).
Para definir ou alterar a configuração de lançamento ativa, use gerente de configuração Run,
que você pode acessar através Run> Run Open Dialog ou Run> Open Debug Dialog.

Executando ou depurando aplicações:


• Inicie o emulador, se ele já não estiver sendo executado;

• Compile o projeto, se houve mudanças desde a última construção e instale a aplicação no


emulador;

• Run inicia a aplicação;

• Debug inicia a aplicação no modo "Espera pelo depurador"e, em seguida, abre a perspectiva
do depurador, atribuindo o depurador Eclipse Java na aplicação.

Desenvolvendo aplicações Android com outras IDEs e ferramentas


A maneira recomendada de se desenvolver uma aplicação Android é usar o Eclipse com o
Android plugins. Este plugin fornece edição, construção, depuração e funcionalidade integrada
direita na IDE. No entanto, a SDK inclui ferramentas que permitem desenvolver com outros IDEs,
incluindo intelliJ (ou se você preferir usar o Eclipse sem o plugin).

29
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

3.5 Criação de um projeto Android


O Android SDK inclui activityCreator, um programa que gera um número mínimo de arquivos
para seu projeto. Você pode usar o programa para criar um projeto para Android como um novo
código ou de código existente, como as amostras de aplicações incluídas no SDK. Para Linux e
Mac, o SDK fornece activityCreator.py, um script Python. Para o Windows, activityCreator.bat,
um script batch. Independentemente da plataforma, você pode usar activityCreator da mesma
forma.

Para executar activityCreator e criar um projeto Android , siga os seguintes passos:

• 1. Na linha de comando, mudar para diretório /tools do SDK e criar um novo diretório para
os arquivos dos projetos. Se você está criando um projeto de código existente, mude para
a pasta raiz de sua aplicação.

• 2. Execute activityCreator. No comando, você deve especificar o nome da classe com-


pletamente qualificado como um argumento. Se você está criando um projeto para o novo
código, a classe representa o nome da sub classe que o script irá criar. Se você está cri-
ando um projeto de código existente, você deve especificar o nome de uma classe Activity
do pacote. Comando opções para o script incluem:

• 2.1 –out <pasta> que define a saída do diretório. Por padrão, o diretório de saída é o atual.
Se você criou um novo diretório para o projeto arquivos, use esta opção para apontar para
ele.

• 2.2 – ide intellij, que gera o projeto de arquivos IntelliJ IDEA no projeto recém criado.

Aqui está um exemplo:

~/android_linux_sdk/tools $ ./activityCreator.py --out myproject


nome.seu.pacote.ActivityName
package: nome.seu.pacote
out_dir: meuprojeto
activity_name: ActivityName
~/android_linux_sdk/tools $

O activityCreator, o script, gera os seguintes arquivos e diretórios (mas não irá sobrescrever
os existentes):

• AndroidManifest.xml: A aplicação de arquiv xml, sincronizada com a classe Activity especí-


fica para o projeto.

• Build.xml: Um arquivo Ant que você pode usar para criar e empacote a aplicação.

• src/your/package/name/ActivityName.java A classe Activity que você especificou na en-


trada.

• Sua_activity.iml, sua_activity.ipr, sua_activity.iws [apenas nos flags -ide intelliJ ] arquivos de


projeto intelliJ .

• res/ O diretório que possui os recursos.

30
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

• src/ O diretório fonte.

• bin/ O diretório de saída para o script.

Você pode, agora, mover a sua pasta para onde você quiser desenvolvê-la, mas lembre-se
que você terá que usar o programa adb na pasta tools/ para enviar arquivos para o emulador,
assim você terá o acesso entre a sua solução e a pasta tools/.

Além disso, você deve evitar mover o diretório do SDK, uma vez que movê-lo irá quebrar o link
dos scripts construídos.

Construindo uma aplicação Android

Use o arquivo Ant build.xml gerado pelo activityCreator para construir sua aplicação.

• 1. Se você não tem isso, você pode obter o Ant da homepage Apache Ant. Instale-o e
tenha certeza de que ele está no PATH executável.

• 2. Antes de chamar Ant, você precisa declarar a variável de ambiente JAVA_HOME para
especificar o caminho onde o JDK está instalado.

Nota: Quando instalar o JDK no Windows, o padrão é instalar "Arquivos de Programa".


Nesse local podem ocorrer erros. O mais adequado seria instalar JDK em um diretório
como por exemplo: c:\Java \jdk1.6.0_02.

• 3. Se você ainda não o fez, siga as instruções para a criação de um novo projeto como fora
descrito anteriormente.

• 4. Você pode, agora, executar o arquivo de construção Ant simplesmente digitando ant
na mesma pasta onde está o arquivo build.xml do seu projeto. Cada vez que você alterar
um arquivo fonte ou recurso, você deve executar ant novamente e ele empacotará a versão
mais recente da aplicação para você produzir.

Executando uma aplicação Android

Para executar uma aplicação compilada, você irá fazer o upload do arquivo .apk do diretório
/data/app/ no emulador, usando a ferramenta adb como descrito aqui:

• 1. Inicie o emulador (run <seu_sdk_dir> /tools/emulator da linha de comando).

• 2. No emulador, navegue até a tela inicial (é melhor não ter que executar o aplicativo
quando você reinstalá-lo sobre o emulador, pressione a tecla Home para navegar para
fora da aplicação).

• 3. Execute adb install meuprojeto/bin/ <appname>.apk para carregar o executável. Assim,


por exemplo, para instalar a amostra Lunar Lander, navege na linha de comando para
<seu_sdk_dir> /sample /LunarLander e digite ../../tools/adb install bin/LunarLander.apk

31
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

• 4. No emulador, abra a lista de aplicações disponíveis e role para baixo para selecionar e
iniciar a sua aplicação.

Nota: Quando você instalar uma Activity pela primeira vez, você pode ter que reiniciar o
emulador antes que ele apareça na aplicação de lançamento ou outras aplicações podem chamá-
lo. Isso ocorre porque o gestor de pacotes, normalmente, examina completamente apenas os xml
na inicialização do emulador.

Adicionando um Depurador em sua aplicação

Esta seção descreve como exibir um depurador de informações na tela, assim como ligar o
seu IDE à aplicações de depuração em execução no emulador.
Um depurador é naturalmente adicionado quando se usa o Eclipse plugin, mas você pode
configurar outras IDEs para abrirem uma porta que receba informações de depuração.

• 1. Inicie o Dalvik Debug Monitor Server (DDMS) tool, que funciona como um serviço de
abertura de porta entre o seu IDE e o emulador;

• 2. Defina configurações opcionais de depuração no seu emulador, tais como bloquear o


início de aplicações para uma atividade até que um depurador seja adicionado. Note que
muitas destas opções de depuração podem ser utilizadas sem o DDMS, como a exibição
de uso da CPU ou taxa de atualização da tela sobre o emulador;

• 3. Configure seu IDE para anexar à porta 8700 para depuração. Nós incluímos informações
sobre como configurar o Eclipse para depurar o seu projeto.

Configurando IDE para adicionar porta de depuração


DDMS irá atribuir uma porta de depuração específica para cada máquina virtual que se en-
contra no emulador. Deve-se também anexar o IDE para esta porta, ou você pode usar uma porta
padrão 8700 para se conectar a qualquer aplicação atualmente selecionada na lista de máquinas
virtuais encontradas.
Seu IDE deve anexar-se à sua aplicação em execução no emulador, mostrando-lhe as threads
e permitindo suspendê-las, verificar seu estado ou definir sua interrupção. Se você selecionou
"Espere o depurador"no painel de configurações de desenvolvimento, a aplicação será execu-
tada quando o Eclipse conectar, assim você terá que definir o ponto de interrupção que você
deseja antes de conectar.
Alterar quer seja o pedido depuração ou a opção "Espere o depurador"faz com que o sis-
tema mate o aplicativo selecionado se ele estiver sendo executado no momento. Você pode
usar isto para matar suas aplicações se elas estiverem em um estado indesejado, basta ir em
configurações e (des)marcar a caixa.

32
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

3.6 Dicas de depuração


Quick stack dump

Para obter um "stack dump"do emulador, você pode acessar com o adb shell, utilize "ps"para
encontrar o processo que você quer e, em seguida, "kill -3". O rastro aparecerá no arquivo de
log.

Exibir informações úteis na tela do emulador

O dispositivo pode exibir informações úteis como uso da CPU ou destaques em torno de áreas
redesenhadas. Ative ou desative esses recursos fora da janela de configurações de desenvolvi-
mento.

Obter informações de estado do sistema pelo emulador (dumpstate)


Você pode acessar informações dumpstate da ferramenta Dalvik Debug Monitor Service.
Veja dumpsys e dumpstate na página do tema adb.

Obter informações de estado da aplicação pelo emulador (dumpsys)

Você pode acessar informações dumpsys da ferramenta Dalvik Debug Monitor Service. Veja
dumpsys e dumpstate na página do tema adb.

Obter informações de conectividade sem fio

Você pode obter informações sobre a conectividade sem fio usando a ferramenta Dalvik De-
bug Monitor Service. A partir do menu Device, selecione "Dump radio state".

Logando dados de rastro

Você pode registrar método de chamada e outros dados de rastro em uma atividade cha-
mando android.os.Debug.startMethodTracing(). Veja executando o Traceview Debugging Pro-
gram para mais detalhes.

Logando Dados de Rádio

Por padrão, as informações de rádio não estão conectadas ao sistema (tratam-se de muitos
dados). No entanto, você pode ativar o log de dados de rádio usando os seguintes comandos:

ADB Shell
Logcat - b rádio

33
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Executar adb

Android vem com uma ferramenta chamada adb que oferece várias funcionalidades, incluindo
mover e sincronizar arquivos para o emulador, abertura de portas e executando um shell UNIX
no emulador. Veja usando adb para mais detalhes.

Obtendo telas capturadas do emulador

Dalvik Debug Monitor Server (DDMS) pode capturar screenshots do emulador.

Usar classes auxiliares de depuração


Android provê classes auxiliares de depuração como util.Log e Debug para sua conveniência.

3.7 Construir e instalar uma aplicação Android


Android requer a contrução de ferramentas personalizadas, para que se possa desenvolver
adequadamente os arquivos de recursos e outras partes de uma aplicação Android. Devido a
isso, é preciso ter um ambiente especializado para construir sua aplicação.

Os passos para uma compilação personalizada incluem a compilação dos arquivos XML e de
outros arquivos de recursos, além da criação de um formato de saída adequado. Uma aplicação
Android compilada nada mais é que um arquivo .apk, que é um arquivo compactado contendo
arquivos .dex, arquivos de recurso, dados brutos de arquivos e outros arquivos. Você pode criar
um projeto Android estruturado, quer a partir do zero ou a partir de arquivos fonte existentes.

Android, atualmente, não suporta o desenvolvimento de aplicações de terceiros em có-


digo nativo C / C + +.

A maneira recomendada de se desenvolver uma aplicação Android é usar o Eclipse com o


Android ’plugin’, que fornece suporte para a construção, a execução e depuração de aplicações
Android.

Se você tiver uma outra IDE, o ambiente Android fornecerá ferramentas para construir e de-
purar aplicações Android, mas que não são tão integradas quanto à IDE Eclipse.

3.8 Remoção de um aplicativo Android


Para remover uma aplicação que tenha sido instalada no emulador, você precisará executar o
adb e apagar o arquivo .apk que você enviou para o emulador quando instalou. Use "adb shell"e
navege para "data/app", em seguida, remova o arquivo usando "rm your_app.apk".

34
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

3.9 Dicas para Eclipse


Executando expressões Java arbitrárias no Eclipse
Você pode executar código arbitrário quando pausado em um breakpoint no Eclipse. Por
exemplo, quando em uma função com um argumento String chamado de "zip", você pode obter
informações sobre os pacotes e chamar métodos de classes. Você também pode invocar méto-
dos estáticos arbitrários: por exemplo, entrando com "android.os.Debug.startMethodTracing()"irá
iniciar dmTrace.

Abra um código em execução numa janela, selecione Window> Show View> Display no
menu principal para abrir a janela de exibição, um simples editor de texto. Digite sua expressão,
realce o texto e clique no ícone ’J’ (ou CTRL + SHIFT + D) para executar o seu código. O código
é executado no contexto da thread selecionada, que deve ser travada em um breakpoint ou em
um ponto de único passo. (Se você suspender a thread manualmente, você tem o passo
único uma vez. Isto não funcionará se a thread estiver em Object.wait().)

Se você estiver em pausa um breakpoint, você pode simplesmente destacar e executar um


pedaço de código-fonte, pressionando CTRL + SHIFT + D.

Pode-se destacar um bloco de texto dentro do mesmo âmbito, pressionando ALT + SHIFT +
UP ARROW para selecionar mais amplamente e englobar maiores blocos, ou DOWN ARROW
para selecionar blocos menores.Aqui estão algumas amostra de entradas e respostas no Eclipse
usando a janela de exibição.

Entrada(input) Resposta(response)
zip (java.lang.String)
/work/device/out/linux-x86-debug/android/app/android_sdk.zip
zip.endsWith(".zip") (boolean) true
zip.endsWith(".jar") (boolean) false

Você também pode executar código arbitrário quando não estiver em depuração, utilizando
uma página recados("scrapbook"). Verifique na documentação do Eclipse IDE.

Executando DDMS manualmente


Embora a maneira recomendada para se depurar é usar o plugin ADT, você pode manual-
mente executar DDMS e configurar o Eclipse para depurar na porta 8700. (Nota: Certifique - se
de que você tenha iniciado DDMS antes).

35
Capítulo 4

Anatomia de uma Aplicação Android

Há quatro módulos de uma aplicação Android:


• Activity(atividade);
• Intents Receiver(receptor pretendido)e Filter;
• Service(serviço);
• Content Provider(provedor de conteúdo).

Nem toda aplicação precisa ter todos os quatro, mas a sua aplicação com certeza será es-
crita com alguma combinação deles. Uma vez que você tenha decidido que componentes você
utilizará em sua aplicação, deverá incluí-los em um arquivo chamado AndroidManifest.xml. Este
é um arquivo XML onde você declarará os componentes da sua aplicação e quais são as suas
capacidades e necessidades.

4.1 Activity
Ativities são as mais comuns dos quatro módulos Android. Uma Activity é normalmente uma
única tela em sua aplicação. Cada Activity é implementada como uma única classe que es-
tende a classe base Activity. Sua classe vai exibir uma interface de usuário composta de Views
e eventos a serem respondidos, sendo que a maioria das aplicações consistem de múltiplas telas.

Por exemplo, um aplicativo de mensagem de texto pode ter uma tela que mostra uma lista de
contatos para enviar mensagens para uma segunda tela que grava a mensagem para o contato
escolhido e outras telas para rever as mensagens antigas ou mudar as configurações. Cada uma
destas telas seriam implementadas como uma Activity. A mudança para uma outra tela será rea-
lizada por um início de uma nova Activity. Em alguns casos, uma Activity pode retornar um valor
para a Activity anterior. Por exemplo, uma Activity que permite ao usuário escolher uma foto que
seria retornada pelo método chamador.

Quando uma nova tela abre, a anterior é pausada e posta em uma pilha de história. O usuário
pode navegar através das telas anteriormente abertas contidas na pilha de história. Telas também
podem ser removidas da pilha de história se necessário. O Android retém pilha de história para
cada aplicação lançada a partir da tela inicial.

36
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

4.2 Intent e Intent Filters


Android usa uma classe especial chamada de Intent para mover-se de tela para tela. Uma
Intent(intenção) descreve o que uma aplicação deseja fazer. As duas mais importantes partes da
estrutura de dados de Intent são as ações e os dados sobre o qual agir. Valores típicos de ação
são MAIN (porta da frente da Activity), VIEW,PICK,EDIT, etc. Os dados são expressos como um
URI. Por exemplo, para visualizar informações de contato de uma pessoa, você deve criar uma
Intent com a ação VIEW e configurar uma URI que representa essa pessoa.

Há uma classe relacionada chamada IntentFilter. Embora uma Intent seja efetivamente um
pedido para fazer algo, uma Intent Filter é uma descrição de quais Intent uma Activity (ou Intent
Receiver) é capaz de manusear. Uma Activity, que é capaz de exibir informações de contato de
uma pessoa, pode publicar uma IntentFilter que dirá que ele sabe como lidar com a ação VIEW
quando aplicada a dados representando uma pessoa. Ativities publicam as suas IntentFilters no
arquivo AndroidManifest.xml.

Navegação de tela a tela é realizada por Intents, sendo que para navegar para a frente uma
Activity precisa chamar startActivity (myIntent). O sistema então olha para a Intent Filters em
todas as aplicações instaladas e escolhe a Activity, cujo Intent Filters melhor se encaixa com
myIntent. A nova Activity é informada da Intent, o que provoca que ela seja lançada. O processo
de resolução de Intents acontece em tempo de execução quando startActivity é chamado, que
oferece dois benefícios principais:

• Ativities podem reutilizar funcionalidade de outros componentes simplesmente fa-


zendo uma solicitação na forma de uma Intent.

• Activities podem ser substituídas, a qualquer momento, por uma nova Activity com
um equivalente IntentFilter.

4.3 Intent Receiver


Você pode usar uma IntentReceiver, quando quiser o código em sua aplicação execute em re-
ação a um evento externo, por exemplo, quando o telefone toca, ou quando a rede de dados está
disponível, ou quando é meia noite. Intent receivers não exibem uma interface gráfica, embora
possa utilizar a NotificationManager para alertar o usuário se algo interessante aconteceu.

Intent receivers são registrados em AndroidManifest.xml, mas você também pode regista-
los com código usando Context.registerReceiver(). Sua aplicação não precisa estar rodando
para que a respectiva Intent receiver seja chamada, já que o sistema irá iniciar a sua aplicação,
se necessário, quando um Intent receiver é acionado. Aplicações podem também enviar suas
próprias trasmissões de Intent aos outros com Context.broadcastIntent().

4.4 Service
Um Service é um código de longa vida e funciona sem uma interface gráfica. Um bom exemplo
disto é uma mídia tocando músicas de um lista. Numa aplicação de media player, provavelmente

37
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

seriam uma ou mais Activities que permitiriam ao usuário escolher músicas e tocá-las. No en-
tanto, a música reproduzida em si não deveria ser manuseada por uma Activity, pois o usuário
espera que a música continue tocando mesmo após navegar para uma nova tela.

Neste caso, o leitor de mídia em atividade pode iniciar um serviço utilizando


Context.startService(), para executar em segundo plano a música, sendo que o sistema irá manter
a reprodução da música até que ela termine (Você pode aprender mais sobre a prioridade dada
aos serviços do sistema de leitura de uma aplicação Android em Android Application Lifecycle).
Note que você pode conectar-se a um serviço e iniciá-lo caso ainda não esteja executando com
o método Context.bindService(). Quando conectado a um serviço, você pode comunicar-se com
ele através de uma interface exposta pelo serviço da música permitindo que você possa pausar,
retroceder, etc.

4.5 Content Provider


Aplicações podem armazenar seus dados em arquivos, base de dados SQLite, ou qualquer
outro mecanismo que tenha sentido de armazenamento. Uma Content Provider, no entanto, é
útil se você desejar que sua aplicação de dados seja compartilhada com outros aplicativos. A
Content Provider é uma classe que implementa um conjunto de métodos padrão para permitir
que outras aplicações armazenem e recuperem o tipo de dados que é controlado pelo provedor
desse conteúdo.

38
Capítulo 5

Ferramentas de Desenvolvimento e
Ciclo de Vida de uma Aplicação

5.1 Ferramentas de Desenvolvimento

O Android SDK inclui uma variedade de ferramentas personalizadas que podem ajudá-lo a
desenvolver aplicações móveis para plataforma Android. A mais importante delas é a Android
Emulator e a Android Development Tools plugin para o Eclipse, mas a SDK também inclui
várias outras ferramentas de depuração, empacotamento e instalação de suas aplicações no
emulador.

Emulador Android
Um dispositivo móvel virtual que pode ser executado em seu computador. Você pode usar o
emulador para desenhar, depurar e testar suas aplicações em um ambiente Android de execução
em tempo real.

Plugin de ferramentas de desenvolvimento Android para a IDE Eclipse


A ADT Plugin acrescenta poderosas extensões para a IDE Eclipse, facilitando criar e depurar
seus aplicativos Android. Isso porque esse plugin lhe permitirá acessar as seguintes funcionali-
dades:

• Acessar a outras ferramentas de desenvolvimento Android do interior da IDE Eclipse. Por


exemplo, ADT permite-lhe acessar muitas funcionalidades da ferramenta DDMS como obter
printscreens, gerenciamento de abertura de portas, definir pontos de interrupção e visualizar
threads e informações de processo diretamente do Eclipse;

• Provê um New Project Wizard, que ajuda você criar rapidamente e configurar a base de
todos os arquivos que você precisará em uma nova aplicação Android;

• Automatiza e simplifica o processo de construção da sua aplicação Android;

• Fornece um editor de código Android que ajudará você a escrever um XML válido para o
seu Android.

39
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Dalvik Debug Monitor Service (ddms)


Integrada com Dalvik, a personalizada VM(máquina virtual) da plataforma Android, permite-
lhe gerir processos em um emulador ou dispositivo e auxilia na depuração. Você pode usá-la
para matar processos, selecionar um processo específico para depurar, gerar rastro aos dados,
visualizar informações, tirar fotos do emulador ou do dispositivo e muito mais.

Android Debug Bridge (adb)


A ferramenta Adb permite que você instale sua aplicação(arquivos .apk) em um emulador
ou dispositivo e que acesse o emulador ou dispositivo a partir de uma linha de comando. Você
também pode usá-la para ligar o depurador padrão à um código de aplicação, rodando em um
emulador ou dispositivo Android.

Android Asset Packaging Tool (aapt)


A ferramenta aapt permite que você crie arquivo .apk contendo os binários de recursos de
aplicações Android.

Android Interface Description Language (aidl)


Permite-lhe gerar código para uma interface de interprocesso, como um serviço que você
possa utilizar.

Sqlite3
Incluído como uma conveniência, esta ferramenta permite-lhe acessar dados de arquivos SQ-
Lite criados e utilizados por aplicações Android.

Traceview
Esta ferramenta produz análise com visualização gráfica dos rastros de dados registrados que
você pode gerar a partir de sua aplicação Android.

Mksdcard
Ajuda você a criar um disco imagem que você pode usar com o emulador, para simular a
presença de um cartão externo de armazenamento (como um cartão SD).

DX
A ferramenta dx reescreve bytecodes .class em bytecodes Android(armazenados em arquivos
.dex).

ActivityCreator
Um script que gera arquivos Ant que você pode usar para compilar suas aplicações Android.
Se você estiver desenvolvendo no Eclipse com o ADT plugin, você não precisará usar esse script.

40
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

5.2 Ciclo de vida de uma aplicação Android


Na maioria dos casos, as aplicações Android rodam em seu próprio processo Linux. Este
processo é criado para a aplicação quando alguns de seus códigos precisarem ser executados e,
ainda, continuarem funcionando até que eles já não sejam necessários e que o sistema precise
de memória para uso em outros aplicativos.

Uma característica importante e não tão usual de Android é que o tempo de vida de uma
aplicação não é diretamente controlado pela própria aplicação. Ao invés disso, ele é determinado
pelo sistema, através de uma combinação das partes da aplicação que o sistema sabe que está
funcionando, de como essas coisas são importantes para o utilizador e de quanta memória global
encontra-se disponível no sistema.

É importante que desenvolvedores de aplicação entendam como diferentes componentes da


aplicação (em especial Ativity, Service, e IntentReceiver) causam impacto sobre o tempo de vida
no processo de uma aplicação. Não utilizar estes componentes corretamente pode fazer com que
o sistema mate a aplicação enquanto ela estiver fazendo algo importante.

Um exemplo comum de um ciclo de vida de um processo é o IntentReceiver que inicia a th-


read(tarefa) quando recebe uma Intent em seu método onReceiveIntent() e, em seguida, retorna
da função. Uma vez retornado, o sistema considera que IntentReceiver deixou de estar ativo e,
por conseguinte, hospedar o processo não é mais necessário (a menos que outros componentes
da aplicação estejam ativos). Assim, ele pode matar o processo a qualquer momento para recu-
perar memória, encerrando a thread que está sendo executado na mesma. A solução para este
problema é iniciar um serviço a partir da IntentReceiver, de modo que o sistema saiba que ainda
há muito trabalho a ser feito no processo ativo.

Para determinar quais processos devem ser mortos quando há pouca memória, o Android
coloca-os em uma "hierarquia de importância", baseada nos componentes em execução e no
estado desses componentes. Estas são as ordens de importância:

• 1. Um processo, em primeiro plano, mantém uma Activity na parte superior da tela em que
o usuário está interagindo (seu método onResume() foi chamado) ou um IntentReceiver
que está sendo executado no momento (o seu método onReceiveIntent() está executando).
Haverá apenas alguns desses processos no sistema e eles só serão mortos como um úl-
timo recurso, caso a memória esteja tão baixa que nem mesmo esses processos possam
continuar a funcionar. Geralmente, neste ponto o dispositivo atingiu um estado de pagina-
ção da memória, então essa ação de matar o processo é necessária de modo a manter a
interface do usuário respondendo.

• 2. Um processo visível tem uma Activity que é visível para o usuário na tela, mas não no
primeiro plano(seu método onPause() foi chamado). Isto pode ocorrer, por exemplo, se a
atividade de primeiro plano for exibida com a aparência de diálogo que permite que a Activity
anterior seja vista por trás dela. Tal processo é considerado extremamente importante e não
será morto a menos que isso seja necessário para que todos os processos de primeiro plano
continuem sendo executados.

• 3. Um processo de serviço é aquele que mantém um Service que tenha sido iniciado com
o método startService(). Embora estes processos não sejam diretamente visíveis para o

41
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

usuário, eles estão geralmente fazendo coisas que importam para o usuário (como mp3
sendo tocadas em segundo plano, upload e download de dados pela rede), então o sistema
irá sempre manter esses processos em execução, a menos que não haja bastante Memória
para manter todos os processos visíveis e de primeiro plano.

• 4. Um processo de segundo plano é aquele que tem uma Activity que não está visível para
o usuário (seu método onStop() foi chamado). Estes processos não têm impacto direto so-
bre a experiência do usuário. O sistema pode matar esses processos a qualquer momento
para recuperar memória de um dos três tipos de processos anteriores. Normalmente, exis-
tem muitos destes processos executando, então eles são mantidos em uma lista LRU para
garantir que o processo mais recentemente visto pelo usuário seja o último a ser morto
quando está baixa a memória.

• 5. Um processo vazio é aquele que não possui qualquer componente de aplicação activo. A
única razão para manter tal processo é tê-lo em cache(escondido), para melhorar o tempo
de inicialização na próxima vez que um componente da aplicação precisar ser executado.
Sendo assim, o sistema irá matar muitas vezes estes processos, a fim de manter o equilíbrio
geral dos recursos do sistema.

Ao decidir a forma de classificar um processo, o sistema escolhe o nível mais importante de


todos os componentes atualmente ativos no processo, segundo a hierarquia descrita acima.

5.3 Filosofia para Design de aplicações Android


O processo de aprendizagem de como construir aplicações para uma nova API é bastante
semelhante, ainda que as próprias plataformas sejam diferentes. Geralmente, há duas fases: Na
primeira, você aprende como usar as APIs para fazer o que você quiser que elas façam, mais
tarde, você aprende as nuanças da plataforma. Em outras palavras, primeiro é mostrado como
você pode construir aplicações, depois como você deve construi-las.

Nessa segunda fase de aprendizagem do caminho certo para construir aplicações, pode-se
levar muito tempo e, freqüentemente, significa cometer erros e aprender com eles. Bom, isso não
é um processo muito eficiente, por isso esta página e os links abaixo destinam-se a dar-lhe uma
pequena ajuda.

Saiba que aplicações bem sucedidas irão oferecer uma excelente experiência ao usuário fi-
nal. Enquanto a equipe Android criou um núcleo de sistema sólido, a maior parte da experiência
do usuário será proveniente da interação do próprio usuários com suas aplicações.

Uma aplicação que proporciona uma excelente experiência para o usuário tem três caracterís-
ticas fundamentais: é rápida, interativa e é sem descontinuidades. Naturalmente, cada plataforma
desde o início da computação já tem, provavelmente, essas mesmas três qualidades em algum
momento. No entanto, cada plataforma as alcança de forma diferente, sendo que as informações
abaixo explicam como seus aplicativos podem alcançá-las em Android.

42
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Rapidez
Uma aplicação Android deve ser rápida ou talvez seja mais correto dizer que ela deve ser efici-
ente. Há uma tendência no mundo da computação estes dias para supor que a Lei de Moore irá
resolver todos os nossos problemas eventualmente. Quando se trata de aplicações embutidas,
no entanto, a Lei de Moore é um pouco mais complicada.

A lei de Moore realmente não se aplica aos dispositivos móveis da mesma forma que as apli-
cações para desktop e servidor. Ela é realmente uma lei sobre transístor de densidade. Ou seja,
diz-se que você também pode compactar mais circuitos em um determinado tamanho de chips
com o passar do tempo. Para aplicações desktop e servidor, isto significa que você pode empa-
cotar mais "velocidade"em um chip de aproximadamente o mesmo tamanho, o que resultou no
aumento substancial do desempenho.

Para aplicações embutidas, como telefones celulares, no entanto, a lei de Moore é normal-
mente utilizada para fazer chips menores. Ou seja, a tendência é usar o aumento da densidade
para fazer o mesmo chip menor e consumindo menos energia, a fim de tornar telefones pequenos
e alongar a duração das baterias. Como resultado, dispositivos embutidos como telefones estão
aumentando em velocidade muito mais lenta do que sistemas de computador.

Por isso, é tão importante escrever códigos cada vez mais eficientes: não se pode presumir
que telefones terão a mesma velocidade de desenvolvimento que servidores e desktops, mas de
uma maneira geral, escrever códigos eficientes significa manter a alocação de memória em um
valor mínimo, evitando certas linguagens de programação e expressões que possam prejudicar
o desempenho. Em termos de orientação a objetos, a maior parte deste trabalho é efetuado no
nível dos métodos.

Interativo
É possível escrever um código de desempenho extremamente rápido e eficaz, porém ele
terá um terrível defeito: a falta de interação com o usuário de forma satisfatória. Estes tipos de
aplicações não são suficientemente interativas. Porém, as que são demasiadamente interativas
costumam ser lentas, pesadas, podendo congelar por períodos significativos ou demorar muito
para processar a entrada. Em termos Android, aplicações que não são suficientemente interati-
vas irão freqüentemente fazer com que o sistema emita a temida mensagem "Not Responding
Application"(ANR).

Geralmente, isso acontece se sua aplicação não responder às informações fornecidas pelo
usuário. Por exemplo, se a sua aplicação bloquear algumas operações de entrada e saída
(freqüentemente uma rede acesso), então a aplicação principal (main thread) não será capaz
de processar eventos recebidos do usuário. Depois de um tempo, o sistema irá concluir que a
sua aplicação está em espera e dará ao usuário a opção de matá-la.

Da mesma forma, se a sua aplicação gastar muito tempo construindo uma estrutura elaborada
na memória ou talvez computando os próximos passos em um jogo, então, novamente o sistema
irá concluir que sua aplicação está em espera e dará ao usuário a opção de matá-la. É sempre
importante para certificar-se de que estes cálculos são eficientes utilizando as técnicas acima,
mas mesmo os mais eficientes códigos ainda levam tempo para serem executados.

43
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Em ambos os casos, a correção é geralmente para criar uma pequena thread que faça a maior
parte dos seus trabalhos. Isto mantém a main thread(que dirige o loop da interface com usuário)
executando e impede que o sistema conclua que seu programa congelou.

Sem descontinuidade
Mesmo que a sua aplicação seja rápida e interativa, ela ainda pode irritar os usuários. Um
exemplo comum é um processo de fundo (como um Android Service ou IntentReceiver) que
aparece numa interface gráfica em resposta a algum evento. Isto pode parecer inofensivo e de-
senvolvedores, freqüentemente, assumem que isto é correto, porque eles passam a maior parte
do seu tempo testando e utilizando a sua própria aplicação.

No entanto, o modelo de aplicação Android é construído explicitamente para permitir que os


usuários alternem fluentemente entre aplicações. Isto significa que quando um processo, em
segundo plano, acende uma UI, o usuário poderá ir para outra parte do sistema, fazendo outras
coisas tais como atender uma ligação. Imagine se o serviço SMS abrir uma caixa de diálogo cada
vez que uma mensagem de texto entrar. Isso iria irritar os usuários e é por isso que o padrão
Android é utilizar notificações para tais eventos, dando mais controle ao usuário.

Esse é apenas um exemplo, há muitos mais. Por exemplo, se uma Ativity não implementar
corretamente o onPause() e outros métodos, isso vai resultar em perda de dados. Ou, se sua
aplicação expor dados destinados a serem utilizados por outras aplicações, você deve fazê-lo
através de um ContentProvider, utilizando um banco de dados, por exemplo.

O que esses exemplos têm em comum é que eles envolvem coperação entre o sistema e
outras aplicações. O sistema Android foi concebido para tratar aplicações como uma espécie de
federação de componentes vagamente acoplados, em vez de pedaços de código acoplados. Isto
permite-lhe como o desenvolvedorvisualizar todo o sistema apenas como uma federação ainda
maior desses componentes. Isso permite-lhe integrar-se limpa e harmonicamente com outros
aplicativos, por isso você deve projetar seu próprio código para retornar o favor.

5.4 Glossário Android


.apk extensão
Essa é a extensão para um pacote de arquivos Android, que geralmente contém todos os
arquivos relacionados a uma única aplicação Android. O próprio arquivo compactado é uma
coleção de um arquivo AndroidManifest.xml, código de aplicação (arquivos .dex), arquivos de
recurso e outros arquivos. Um projeto é compilado em um único arquivo ".apk".

.dex extensão
Programas Android são compilados em arquivos .dex (Dalvik Executável), que estão compac-
tados em um único arquivo .apk no dispositivo. Arquivos .dex podem ser criados por aplicações
compiladas traduzidas automaticamente e escritas na linguagem de programação Java.

44
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Action
Uma descrição de algo que uma Intent de envio irá realizar. Uma ação é uma String de
valor atribuído a um Intent. Strings de Action podem ser definidas pelo Android ou por uma
terceira parte desenvolvedora. Por exemplo, android.intent.action.VIEW para uma URL Web, ou
com.example.rumbler.SHAKE_PHONE para uma aplicação feita sob encomenda para vibrar o
telefone.

Activity
A única tela de um aplicativo, com suporte à código Java, derivados da classe Activity.

adb
Android Debug Bridge, uma aplicação para depurador em linha de comando depuração
enviado juntamente com o SDK. Ele fornece ferramentas para navegar o dispositivo, copia ferra-
mentas no dispositivo e encaminha portas para depuração.

Application
Uma coleção de uma ou mais atividades, serviços, escutas e Intent receivers. Uma aplicação
tem uma única manifestação e é compilada em um único arquivo .apk no dispositivo.

Content Provider
A classe construída sobre ContentProvider que manipula os conteúdos de consulta a strings
de um formato específico para retornar dados em um formato também específico.

Content URI
Um tipo de URI.

Dalvik
O nome da máquina virtual Android. O Dalvik VM é apenas um interpretador que executa
arquivos no formato Dalvik Executável (.dex), um formato que é otimizado para o armazenamento
eficiente e mapeamento de memória em execução. A máquina virtual é de registo base, podendo
executar aulas compiladas por um compilador linguagem Java que foram transformadas em seu
formato nativo usando o incluiu "dx"ferramenta. O VM roda no topo do Posix compatível com os
sistemas operacionais, que se baseiam sobre a funcionalidade subjacente (tais como o encade-
amento e baixo nível memória gestão). O Dalvik núcleo classe biblioteca destina - se a fornecer
uma base para o desenvolvimento familiarizado com os utilizados para programação com Java
Standard Edition, mas é orientado especificamente para as necessidades de um pequeno dispo-
sitivo móvel.

45
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

DDMS
Dalvik Debug Monitor Service, uma GUI para depuração de aplicação que vem junto com o
SDK. Fornece tela de captura, log dump e etcs. Veja usando o Dalvik Debug Monitor Server para
obter mais informações sobre este programa.

Drawable
Um recurso visual compilado que pode ser utilizado como fundo, título ou outra parte da tela.
É compilado em uma subclasse android.graphics.drawable.

Intent
Uma classe Intent, que contém vários campos descrevendo o que um chamador deveria fazer.
O chamador envia esta intenção para um "resolvedor de intenções"Android que olha através de
filtros a intenção de todas as aplicações para encontrar a atividade(activity) mais adequada para
lidar com esta intenção(intent). Os campos das Intent incluem a ação desejada, uma categoria,
uma seqüência de dados, o tipo MIME dos dados, um tratamento classe e outras restrições.

Intent Filter
Atividades e intenções receptores incluem um ou mais filtros em seus manifestos para des-
crever que tipo de intenções ou mensagens que eles podem manter ou desejam receber. Uma
intenção filtro enumera um conjunto de requisitos, tais como tipo de dados, a ação solicitada, e
URI formato, que as intenções ou mensagens devem cumprir. Para Atividades, android pesquisa
com a mais estreita correspondência válida entre as intenções e as atividades filtro. Para men-
sagens, android vai encaminhar uma mensagem para todos os receptores com correspondência
intenção filtro.

Intent Receiver
Uma classe de aplicação que ouve mensagens difundidas pelo chamado de
Context.broadcastIntent().

Layout Resource
Um arquivo XML que descreve o layout de uma tecla Activity.

Manifesto
Um arquivo XML associado com cada aplicativo que descreve as diferentes activities, filtros
intent, serviços e outros itens que ela expõe.

Nine-patch / 9-patch / Ninepatch image


Um recurso de bitmap de tamanho variável que pode ser usado para outros fundos ou imagens
no dispositivo.

46
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Query String
Um tipo de URI. Veja a entrada URI.

Resource
Um XML de usuário fornecido, bitmap ou outro arquivo, entrou em um processo de contrução
do aplicativo, que mais tarde podem ser carregados a partir de código. Andróid pode aceitar re-
cursos de vários tipos. Aplicação-definidos recursos devem ser armazenados no /res subpastas.

Service
Uma classe que é executada em segundo plano para executar várias ações persistentes,
como a reprodução de música ou atividade de monitoramento de rede.

Theme
Um conjunto de propriedades (texto tamanho, a cor, e assim por diante) empacotados juntos
para definir diferentes configurações default display. Andróide fornece alguns temas padrões,
enumerados no R.style (começando com "Theme_").

URIs
Andróide usa strings URI tanto para solicitar dados (por exemplo, uma lista de contatos)
quanto para requerer ações (por exemplo, abrir uma página da Web em um navegador). Ambas
são string válidas URI, mas têm valores diferentes. Todos os pedidos de dados devem começar
com a string "content:/ /". Strings de Ação são válidas URIs que podem ser tratadas adequa-
damente por aplicações no dispositivo. Por exemplo, uma URI começando com "http:// "será
manuseada pelo navegador.

5.5 Considerações
O material foi editado e/ou traduzido por Edson de Hungria Junior,(hungria@cdtc.org.br)
Equipe CDTC. O conteúdo desse documento, incluindo imagens que foram editadas seguindo o
licença Creative Commons License 2.5, tendo como base a descrição da Open Handset Alliance
responsável pelo desenvolvimento do Android respeitando os todos direitos dos autores devidos.

5.6 Sítios de Referência


http://creativecommons.org/licenses/by/2.5/br/
http://code.google.com/android/what-is-android.html

47

Potrebbero piacerti anche