Você está na página 1de 48

Android

Verso 1.0.0

Sumrio
I

Sobre essa Apostila

II Informaes Bsicas

III GNU Free Documentation License

IV

Android

18

1 Android

19

2 O que Android?
2.1 ANDROID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Opes: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Arquitetura Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20
20
20
21

3 Instalando SDK, Requisitos, Depurao e Dicas


3.1 Sistema e Requisitos de Software . . . . . . .
3.2 Instalao do SDK . . . . . . . . . . . . . . . .
3.3 Desenvolvendo aplicaes Android no Eclipse
3.4 Executando e Depurando uma aplicao . . .
3.5 Criao de um projeto Android . . . . . . . . .
3.6 Dicas de depurao . . . . . . . . . . . . . . .
3.7 Construir e instalar uma aplicao Android . .
3.8 Remoo de um aplicativo Android . . . . . . .
3.9 Dicas para Eclipse . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.

24
24
25
27
28
29
32
33
33
34

.
.
.
.
.

35
35
36
36
36
37

5 Ferramentas de Desenvolvimento e Ciclo de Vida de uma Aplicao


5.1 Ferramentas de Desenvolvimento . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Ciclo de vida de uma aplicao Android . . . . . . . . . . . . . . . . . . . . . . . . .
5.3 Filosofia para Design de aplicaes Android . . . . . . . . . . . . . . . . . . . . . . .

38
38
40
41

4 Anatomia de uma Aplicao Android


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

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

5.4 Glossrio Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43


5.5 Consideraes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.6 Stios de Referncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

Parte I

Sobre essa Apostila

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

Contedo
O contedo dessa apostila fruto da compilao de diversos materiais livres publicados na internet, disponveis em diversos sites ou originalmente produzido no CDTC (http://www.cdtc.org.br.)
O formato original deste material bem como sua atualizao est disponvel dentro da licena
GNU Free Documentation License, cujo teor integral encontra-se aqui reproduzido na seo de
mesmo nome, tendo inclusive uma verso traduzida (no oficial).
A reviso e alterao vem sendo realizada pelo CDTC (suporte@cdtc.org.br) desde outubro
de 2006. Crticas e sugestes construtivas sero 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 Difuso de Tecnologia e Conhecimento que
vm sendo realizado pelo ITI (Instituto Nacional de Tecnologia da Informao) 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 pas.
Informaes adicionais podem ser obtidas atravs do email ouvidoria@cdtc.org.br, ou da
home page da entidade, atravs da URL http://www.cdtc.org.br.

Garantias
O material contido nesta apostila isento de garantias e o seu uso de inteira responsabilidade do usurio/leitor. Os autores, bem como o ITI e seus parceiros, no se responsabilizam
direta ou indiretamente por qualquer prejuzo oriundo da utilizao do material aqui contido.

Licena
Copyright 2006, Instituto Nacional de Tecnologia da Informao (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 APOSTILA. A copy of the license is included in the section entitled GNU Free Documentation
License.

Parte II

Informaes Bsicas

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

Sobre o CDTC
Objetivo Geral
O Projeto CDTC visa a promoo e o desenvolvimento de aes que incentivem a disseminao de solues que utilizem padres abertos e no proprietrios de tecnologia, em proveito do
desenvolvimento social, cultural, poltico, tecnolgico e econmico da sociedade brasileira.
Objetivo Especfico
Auxiliar o Governo Federal na implantao do plano nacional de software no-proprietrio e
de cdigo fonte aberto, identificando e mobilizando grupos de formadores de opinio dentre os
servidores pblicos e agentes polticos da Unio Federal, estimulando e incentivando o mercado
nacional a adotar novos modelos de negcio da tecnologia da informao e de novos negcios
de comunicao com base em software no-proprietrio e de cdigo fonte aberto, oferecendo
treinamento especfico para tcnicos, profissionais de suporte e funcionrios pblicos usurios,
criando grupos de funcionrios pblicos que iro treinar outros funcionrios pblicos e atuar como
incentivadores e defensores dos produtos de software no proprietrios e cdigo fonte aberto, oferecendo contedo tcnico on-line para servios de suporte, ferramentas para desenvolvimento de
produtos de software no proprietrios e do seu cdigo fonte livre, articulando redes de terceiros
(dentro e fora do governo) fornecedoras de educao, pesquisa, desenvolvimento e teste de produtos de software livre.

Guia do aluno
Neste guia, voc ter reunidas uma srie de informaes importantes para que voc comece
seu curso. So elas:
Licenas para cpia de material disponvel;
Os 10 mandamentos do aluno de Educao a Distncia;
Como participar dos foruns e da wikipdia;
Primeiros passos.
muito importante que voc entre em contato com TODAS estas informaes, seguindo o
roteiro acima.

Licena
Copyright 2006, Instituto Nacional de Tecnologia da Informao (cdtc@iti.gov.br).
6

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

dada permisso para copiar, distribuir e/ou modificar este documento sob os termos
da Licena de Documentao Livre GNU, Verso 1.1 ou qualquer verso posterior
pblicada pela Free Software Foundation; com o Capitulo Invariante SOBRE ESSA
APOSTILA. Uma cpia da licena est inclusa na seo entitulada "Licena de Documentao Livre GNU".

Os 10 mandamentos do aluno de educao online

1. Acesso Internet: ter endereo eletrnico, um provedor e um equipamento adequado


pr-requisito para a participao nos cursos a distncia;
2. Habilidade e disposio para operar programas: ter conhecimentos bsicos de Informtica necessrio para poder executar as tarefas;
3. Vontade para aprender colaborativamente: interagir, ser participativo no ensino a distncia conta muitos pontos, pois ir colaborar para o processo ensino-aprendizagem pessoal,
dos colegas e dos professores;
4. Comportamentos compatveis com a etiqueta: mostrar-se interessado em conhecer seus
colegas de turma respeitando-os e se fazendo ser respeitado pelos mesmos;
5. Organizao pessoal: planejar e organizar tudo fundamental para facilitar a sua reviso
e a sua recuperao de materiais;
6. Vontade para realizar as atividades no tempo correto: anotar todas as suas obrigaes e
realiz-las em tempo real;
7. Curiosidade e abertura para inovaes: aceitar novas idias e inovar sempre;
8. Flexibilidade e adaptao: requisitos necessrio mudana tecnolgica, aprendizagens
e descobertas;
9. Objetividade em sua comunicao: comunicar-se de forma clara, breve e transparente
ponto - chave na comunicao pela Internet;
10. Responsabilidade: ser responsvel por seu prprio aprendizado. O ambiente virtual no
controla a sua dedicao, mas reflete os resultados do seu esforo e da sua colaborao.

Como participar dos fruns e Wikipdia


Voc tem um problema e precisa de ajuda?
Podemos te ajudar de 2 formas:
A primeira o uso dos fruns de notcias e de dvidas gerais que se distinguem pelo uso:
. O frum de notcias tem por objetivo disponibilizar um meio de acesso rpido a informaes
que sejam pertinentes ao curso (avisos, notcias). As mensagens postadas nele so enviadas a
7

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

todos participantes. Assim, se o monitor ou algum outro participante tiver uma informao que
interesse ao grupo, favor post-la aqui.
Porm, se o que voc deseja resolver alguma dvida ou discutir algum tpico especfico do
curso. recomendado que voc faa uso do Frum de dvidas gerais que lhe d recursos mais
efetivos para esta prtica.
. O frum de dvidas gerais tem por objetivo disponibilizar um meio fcil, rpido e interativo
para solucionar suas dvidas e trocar experincias. As mensagens postadas nele so enviadas
a todos participantes do curso. Assim, fica muito mais fcil obter respostas, j que todos podem
ajudar.
Se voc receber uma mensagem com algum tpico que saiba responder, no se preocupe com a
formalizao ou a gramtica. Responda! E no se esquea de que antes de abrir um novo tpico
recomendvel ver se a sua pergunta j foi feita por outro participante.
A segunda forma se d pelas Wikis:
. Uma wiki uma pgina web que pode ser editada colaborativamente, ou seja, qualquer participante pode inserir, editar, apagar textos. As verses antigas vo 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 "Wikipdia", uma experincia grandiosa de construo de uma enciclopdia de forma colaborativa, por
pessoas de todas as partes do mundo. Acesse-a em portugus pelos links:
Pgina principal da Wiki - http://pt.wikipedia.org/wiki/
Agradecemos antecipadamente a sua colaborao com a aprendizagem do grupo!

Primeiros Passos
Para uma melhor aprendizagem recomendvel que voc siga os seguintes passos:
Ler o Plano de Ensino e entender a que seu curso se dispe a ensinar;
Ler a Ambientao do Moodle para aprender a navegar neste ambiente e se utilizar das
ferramentas bsicas do mesmo;
Entrar nas lies seguindo a seqncia descrita no Plano de Ensino;
Qualquer dvida, reporte ao Frum de Dvidas Gerais.

Perfil do Tutor
Segue-se uma descrio do tutor ideal, baseada no feedback de alunos e de tutores.
O tutor ideal um modelo de excelncia: consistente, justo e profissional nos respectivos
valores e atitudes, incentiva mas honesto, imparcial, amvel, positivo, respeitador, aceita as
idias dos estudantes, paciente, pessoal, tolerante, apreciativo, compreensivo e pronto a ajudar.
8

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

A classificao por um tutor desta natureza proporciona o melhor feedback possvel, crucial, e,
para a maior parte dos alunos, constitui o ponto central do processo de aprendizagem. Este tutor
ou instrutor:
fornece explicaes claras acerca do que ele espera e do estilo de classificao que ir
utilizar;
gosta que lhe faam perguntas adicionais;
identifica as nossas falhas, mas corrige-as amavelmente, diz um estudante, e explica porque motivo a classificao foi ou no foi atribuda;
tece comentrios completos e construtivos, mas de forma agradvel (em contraste com um
reparo de um estudante: os comentrios deixam-nos com uma sensao de crtica, de
ameaa e de nervossismo)
d uma ajuda complementar para encorajar um estudante em dificuldade;
esclarece pontos que no foram entendidos, ou corretamente aprendidos anteriormente;
ajuda o estudante a alcanar os seus objetivos;
flexvel quando necessrio;
mostra um interesse genuno em motivar os alunos (mesmo os principiantes e, por isso,
talvez numa fase menos interessante para o tutor);
escreve todas as correes de forma legvel e com um nvel de pormenorizao adequado;
acima de tudo, devolve os trabalhos rapidamente;

Parte III

GNU Free Documentation License

10

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

(Traduzido pelo Joo S. O. Bueno atravs do CIPSGA em 2001)


Esta uma traduo no oficial da Licena de Documentao Livre GNU em Portugus Brasileiro. Ela no publicada pela Free Software Foundation, e no se aplica legalmente a distribuio
de textos que usem a GFDL - apenas o texto original em Ingls da GNU FDL faz isso. Entretanto,
ns esperamos que esta traduo ajude falantes de portugus a entenderem melhor a GFDL.
This is an unofficial translation of the GNU General Documentation License into Brazilian Portuguese. It was not published by the Free Software Foundation, and does not legally state the
distribution terms for software that uses the GFDLonly the original English text of the GFDL does
that. However, we hope that this translation will help Portuguese speakers understand the GFDL
better.
Licena de Documentao Livre GNU Verso 1.1, Maro 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 cpias exatas deste documento de licena, mas
no permitido alter-lo.

INTRODUO
O propsito desta Licena 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 modificaes, comercialmente ou no. Secundariamente, esta Licena mantm
para o autor e editor uma forma de ter crdito por seu trabalho, sem ser considerado responsvel
pelas modificaes feitas por terceiros.
Esta Licena um tipo de "copyleft"("direitos revertidos"), o que significa que derivaes do
documento precisam ser livres no mesmo sentido. Ela complementa a GNU Licena Pblica Geral (GNU GPL), que um copyleft para software livre.
Ns fizemos esta Licena para que seja usada em manuais de software livre, por que software
livre precisa de documentao livre: um programa livre deve ser acompanhado de manuais que
provenham as mesmas liberdades que o software possui. Mas esta Licena no 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. Ns recomendamos esta Licena principalmente para trabalhos cujo propsito seja de introduo ou referncia.

APLICABILIDADE E DEFINIES
Esta Licena se aplica a qualquer manual ou outro texto que contenha uma nota colocada pelo
detentor dos direitos autorais dizendo que ele pode ser distribudo sob os termos desta Licena.
O "Documento"abaixo se refere a qualquer manual ou texto. Qualquer pessoa do pblico um

11

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

licenciado e referida como "voc".


Uma "Verso Modificada"do Documento se refere a qualquer trabalho contendo o documento
ou uma parte dele, quer copiada exatamente, quer com modificaes e/ou traduzida em outra
lngua.
Uma "Seo Secundria" um apndice ou uma seo inicial do Documento que trata exclusivamente da relao dos editores ou dos autores do Documento com o assunto geral do
Documento (ou assuntos relacionados) e no contm nada que poderia ser includo diretamente
nesse assunto geral (Por exemplo, se o Documento em parte um livro texto de matemtica, a
Seo Secundria pode no explicar nada de matemtica).
Essa relao poderia ser uma questo de ligao histrica com o assunto, ou matrias relacionadas, ou de posies legais, comerciais, filosficas, ticas ou polticas relacionadas ao mesmo.
As "Sees Invariantes"so certas Sees Secundrias cujos ttulos so designados, como
sendo de Sees Invariantes, na nota que diz que o Documento publicado sob esta Licena.
Os "Textos de Capa"so certos trechos curtos de texto que so listados, como Textos de Capa
Frontal ou Textos da Quarta Capa, na nota que diz que o texto publicado sob esta Licena.
Uma cpia "Transparente"do Documento significa uma cpia que pode ser lida automaticamente, representada num formato cuja especificao esteja disponvel ao pblico geral, cujos
contedos possam ser vistos e editados diretamente e sem mecanismos especiais com editores
de texto genricos ou (para imagens compostas de pixels) programas de pintura genricos ou
(para desenhos) por algum editor de desenhos grandemente difundido, e que seja passvel de
servir como entrada a formatadores de texto ou para traduo automtica para uma variedade
de formatos que sirvam de entrada para formatadores de texto. Uma cpia feita em um formato
de arquivo outrossim Transparente cuja constituio tenha sido projetada para atrapalhar ou desencorajar modificaes subsequentes pelos leitores no Transparente. Uma cpia que no
"Transparente" chamada de "Opaca".
Exemplos de formatos que podem ser usados para cpias Transparentes incluem ASCII simples sem marcaes, formato de entrada do Texinfo, formato de entrada do LaTex, SGML ou XML
usando uma DTD disponibilizada publicamente, e HTML simples, compatvel com os padres, e
projetado para ser modificado por pessoas. Formatos opacos incluem PostScript, PDF, formatos
proprietrios que podem ser lidos e editados apenas com processadores de texto proprietrios,
SGML ou XML para os quais a DTD e/ou ferramentas de processamento e edio no estejam
disponveis para o pblico, e HTML gerado automaticamente por alguns editores de texto com
finalidade apenas de sada.
A "Pgina do Ttulo"significa, para um livro impresso, a pgina do ttulo propriamente dita,
mais quaisquer pginas subsequentes quantas forem necessrias para conter, de forma legvel,
o material que esta Licena requer que aparea na pgina do ttulo. Para trabalhos que no
tenham uma pgina do ttulo, "Pgina do Ttulo"significa o texto prximo da apario mais proeminente do ttulo do trabalho, precedendo o incio do corpo do texto.

12

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

FAZENDO CPIAS EXATAS


Voc pode copiar e distribuir o Documento em qualquer meio, de forma comercial ou no
comercial, desde que esta Licena, as notas de copyright, e a nota de licena dizendo que esta
Licena se aplica ao documento estejam reproduzidas em todas as cpias, e que voc no acrescente nenhuma outra condio, quaisquer que sejam, s desta Licena.
Voc no pode usar medidas tcnicas para obstruir ou controlar a leitura ou confeco de
cpias subsequentes das cpias que voc fizer ou distribuir. Entretanto, voc pode aceitar compensao em troca de cpias. Se voc distribuir uma quantidade grande o suficiente de cpias,
voc tambm precisa respeitar as condies da seo 3.
Voc tambm pode emprestar cpias, sob as mesmas condies colocadas acima, e tambm
pode exibir cpias publicamente.

FAZENDO CPIAS EM QUANTIDADE


Se voc publicar cpias do Documento em nmero maior que 100, e a nota de licena do
Documento obrigar Textos de Capa, voc precisar incluir as cpias 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 trs. Ambas as capas tambm precisam identificar clara e
legivelmente voc como o editor dessas cpias. A capa da frente precisa apresentar o ttulo completo com todas as palavras do ttulo igualmente proeminentes e visveis. Voc pode adicionar
outros materiais s capas. Fazer cpias com modificaes limitadas s capas, tanto quanto estas
preservem o ttulo do documento e satisfaam a essas condies, pode ser tratado como cpia
exata em outros aspectos.
Se os textos requeridos em qualquer das capas for muito volumoso para caber de forma
legvel, voc deve colocar os primeiros (tantos quantos couberem de forma razovel) na capa
verdadeira, e continuar os outros nas pginas adjacentes.
Se voc publicar ou distribuir cpias Opacas do Documento em nmero maior que 100, voc
precisa ou incluir uma cpia Transparente que possa ser lida automaticamente com cada cpia
Opaca, ou informar, em ou com, cada cpia Opaca a localizao de uma cpia Transparente
completa do Documento acessvel publicamente em uma rede de computadores, qual o pblico
usurio de redes tenha acesso a download gratuito e annimo utilizando padres pblicos de
protocolos de rede. Se voc utilizar o segundo mtodo, voc precisar tomar cuidados razoavelmente prudentes, quando iniciar a distribuio de cpias Opacas em quantidade, para assegurar
que esta cpia Transparente vai permanecer acessvel desta forma na localizao especificada
por pelo menos um ano depois da ltima vez em que voc distribuir uma cpia Opaca (diretamente ou atravs de seus agentes ou distribuidores) daquela edio para o pblico.
pedido, mas no obrigatrio, que voc contate os autores do Documento bem antes de
redistribuir qualquer grande nmero de cpias, para lhes dar uma oportunidade de prover voc
com uma verso atualizada do Documento.

13

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

MODIFICAES
Voc pode copiar e distribuir uma Verso Modificada do Documento sob as condies das sees 2 e 3 acima, desde que voc publique a Verso Modificada estritamente sob esta Licena,
com a Verso Modificada tomando o papel do Documento, de forma a licenciar a distribuio
e modificao da Verso Modificada para quem quer que possua uma cpia da mesma. Alm
disso, voc precisa fazer o seguinte na verso modificada:
A. Usar na Pgina de Ttulo (e nas capas, se houver alguma) um ttulo distinto daquele do Documento, e daqueles de verses anteriores (que deveriam, se houvesse algum, estarem listados
na seo "Histrico do Documento"). Voc pode usar o mesmo ttulo de uma verso anterior se
o editor original daquela verso lhe der permisso;
B. Listar na Pgina de Ttulo, como autores, uma ou mais das pessoas ou entidades responsveis pela autoria das modificaes na Verso 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 Pgina de Ttulo o nome do editor da Verso Modificada, como o editor;
D. Preservar todas as notas de copyright do Documento;
E. Adicionar uma nota de copyright apropriada para suas prprias modificaes adjacente s
outras notas de copyright;
F. Incluir, imediatamente depois das notas de copyright, uma nota de licena dando ao pblico
o direito de usar a Verso Modificada sob os termos desta Licena, na forma mostrada no tpico
abaixo;
G. Preservar nessa nota de licena as listas completas das Sees Invariantes e os Textos de
Capa requeridos dados na nota de licena do Documento;
H. Incluir uma cpia inalterada desta Licena;
I. Preservar a seo entitulada "Histrico", e seu ttulo, e adicionar mesma um item dizendo
pelo menos o ttulo, ano, novos autores e editor da Verso Modificada como dados na Pgina de
Ttulo. Se no houver uma sesso denominada "Histrico"no Documento, criar uma dizendo o
ttulo, ano, autores, e editor do Documento como dados em sua Pgina de Ttulo, ento adicionar
um item descrevendo a Verso Modificada, tal como descrito na sentena anterior;
J. Preservar o endereo de rede, se algum, dado no Documento para acesso pblico a uma
cpia Transparente do Documento, e da mesma forma, as localizaes de rede dadas no Documento para as verses anteriores em que ele foi baseado. Elas podem ser colocadas na seo
"Histrico". Voc pode omitir uma localizao na rede para um trabalho que tenha sido publicado
pelo menos quatro anos antes do Documento, ou se o editor original da verso a que ela se refira
der sua permisso;
K. Em qualquer seo entitulada "Agradecimentos"ou "Dedicatrias", preservar o ttulo da
14

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

seo e preservar a seo em toda substncia e fim de cada um dos agradecimentos de contribuidores e/ou dedicatrias dados;
L. Preservar todas as Sees Invariantes do Documento, inalteradas em seus textos ou em
seus ttulos. Nmeros de seo ou equivalentes no so considerados parte dos ttulos da seo;
M. Apagar qualquer seo entitulada "Endossos". Tal sesso no pode ser includa na Verso
Modificada;
N. No reentitular qualquer seo existente com o ttulo "Endossos"ou com qualquer outro
ttulo dado a uma Seo Invariante.
Se a Verso Modificada incluir novas sees iniciais ou apndices que se qualifiquem como
Sees Secundrias e no contenham nenhum material copiado do Documento, voc pode optar
por designar alguma ou todas aquelas sees como invariantes. Para fazer isso, adicione seus
ttulos lista de Sees Invariantes na nota de licena da Verso Modificada. Esses ttulos precisam ser diferentes de qualquer outro ttulo de seo.
Voc pode adicionar uma seo entitulada "Endossos", desde que ela no contenha qualquer coisa alm de endossos da sua Verso Modificada por vrias pessoas ou entidades - por
exemplo, declaraes de revisores ou de que o texto foi aprovado por uma organizao como a
definio oficial de um padro.
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 Verso 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 no pode
adicionar um outro; mas voc pode trocar o antigo, com permisso explcita do editor anterior que
adicionou a passagem antiga.
O(s) autor(es) e editor(es) do Documento no do permisso por esta Licena para que seus
nomes sejam usados para publicidade ou para assegurar ou implicar endossamento de qualquer
Verso Modificada.

COMBINANDO DOCUMENTOS
Voc pode combinar o Documento com outros documentos publicados sob esta Licena, sob
os termos definidos na seo 4 acima para verses modificadas, desde que voc inclua na combinao todas as Sees Invariantes de todos os documentos originais, sem modificaes, e liste
todas elas como Sees Invariantes de seu trabalho combinado em sua nota de licena.
O trabalho combinado precisa conter apenas uma cpia desta Licena, e Sees Invariantes
Idnticas com multiplas ocorrncias podem ser substitudas por apenas uma cpia. Se houver
mltiplas Sees Invariantes com o mesmo nome mas com contedos distintos, faa o ttulo de
15

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

cada seo nico adicionando ao final do mesmo, em parnteses, o nome do autor ou editor
origianl daquela seo, se for conhecido, ou um nmero que seja nico. Faa o mesmo ajuste
nos ttulos de seo na lista de Sees Invariantes nota de licena do trabalho combinado.
Na combinao, voc precisa combinar quaisquer sees entituladas "Histrico"dos diversos documentos originais, formando uma seo entitulada "Histrico"; da mesma forma combine
quaisquer sees entituladas "Agradecimentos", ou "Dedicatrias". Voc precisa apagar todas as
sees entituladas como "Endosso".

COLETNEAS DE DOCUMENTOS
Voc pode fazer uma coletnea consitindo do Documento e outros documentos publicados
sob esta Licena, e substituir as cpias individuais desta Licena nos vrios documentos com
uma nica cpia incluida na coletnea, desde que voc siga as regras desta Licena para cpia
exata de cada um dos Documentos em todos os outros aspectos.
Voc pode extrair um nico documento de tal coletnea, e distribu-lo individualmente sob
esta Licena, desde que voc insira uma cpia desta Licena no documento extrado, e siga esta
Licena em todos os outros aspectos relacionados cpia exata daquele documento.

AGREGAO COM TRABALHOS INDEPENDENTES


Uma compilao do Documento ou derivados dele com outros trabalhos ou documentos separados e independentes, em um volume ou mdia de distribuio, no conta como uma Verso Modificada do Documento, desde que nenhum copyright de compilao seja reclamado pela
compilao. Tal compilao chamada um "agregado", e esta Licena no se aplica aos outros
trabalhos auto-contidos compilados junto com o Documento, s por conta de terem sido assim
compilados, e eles no so trabalhos derivados do Documento.
Se o requerido para o Texto de Capa na seo 3 for aplicvel a essas cpias do Documento,
ento, 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.
Seno eles precisaro aparecer nas capas de todo o agregado.

TRADUO
Traduo considerada como um tipo de modificao, ento voc pode distribuir tradues
do Documento sob os termos da seo 4. A substituio de Sees Invariantes por tradues
requer uma permisso especial dos detentores do copyright das mesmas, mas voc pode incluir
tradues de algumas ou de todas as Sees Invariantes em adio s verses orignais dessas
Sees Invariantes. Voc pode incluir uma traduo desta Licena desde que voc tambm inclua a verso original em Ingls desta Licena. No caso de discordncia entre a traduo e a

16

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

verso original em Ingls desta Licena, a verso original em Ingls prevalecer.

TRMINO
Voc no pode copiar, modificar, sublicenciar, ou distribuir o Documento exceto como expressamente especificado sob esta Licena. Qualquer outra tentativa de copiar, modificar, sublicenciar, ou distribuir o Documento nula, e resultar automaticamente no trmino de seus direitos
sob esta Licena. Entretanto, terceiros que tenham recebido cpias, ou direitos de voc sob esta
Licena no tero suas licenas terminadas, tanto quanto esses terceiros permaneam em total
acordo com esta Licena.

REVISES FUTURAS DESTA LICENA


A Free Software Foundation pode publicar novas verses revisadas da Licena de Documentao Livre GNU de tempos em tempos. Tais novas verses sero similares em espirito verso
presente, mas podem diferir em detalhes ao abordarem novos porblemas e preocupaes. Veja
http://www.gnu.org/copyleft/.
A cada verso da Licena dado um nmero de verso distinto. Se o Documento especificar
que uma verso particular desta Licena "ou qualquer verso posterior"se aplica ao mesmo, voc
tem a opo de seguir os termos e condies daquela verso especfica, ou de qualquer verso
posterior que tenha sido publicada (no como rascunho) pela Free Software Foundation. Se o
Documento no especificar um nmero de Verso desta Licena, voc pode escolher qualquer
verso j publicada (no como rascunho) pela Free Software Foundation.
ADENDO: Como usar esta Licena para seus documentos
Para usar esta Licena num documento que voc escreveu, inclua uma cpia desta Licena
no documento e ponha as seguintes notas de copyright e licenas logo aps a pgina de ttulo:
Copyright (c) ANO SEU NOME.
dada permisso para copiar, distribuir e/ou modificar este documento sob os termos da Licena
de Documentao Livre GNU, Verso 1.1 ou qualquer verso posterior publicada pela Free Software Foundation; com as Sees Invariantes sendo LISTE SEUS TTULOS, com os Textos da
Capa da Frente sendo LISTE, e com os Textos da Quarta-Capa sendo LISTE. Uma cpia da licena est inclusa na seo entitulada "Licena de Documentao Livre GNU".
Se voc no tiver nenhuma Seo Invariante, escreva "sem Sees Invariantes"ao invs de
dizer quais so invariantes. Se voc no tiver Textos de Capa da Frente, escreva "sem Textos de
Capa da Frente"ao invs de "com os Textos de Capa da Frente sendo LISTE"; o mesmo para os
Textos da Quarta Capa.
Se o seu documento contiver exemplos no triviais de cdigo de programas, ns recomendamos a publicao desses exemplos em paralelo sob a sua escolha de licena de software livre,

17

CDTC

Centro de Difuso de Tecnologia e Conhecimento

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

18

Brasil/DF

Parte IV

Android

19

Captulo 1

Android

Figura 1 - Android
A plataforma Android um software para dispositivos mveis, incluindo um sistema operacional, middleware e aplicativos-chave. Os desenvolvedores podem criar aplicaes para a plataforma usando o Android SDK, sendo que as aplicaes so escritas utilizando a linguagem
de programao Java e executado no Dalvik, uma mquina virtual projetada para uso embutido
capaz de rodar em kernel Linux.

20

Captulo 2

O que Android?

2.1 ANDROID
Android um software feito para dispositivos mveis que inclui um sistema operacional, middleware e aplicativos. O SDK fornece as ferramentas e APIs necessrias para comear a desenvolver aplicaes na plataforma Android usando a linguagem de programao Java.

2.2 Opes:
Aplicativos Framework permitindo reutilizao e substituio de componentes;
Dalvik - mquina virtual otimizada para dispositivos mveis;
Navegador cdigo aberto integrado baseado no WebKit;
Grficos otimizados alimentado por bibliotecas grficas 2D; Grficos 3D baseados no OpenGL
ES 1.0;
SQLite para armazenamento de dados estruturados;
Mdia com suporte para udio, vdeo e imagens(MPEG4, H.264, MP3, AAC, AMR, JPG,
PNG, GIF);
Telefonia GSM (dependente de hardware);
Bluetooth, EDGE, 3G, e WiFi (dependente de hardware);
Cmera, GPS, bssola, e etc (dependente de hardware);
Ambiente de desenvolvimento incluindo um dispositivo emulador, ferramentas de depurao, memria, perfis de desempenho e um plugin para o IDE Eclipse.

21

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

2.3 Arquitetura Android

Figura 2 - Arquitetura Android

Aplicaes
Android ir navegar com um grupo de aplicaes, incluindo um cliente de email, programa
SMS, calendrio, mapas, navegador, contatos, etc. Todas aplicaes so escritas utilizando a
linguagem de programao Java.

Aplicaes Framework
Desenvolvedores tm pleno acesso aos mesmos framework APIs utilizados por aplicaes
complexas. A arquitetura da aplicao foi desenhada para simplificar a reutilizao de componentes, sendo que qualquer aplicativo pode publicar as suas funcionalidades e qualquer outra
aplicao poder fazer uso das mesmas(mesmo que sujeito a restries de segurana impostas pelo framework). Este mesmo mecanismo permite que componentes sejam substitudo pelo
usurio.
Todas aplicaes de baixo nvel so um conjunto de servios e de sistemas, incluindo:
Um rico e extensvel conjunto de Views que podem ser usadas para construir uma aplicao,
incluindo listas, grides, caixas de texto, botes e mesmo um navegador web;
22

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

Content Providers aplicaes que permitam o acesso a dados de outros aplicativos (como
Contatos), ou para compartilhar seus prprios dados;
Resource Manager fornece acesso a recursos (no codificados) como grficos e arquivos
de layout;
Notification Manager permite que todas aplicaes exibam avisos personalizados na barra
de estado;
Activity Manager que gerencia o ciclo de vida das aplicaes;

Bibliotecas
Android inclui um conjunto de bibliotecas C / C + + usadas por diversos componentes do
sistema Android. Estas capacidades so expostas aos desenvolvedores por meio da aplicao
framework Android. Algumas das principais bibliotecas so listadas a seguir:
Sistema C library - Uma biblioteca derivada BSD que uma implementao do sistema do
padro C (libc), voltada para dispositivos baseados em Linux;
Media Libraries - baseado em PacketVideos OpenCORE, as bibliotecas suportam reproduo e gravao de muitos formatos populares de udio e vdeo incluindo MPEG4, H.264,
MP3, AAC, AMR, JPG e PNG;
Surface Manager - Controla o acesso exibio do subsistema e de camadas grficas 2D
e 3D de mltiplas aplicaes;
LibWebCore - Um navegador web moderno que torna poderosa a navegao com Android;
SGL - Grficos 2D de baixa camada;
3D Libraries - Uma implementao baseada em OpenGL ES 1,0 APIs: Bibliotecas usadas
em acelerao de hardware 3D (quando disponvel);
FreeType - Bitmaps e fontes vetoriais para renderizo;
SQLite - Leve e poderosa base de dados relacional disponvel para todas as aplicaes.

Android Runtime
Android inclui um grupo de bibliotecas que fornece a maioria das funcionalidades disponveis
nas principais bibliotecas da linguagem de programao Java.
Cada aplicao Android roda em seu prprio processo, com a sua prpria instncia da mquina virtual Dalvik. O Dalvik VM executa arquivos no Dalvik Executvel (.dex), que otimizado
para usar mnimo de memria. A Dalvik VM baseia-se em kernel Linux para subjacentes funcionalidade como o encadeamento e gesto de memria de baixo nvel.

23

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

Linux Kernel
Android invoca Linux verso 2.6 para o sistema central de servios, tais como segurana,
gesto de memria, gesto de processos, rede e drivers. O kernel tambm atua como uma
camada de abstrao entre o hardware e o resto do software.

24

Captulo 3

Instalando SDK, Requisitos, Depurao


e Dicas

3.1 Sistema e Requisitos de Software


Para desenvolver aplicaes no Android utilizando o cdigo 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 (includo na maioria dos pacotes Eclipse
IDE). O JDK 5 ou JDK 6 (JRE por si s no suficiente). No compatvel 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 no suficiente). No compatvel 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 requisitos listados acima. Em particular, note que algumas distribuies Linux podem incluir JDK 1.4
ou Gnu Compiler para Java, que no so suportados pelo ambiente Android de desenvolvimento.
25

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

3.2 Instalao do SDK


Depois de fazer o download do SDK, descompacte o arquivo (.zip) para um local adequado
na sua mquina. Por padro, os arquivos SDK so desempacotados em um diretrio chamado
android_sdk_<platform>_<release>_<build>. O diretrio contm os subdiretrios /tools, /samples
e outros.
Anote o nome e local do diretrio 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 diretrio.
Como mencionado acima, o diretrio tools/ est localizado no diretrio SDK.
No Linux, editar o arquivo /.bash_profile ou /.bashrc. Procure uma linha que define a varivel
de ambiente PATH e adicione o caminho completo para o diretrio tools/. Se voc no visualizar
uma linha definindo o caminho, voc pode adicionar um:

export PATH=${PATH}:<seu_sdk_dir>/tools
Em um computador Mac, procure em seu diretrio home pelo .bash_profile e proceda da
mesma forma para Linux. Voc pode criar o .bash_profile, se voc ainda no o configurou em
sua mquina.
No Windows, clique com boto direito em Meu Computador e selecione Propriedades. Sob
a guia Avanado, apertar o boto Variveis de Ambiente e na caixa de dilogo, que aparecer,
clique duplo no Caminho sob Variveis de Sistema. Adicione o caminho completo ao diretrio
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 diretrio. Note que, se voc atualizar o seu SDK, voc deve se lembrar de atualizar suas
configuraes 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 aplicaes Android, 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 extenses que tornam a criao, a execuo e depurao de aplicaes Android mais
fceis e rpidas.
Se voc no estiver usando o IDE Eclipse, voc no 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 dilogo que exibida, selecione Search for new features to install em
seguida aperte Next.
3. Aperte New Remote Site.
4. Na caixa de dilogo resultante, digite um nome para o site (ex Android Plugin) e digite
isso como sua URL:

26

CDTC

Centro de Difuso 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 dilogo subseqente Search Results, marque a caixa de seleo Android
Plugin > Eclipse Integration > Android Development Tools e pressione Next.
7. Leia o acordo de licena e, em seguida, selecione Accept para aceitar os termos do
contrato de licena, se for o caso. Pressione Next.
8. Pressione Finish.
9. A ADT plugin no est assinado, voc pode aceitar a instalao mesmo assim, pressionando Install All.
10. Reinicie o Eclipse.
11. Aps o reincio, atualize suas preferncias do Eclipse para apontar para o diretrio SDK:
11.1 Selecione Window> Preferences... Para abrir o painel preferncias. (Mac OS X:
Eclipse> Preferences)
11.2 Selecione Android do painel esquerdo.
11.3 Para a localizao do SDK no painel principal, pressione Browse... E localize o diretrio SDK.
11.4 Pressione Apply e, em seguida, OK.

Atualizando o plugin ADT


Para atualizar o ADT plugin para a verso 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 atualizao para ADT est disponvel, selecione e instale.
Alternativamente,
1. Selecione Help> Software Updates> Manage Configuration.
2. Navegue para baixo da rvore de diretrio e selecione Android Development Tools
<version>
3. Selecione Scan for Updates sob Available Tasks.
27

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

3.3 Desenvolvendo aplicaes Android no Eclipse


Para comear a desenvolver aplicaes Android no Eclipse IDE, voc precisa primeiro criar
um projeto e, em seguida, criar um conjunto de configuraes. Depois disso, voc pode escrever,
executar e depurar sua aplicao.
As sees a seguir fornecem instrues assumindo que voc tenha instalado o ADT Plugin
no seu ambiente Eclipse. Se voc no tiver instalado o ADT plugin, voc deve faz - lo antes de
usar as instrues abaixo.

Criao de um projeto Android


O ADT Plugin fornece um New Project Wizard que voc pode usar para criar um projeto novo
ou de cdigos 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 contedo para o projeto:
3.1 Escolha Create new project in workspace para iniciar um projeto de cdigo novo.
Digite o nome do projeto, do pacote bsico, o nome de uma classe nica Activity como um
arquivo .java e um nome para ser usado em sua aplicao.
3.2 Escolha Create project from existing source para iniciar um projeto de cdigo existente. Use esta opo se voc quiser construir e executar qualquer uma das amostras de
aplicaes includas com o SDK. As aplicaes de amostra(samples) esto localizadas no
diretrio samples/ do SDK.
Navegue para o diretrio que contenha o cdigo fonte existente e clique em OK. Se o diretrio
conter um arquivo vlido Android, a ADT Plugin preencher o pacote, o Activity, e o nome da
aplicao 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 configurao de lanamento


Antes que voc possa executar e depurar sua aplicao no Eclipse, voc deve criar uma configurao lanamento para ele. A configurao de lanamento especifica o projeto a ser lanado,
o incio do Activity, o emulador de opes a ser usado e assim por diante.
Para criar uma configurao para o lanamento da aplicao, siga os seguintes passos:
28

CDTC

Centro de Difuso 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 boto direito do mouse em Application
Android e selecione New;
3. Digite um nome para a sua configurao;
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 opes do emulador de inicializao;
6. Voc pode definir opes adicionais no guia Common conforme desejado;
7. Pressione Apply para salvar a configurao de lanamento ou pressione Run ou Debug
(conforme o caso).

3.4 Executando e Depurando uma aplicao


Uma vez que voc tenha criado o projeto e a configurao de lanamento 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 lanamento configurao ativas.
Note que a configurao lanamento ativa a que foi seleciona mais recentemente no gerente
de configurao Run. Ela no corresponde, necessariamente, aplicao selecionada no painel
Eclipse Navigation (se houver).
Para definir ou alterar a configurao de lanamento ativa, use gerente de configurao Run,
que voc pode acessar atravs Run> Run Open Dialog ou Run> Open Debug Dialog.

Executando ou depurando aplicaes:


Inicie o emulador, se ele j no estiver sendo executado;
Compile o projeto, se houve mudanas desde a ltima construo e instale a aplicao no
emulador;
Run inicia a aplicao;
Debug inicia a aplicao no modo "Espera pelo depurador"e, em seguida, abre a perspectiva
do depurador, atribuindo o depurador Eclipse Java na aplicao.

Desenvolvendo aplicaes Android com outras IDEs e ferramentas


A maneira recomendada de se desenvolver uma aplicao Android usar o Eclipse com o
Android plugins. Este plugin fornece edio, construo, depurao 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 Difuso de Tecnologia e Conhecimento

Brasil/DF

3.5 Criao de um projeto Android


O Android SDK inclui activityCreator, um programa que gera um nmero mnimo de arquivos
para seu projeto. Voc pode usar o programa para criar um projeto para Android como um novo
cdigo ou de cdigo existente, como as amostras de aplicaes includas 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 diretrio /tools do SDK e criar um novo diretrio para
os arquivos dos projetos. Se voc est criando um projeto de cdigo existente, mude para
a pasta raiz de sua aplicao.
2. Execute activityCreator. No comando, voc deve especificar o nome da classe completamente qualificado como um argumento. Se voc est criando um projeto para o novo
cdigo, a classe representa o nome da sub classe que o script ir criar. Se voc est criando um projeto de cdigo existente, voc deve especificar o nome de uma classe Activity
do pacote. Comando opes para o script incluem:
2.1 out <pasta> que define a sada do diretrio. Por padro, o diretrio de sada o atual.
Se voc criou um novo diretrio para o projeto arquivos, use esta opo para apontar para
ele.
2.2 ide intellij, que gera o projeto de arquivos IntelliJ IDEA no projeto recm 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 diretrios (mas no ir sobrescrever
os existentes):
AndroidManifest.xml: A aplicao de arquiv xml, sincronizada com a classe Activity especfica para o projeto.
Build.xml: Um arquivo Ant que voc pode usar para criar e empacote a aplicao.
src/your/package/name/ActivityName.java A classe Activity que voc especificou na entrada.
Sua_activity.iml, sua_activity.ipr, sua_activity.iws [apenas nos flags -ide intelliJ ] arquivos de
projeto intelliJ .
res/ O diretrio que possui os recursos.
30

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

src/ O diretrio fonte.


bin/ O diretrio de sada 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 soluo e a pasta tools/.
Alm disso, voc deve evitar mover o diretrio do SDK, uma vez que mov-lo ir quebrar o link
dos scripts construdos.

Construindo uma aplicao Android


Use o arquivo Ant build.xml gerado pelo activityCreator para construir sua aplicao.
1. Se voc no tem isso, voc pode obter o Ant da homepage Apache Ant. Instale-o e
tenha certeza de que ele est no PATH executvel.
2. Antes de chamar Ant, voc precisa declarar a varivel de ambiente JAVA_HOME para
especificar o caminho onde o JDK est instalado.
Nota: Quando instalar o JDK no Windows, o padro instalar "Arquivos de Programa".
Nesse local podem ocorrer erros. O mais adequado seria instalar JDK em um diretrio
como por exemplo: c:\Java \jdk1.6.0_02.
3. Se voc ainda no o fez, siga as instrues para a criao de um novo projeto como fora
descrito anteriormente.
4. Voc pode, agora, executar o arquivo de construo 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 verso
mais recente da aplicao para voc produzir.

Executando uma aplicao Android


Para executar uma aplicao compilada, voc ir fazer o upload do arquivo .apk do diretrio
/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 no ter que executar o aplicativo
quando voc reinstal-lo sobre o emulador, pressione a tecla Home para navegar para
fora da aplicao).
3. Execute adb install meuprojeto/bin/ <appname>.apk para carregar o executvel. 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 Difuso de Tecnologia e Conhecimento

Brasil/DF

4. No emulador, abra a lista de aplicaes disponveis e role para baixo para selecionar e
iniciar a sua aplicao.

Nota: Quando voc instalar uma Activity pela primeira vez, voc pode ter que reiniciar o
emulador antes que ele aparea na aplicao de lanamento ou outras aplicaes podem chamlo. Isso ocorre porque o gestor de pacotes, normalmente, examina completamente apenas os xml
na inicializao do emulador.

Adicionando um Depurador em sua aplicao


Esta seo descreve como exibir um depurador de informaes na tela, assim como ligar o
seu IDE aplicaes de depurao em execuo no emulador.
Um depurador naturalmente adicionado quando se usa o Eclipse plugin, mas voc pode
configurar outras IDEs para abrirem uma porta que receba informaes de depurao.
1. Inicie o Dalvik Debug Monitor Server (DDMS) tool, que funciona como um servio de
abertura de porta entre o seu IDE e o emulador;
2. Defina configuraes opcionais de depurao no seu emulador, tais como bloquear o
incio de aplicaes para uma atividade at que um depurador seja adicionado. Note que
muitas destas opes de depurao podem ser utilizadas sem o DDMS, como a exibio
de uso da CPU ou taxa de atualizao da tela sobre o emulador;
3. Configure seu IDE para anexar porta 8700 para depurao. Ns inclumos informaes
sobre como configurar o Eclipse para depurar o seu projeto.

Configurando IDE para adicionar porta de depurao


DDMS ir atribuir uma porta de depurao especfica para cada mquina virtual que se encontra no emulador. Deve-se tambm anexar o IDE para esta porta, ou voc pode usar uma porta
padro 8700 para se conectar a qualquer aplicao atualmente selecionada na lista de mquinas
virtuais encontradas.
Seu IDE deve anexar-se sua aplicao em execuo no emulador, mostrando-lhe as threads
e permitindo suspend-las, verificar seu estado ou definir sua interrupo. Se voc selecionou
"Espere o depurador"no painel de configuraes de desenvolvimento, a aplicao ser executada quando o Eclipse conectar, assim voc ter que definir o ponto de interrupo que voc
deseja antes de conectar.
Alterar quer seja o pedido depurao ou a opo "Espere o depurador"faz com que o sistema mate o aplicativo selecionado se ele estiver sendo executado no momento. Voc pode
usar isto para matar suas aplicaes se elas estiverem em um estado indesejado, basta ir em
configuraes e (des)marcar a caixa.

32

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

3.6 Dicas de depurao


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 informaes teis na tela do emulador


O dispositivo pode exibir informaes teis como uso da CPU ou destaques em torno de reas
redesenhadas. Ative ou desative esses recursos fora da janela de configuraes de desenvolvimento.

Obter informaes de estado do sistema pelo emulador (dumpstate)


Voc pode acessar informaes dumpstate da ferramenta Dalvik Debug Monitor Service.
Veja dumpsys e dumpstate na pgina do tema adb.

Obter informaes de estado da aplicao pelo emulador (dumpsys)


Voc pode acessar informaes dumpsys da ferramenta Dalvik Debug Monitor Service. Veja
dumpsys e dumpstate na pgina do tema adb.

Obter informaes de conectividade sem fio


Voc pode obter informaes sobre a conectividade sem fio usando a ferramenta Dalvik Debug Monitor Service. A partir do menu Device, selecione "Dump radio state".

Logando dados de rastro


Voc pode registrar mtodo de chamada e outros dados de rastro em uma atividade chamando android.os.Debug.startMethodTracing(). Veja executando o Traceview Debugging Program para mais detalhes.

Logando Dados de Rdio


Por padro, as informaes de rdio no esto conectadas ao sistema (tratam-se de muitos
dados). No entanto, voc pode ativar o log de dados de rdio usando os seguintes comandos:

ADB Shell
Logcat - b rdio
33

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

Executar adb
Android vem com uma ferramenta chamada adb que oferece vrias 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 depurao


Android prov classes auxiliares de depurao como util.Log e Debug para sua convenincia.

3.7 Construir e instalar uma aplicao Android


Android requer a contruo de ferramentas personalizadas, para que se possa desenvolver
adequadamente os arquivos de recursos e outras partes de uma aplicao Android. Devido a
isso, preciso ter um ambiente especializado para construir sua aplicao.
Os passos para uma compilao personalizada incluem a compilao dos arquivos XML e de
outros arquivos de recursos, alm da criao de um formato de sada adequado. Uma aplicao
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, no suporta o desenvolvimento de aplicaes de terceiros em cdigo nativo C / C + +.
A maneira recomendada de se desenvolver uma aplicao Android usar o Eclipse com o
Android plugin, que fornece suporte para a construo, a execuo e depurao de aplicaes
Android.
Se voc tiver uma outra IDE, o ambiente Android fornecer ferramentas para construir e depurar aplicaes Android, mas que no so to integradas quanto IDE Eclipse.

3.8 Remoo de um aplicativo Android


Para remover uma aplicao 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 Difuso de Tecnologia e Conhecimento

Brasil/DF

3.9 Dicas para Eclipse


Executando expresses Java arbitrrias no Eclipse
Voc pode executar cdigo arbitrrio quando pausado em um breakpoint no Eclipse. Por
exemplo, quando em uma funo com um argumento String chamado de "zip", voc pode obter
informaes sobre os pacotes e chamar mtodos de classes. Voc tambm pode invocar mtodos estticos arbitrrios: por exemplo, entrando com "android.os.Debug.startMethodTracing()"ir
iniciar dmTrace.
Abra um cdigo em execuo numa janela, selecione Window> Show View> Display no
menu principal para abrir a janela de exibio, um simples editor de texto. Digite sua expresso,
realce o texto e clique no cone J (ou CTRL + SHIFT + D) para executar o seu cdigo. O cdigo
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 no funcionar se a thread estiver em Object.wait().)
Se voc estiver em pausa um breakpoint, voc pode simplesmente destacar e executar um
pedao de cdigo-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 esto algumas amostra de entradas e respostas no Eclipse
usando a janela de exibio.
Entrada(input)
zip
zip.endsWith(".zip")
zip.endsWith(".jar")

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

Voc tambm pode executar cdigo arbitrrio quando no estiver em depurao, utilizando
uma pgina recados("scrapbook"). Verifique na documentao do Eclipse IDE.

Executando DDMS manualmente


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

35

Captulo 4

Anatomia de uma Aplicao Android


H quatro mdulos de uma aplicao Android:
Activity(atividade);
Intents Receiver(receptor pretendido)e Filter;
Service(servio);
Content Provider(provedor de contedo).
Nem toda aplicao precisa ter todos os quatro, mas a sua aplicao com certeza ser escrita com alguma combinao deles. Uma vez que voc tenha decidido que componentes voc
utilizar em sua aplicao, dever inclu-los em um arquivo chamado AndroidManifest.xml. Este
um arquivo XML onde voc declarar os componentes da sua aplicao e quais so as suas
capacidades e necessidades.

4.1 Activity
Ativities so as mais comuns dos quatro mdulos Android. Uma Activity normalmente uma
nica tela em sua aplicao. Cada Activity implementada como uma nica classe que estende a classe base Activity. Sua classe vai exibir uma interface de usurio composta de Views
e eventos a serem respondidos, sendo que a maioria das aplicaes consistem de mltiplas 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 configuraes. Cada uma
destas telas seriam implementadas como uma Activity. A mudana para uma outra tela ser realizada por um incio de uma nova Activity. Em alguns casos, uma Activity pode retornar um valor
para a Activity anterior. Por exemplo, uma Activity que permite ao usurio escolher uma foto que
seria retornada pelo mtodo chamador.
Quando uma nova tela abre, a anterior pausada e posta em uma pilha de histria. O usurio
pode navegar atravs das telas anteriormente abertas contidas na pilha de histria. Telas tambm
podem ser removidas da pilha de histria se necessrio. O Android retm pilha de histria para
cada aplicao lanada a partir da tela inicial.
36

CDTC

Centro de Difuso 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(inteno) descreve o que uma aplicao deseja fazer. As duas mais importantes partes da
estrutura de dados de Intent so as aes e os dados sobre o qual agir. Valores tpicos de ao
so MAIN (porta da frente da Activity), VIEW,PICK,EDIT, etc. Os dados so expressos como um
URI. Por exemplo, para visualizar informaes de contato de uma pessoa, voc deve criar uma
Intent com a ao 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 descrio de quais Intent uma Activity (ou Intent
Receiver) capaz de manusear. Uma Activity, que capaz de exibir informaes de contato de
uma pessoa, pode publicar uma IntentFilter que dir que ele sabe como lidar com a ao VIEW
quando aplicada a dados representando uma pessoa. Ativities publicam as suas IntentFilters no
arquivo AndroidManifest.xml.
Navegao de tela a tela realizada por Intents, sendo que para navegar para a frente uma
Activity precisa chamar startActivity (myIntent). O sistema ento olha para a Intent Filters em
todas as aplicaes 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 lanada. O processo
de resoluo de Intents acontece em tempo de execuo quando startActivity chamado, que
oferece dois benefcios principais:
Ativities podem reutilizar funcionalidade de outros componentes simplesmente fazendo uma solicitao na forma de uma Intent.
Activities podem ser substitudas, a qualquer momento, por uma nova Activity com
um equivalente IntentFilter.

4.3 Intent Receiver


Voc pode usar uma IntentReceiver, quando quiser o cdigo em sua aplicao execute em reao a um evento externo, por exemplo, quando o telefone toca, ou quando a rede de dados est
disponvel, ou quando meia noite. Intent receivers no exibem uma interface grfica, embora
possa utilizar a NotificationManager para alertar o usurio se algo interessante aconteceu.
Intent receivers so registrados em AndroidManifest.xml, mas voc tambm pode registalos com cdigo usando Context.registerReceiver(). Sua aplicao no precisa estar rodando
para que a respectiva Intent receiver seja chamada, j que o sistema ir iniciar a sua aplicao,
se necessrio, quando um Intent receiver acionado. Aplicaes podem tambm enviar suas
prprias trasmisses de Intent aos outros com Context.broadcastIntent().

4.4 Service
Um Service um cdigo de longa vida e funciona sem uma interface grfica. Um bom exemplo
disto uma mdia tocando msicas de um lista. Numa aplicao de media player, provavelmente

37

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

seriam uma ou mais Activities que permitiriam ao usurio escolher msicas e toc-las. No entanto, a msica reproduzida em si no deveria ser manuseada por uma Activity, pois o usurio
espera que a msica continue tocando mesmo aps navegar para uma nova tela.
Neste caso, o leitor de mdia em atividade pode iniciar um servio utilizando
Context.startService(), para executar em segundo plano a msica, sendo que o sistema ir manter
a reproduo da msica at que ela termine (Voc pode aprender mais sobre a prioridade dada
aos servios do sistema de leitura de uma aplicao Android em Android Application Lifecycle).
Note que voc pode conectar-se a um servio e inici-lo caso ainda no esteja executando com
o mtodo Context.bindService(). Quando conectado a um servio, voc pode comunicar-se com
ele atravs de uma interface exposta pelo servio da msica permitindo que voc possa pausar,
retroceder, etc.

4.5 Content Provider


Aplicaes 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 aplicao de dados seja compartilhada com outros aplicativos. A
Content Provider uma classe que implementa um conjunto de mtodos padro para permitir
que outras aplicaes armazenem e recuperem o tipo de dados que controlado pelo provedor
desse contedo.

38

Captulo 5

Ferramentas de Desenvolvimento e
Ciclo de Vida de uma Aplicao
5.1 Ferramentas de Desenvolvimento
O Android SDK inclui uma variedade de ferramentas personalizadas que podem ajud-lo a
desenvolver aplicaes mveis para plataforma Android. A mais importante delas a Android
Emulator e a Android Development Tools plugin para o Eclipse, mas a SDK tambm inclui
vrias outras ferramentas de depurao, empacotamento e instalao de suas aplicaes no
emulador.

Emulador Android
Um dispositivo mvel virtual que pode ser executado em seu computador. Voc pode usar o
emulador para desenhar, depurar e testar suas aplicaes em um ambiente Android de execuo
em tempo real.

Plugin de ferramentas de desenvolvimento Android para a IDE Eclipse


A ADT Plugin acrescenta poderosas extenses para a IDE Eclipse, facilitando criar e depurar
seus aplicativos Android. Isso porque esse plugin lhe permitir acessar as seguintes funcionalidades:
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 interrupo e visualizar
threads e informaes 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 aplicao Android;
Automatiza e simplifica o processo de construo da sua aplicao Android;
Fornece um editor de cdigo Android que ajudar voc a escrever um XML vlido para o
seu Android.

39

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

Dalvik Debug Monitor Service (ddms)


Integrada com Dalvik, a personalizada VM(mquina virtual) da plataforma Android, permitelhe gerir processos em um emulador ou dispositivo e auxilia na depurao. Voc pode us-la
para matar processos, selecionar um processo especfico para depurar, gerar rastro aos dados,
visualizar informaes, tirar fotos do emulador ou do dispositivo e muito mais.

Android Debug Bridge (adb)


A ferramenta Adb permite que voc instale sua aplicao(arquivos .apk) em um emulador
ou dispositivo e que acesse o emulador ou dispositivo a partir de uma linha de comando. Voc
tambm pode us-la para ligar o depurador padro um cdigo de aplicao, rodando em um
emulador ou dispositivo Android.

Android Asset Packaging Tool (aapt)


A ferramenta aapt permite que voc crie arquivo .apk contendo os binrios de recursos de
aplicaes Android.

Android Interface Description Language (aidl)


Permite-lhe gerar cdigo para uma interface de interprocesso, como um servio que voc
possa utilizar.

Sqlite3
Includo como uma convenincia, esta ferramenta permite-lhe acessar dados de arquivos SQLite criados e utilizados por aplicaes Android.

Traceview
Esta ferramenta produz anlise com visualizao grfica dos rastros de dados registrados que
voc pode gerar a partir de sua aplicao Android.

Mksdcard
Ajuda voc a criar um disco imagem que voc pode usar com o emulador, para simular a
presena de um carto externo de armazenamento (como um carto 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 aplicaes Android.
Se voc estiver desenvolvendo no Eclipse com o ADT plugin, voc no precisar usar esse script.

40

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

5.2 Ciclo de vida de uma aplicao Android


Na maioria dos casos, as aplicaes Android rodam em seu prprio processo Linux. Este
processo criado para a aplicao quando alguns de seus cdigos precisarem ser executados e,
ainda, continuarem funcionando at que eles j no sejam necessrios e que o sistema precise
de memria para uso em outros aplicativos.
Uma caracterstica importante e no to usual de Android que o tempo de vida de uma
aplicao no diretamente controlado pela prpria aplicao. Ao invs disso, ele determinado
pelo sistema, atravs de uma combinao das partes da aplicao que o sistema sabe que est
funcionando, de como essas coisas so importantes para o utilizador e de quanta memria global
encontra-se disponvel no sistema.
importante que desenvolvedores de aplicao entendam como diferentes componentes da
aplicao (em especial Ativity, Service, e IntentReceiver) causam impacto sobre o tempo de vida
no processo de uma aplicao. No utilizar estes componentes corretamente pode fazer com que
o sistema mate a aplicao enquanto ela estiver fazendo algo importante.
Um exemplo comum de um ciclo de vida de um processo o IntentReceiver que inicia a thread(tarefa) quando recebe uma Intent em seu mtodo onReceiveIntent() e, em seguida, retorna
da funo. Uma vez retornado, o sistema considera que IntentReceiver deixou de estar ativo e,
por conseguinte, hospedar o processo no mais necessrio (a menos que outros componentes
da aplicao estejam ativos). Assim, ele pode matar o processo a qualquer momento para recuperar memria, encerrando a thread que est sendo executado na mesma. A soluo para este
problema iniciar um servio 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 memria, o Android
coloca-os em uma "hierarquia de importncia", baseada nos componentes em execuo e no
estado desses componentes. Estas so as ordens de importncia:
1. Um processo, em primeiro plano, mantm uma Activity na parte superior da tela em que
o usurio est interagindo (seu mtodo onResume() foi chamado) ou um IntentReceiver
que est sendo executado no momento (o seu mtodo onReceiveIntent() est executando).
Haver apenas alguns desses processos no sistema e eles s sero mortos como um ltimo recurso, caso a memria esteja to baixa que nem mesmo esses processos possam
continuar a funcionar. Geralmente, neste ponto o dispositivo atingiu um estado de paginao da memria, ento essa ao de matar o processo necessria de modo a manter a
interface do usurio respondendo.
2. Um processo visvel tem uma Activity que visvel para o usurio na tela, mas no no
primeiro plano(seu mtodo onPause() foi chamado). Isto pode ocorrer, por exemplo, se a
atividade de primeiro plano for exibida com a aparncia de dilogo que permite que a Activity
anterior seja vista por trs dela. Tal processo considerado extremamente importante e no
ser morto a menos que isso seja necessrio para que todos os processos de primeiro plano
continuem sendo executados.
3. Um processo de servio aquele que mantm um Service que tenha sido iniciado com
o mtodo startService(). Embora estes processos no sejam diretamente visveis para o
41

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

usurio, eles esto geralmente fazendo coisas que importam para o usurio (como mp3
sendo tocadas em segundo plano, upload e download de dados pela rede), ento o sistema
ir sempre manter esses processos em execuo, a menos que no haja bastante Memria
para manter todos os processos visveis e de primeiro plano.
4. Um processo de segundo plano aquele que tem uma Activity que no est visvel para
o usurio (seu mtodo onStop() foi chamado). Estes processos no tm impacto direto sobre a experincia do usurio. O sistema pode matar esses processos a qualquer momento
para recuperar memria de um dos trs tipos de processos anteriores. Normalmente, existem muitos destes processos executando, ento eles so mantidos em uma lista LRU para
garantir que o processo mais recentemente visto pelo usurio seja o ltimo a ser morto
quando est baixa a memria.
5. Um processo vazio aquele que no possui qualquer componente de aplicao activo. A
nica razo para manter tal processo t-lo em cache(escondido), para melhorar o tempo
de inicializao na prxima vez que um componente da aplicao precisar ser executado.
Sendo assim, o sistema ir matar muitas vezes estes processos, a fim de manter o equilbrio
geral dos recursos do sistema.

Ao decidir a forma de classificar um processo, o sistema escolhe o nvel mais importante de


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

5.3 Filosofia para Design de aplicaes Android


O processo de aprendizagem de como construir aplicaes para uma nova API bastante
semelhante, ainda que as prprias plataformas sejam diferentes. Geralmente, h duas fases: Na
primeira, voc aprende como usar as APIs para fazer o que voc quiser que elas faam, mais
tarde, voc aprende as nuanas da plataforma. Em outras palavras, primeiro mostrado como
voc pode construir aplicaes, depois como voc deve construi-las.
Nessa segunda fase de aprendizagem do caminho certo para construir aplicaes, pode-se
levar muito tempo e, freqentemente, significa cometer erros e aprender com eles. Bom, isso no
um processo muito eficiente, por isso esta pgina e os links abaixo destinam-se a dar-lhe uma
pequena ajuda.
Saiba que aplicaes bem sucedidas iro oferecer uma excelente experincia ao usurio final. Enquanto a equipe Android criou um ncleo de sistema slido, a maior parte da experincia
do usurio ser proveniente da interao do prprio usurios com suas aplicaes.
Uma aplicao que proporciona uma excelente experincia para o usurio tem trs caractersticas fundamentais: rpida, interativa e sem descontinuidades. Naturalmente, cada plataforma
desde o incio da computao j tem, provavelmente, essas mesmas trs qualidades em algum
momento. No entanto, cada plataforma as alcana de forma diferente, sendo que as informaes
abaixo explicam como seus aplicativos podem alcan-las em Android.

42

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

Rapidez
Uma aplicao Android deve ser rpida ou talvez seja mais correto dizer que ela deve ser eficiente. H uma tendncia no mundo da computao estes dias para supor que a Lei de Moore ir
resolver todos os nossos problemas eventualmente. Quando se trata de aplicaes embutidas,
no entanto, a Lei de Moore um pouco mais complicada.
A lei de Moore realmente no se aplica aos dispositivos mveis da mesma forma que as aplicaes para desktop e servidor. Ela realmente uma lei sobre transstor de densidade. Ou seja,
diz-se que voc tambm pode compactar mais circuitos em um determinado tamanho de chips
com o passar do tempo. Para aplicaes desktop e servidor, isto significa que voc pode empacotar mais "velocidade"em um chip de aproximadamente o mesmo tamanho, o que resultou no
aumento substancial do desempenho.
Para aplicaes embutidas, como telefones celulares, no entanto, a lei de Moore normalmente utilizada para fazer chips menores. Ou seja, a tendncia usar o aumento da densidade
para fazer o mesmo chip menor e consumindo menos energia, a fim de tornar telefones pequenos
e alongar a durao das baterias. Como resultado, dispositivos embutidos como telefones esto
aumentando em velocidade muito mais lenta do que sistemas de computador.
Por isso, to importante escrever cdigos cada vez mais eficientes: no se pode presumir
que telefones tero a mesma velocidade de desenvolvimento que servidores e desktops, mas de
uma maneira geral, escrever cdigos eficientes significa manter a alocao de memria em um
valor mnimo, evitando certas linguagens de programao e expresses que possam prejudicar
o desempenho. Em termos de orientao a objetos, a maior parte deste trabalho efetuado no
nvel dos mtodos.

Interativo
possvel escrever um cdigo de desempenho extremamente rpido e eficaz, porm ele
ter um terrvel defeito: a falta de interao com o usurio de forma satisfatria. Estes tipos de
aplicaes no so suficientemente interativas. Porm, as que so demasiadamente interativas
costumam ser lentas, pesadas, podendo congelar por perodos significativos ou demorar muito
para processar a entrada. Em termos Android, aplicaes que no so suficientemente interativas iro freqentemente fazer com que o sistema emita a temida mensagem "Not Responding
Application"(ANR).
Geralmente, isso acontece se sua aplicao no responder s informaes fornecidas pelo
usurio. Por exemplo, se a sua aplicao bloquear algumas operaes de entrada e sada
(freqentemente uma rede acesso), ento a aplicao principal (main thread) no ser capaz
de processar eventos recebidos do usurio. Depois de um tempo, o sistema ir concluir que a
sua aplicao est em espera e dar ao usurio a opo de mat-la.
Da mesma forma, se a sua aplicao gastar muito tempo construindo uma estrutura elaborada
na memria ou talvez computando os prximos passos em um jogo, ento, novamente o sistema
ir concluir que sua aplicao est em espera e dar ao usurio a opo de mat-la. sempre
importante para certificar-se de que estes clculos so eficientes utilizando as tcnicas acima,
mas mesmo os mais eficientes cdigos ainda levam tempo para serem executados.
43

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

Em ambos os casos, a correo geralmente para criar uma pequena thread que faa a maior
parte dos seus trabalhos. Isto mantm a main thread(que dirige o loop da interface com usurio)
executando e impede que o sistema conclua que seu programa congelou.

Sem descontinuidade
Mesmo que a sua aplicao seja rpida e interativa, ela ainda pode irritar os usurios. Um
exemplo comum um processo de fundo (como um Android Service ou IntentReceiver) que
aparece numa interface grfica em resposta a algum evento. Isto pode parecer inofensivo e desenvolvedores, freqentemente, assumem que isto correto, porque eles passam a maior parte
do seu tempo testando e utilizando a sua prpria aplicao.
No entanto, o modelo de aplicao Android construdo explicitamente para permitir que os
usurios alternem fluentemente entre aplicaes. Isto significa que quando um processo, em
segundo plano, acende uma UI, o usurio poder ir para outra parte do sistema, fazendo outras
coisas tais como atender uma ligao. Imagine se o servio SMS abrir uma caixa de dilogo cada
vez que uma mensagem de texto entrar. Isso iria irritar os usurios e por isso que o padro
Android utilizar notificaes para tais eventos, dando mais controle ao usurio.
Esse apenas um exemplo, h muitos mais. Por exemplo, se uma Ativity no implementar
corretamente o onPause() e outros mtodos, isso vai resultar em perda de dados. Ou, se sua
aplicao expor dados destinados a serem utilizados por outras aplicaes, voc deve faz-lo
atravs de um ContentProvider, utilizando um banco de dados, por exemplo.
O que esses exemplos tm em comum que eles envolvem coperao entre o sistema e
outras aplicaes. O sistema Android foi concebido para tratar aplicaes como uma espcie de
federao de componentes vagamente acoplados, em vez de pedaos de cdigo acoplados. Isto
permite-lhe como o desenvolvedorvisualizar todo o sistema apenas como uma federao ainda
maior desses componentes. Isso permite-lhe integrar-se limpa e harmonicamente com outros
aplicativos, por isso voc deve projetar seu prprio cdigo para retornar o favor.

5.4 Glossrio Android


.apk extenso
Essa a extenso para um pacote de arquivos Android, que geralmente contm todos os
arquivos relacionados a uma nica aplicao Android. O prprio arquivo compactado uma
coleo de um arquivo AndroidManifest.xml, cdigo de aplicao (arquivos .dex), arquivos de
recurso e outros arquivos. Um projeto compilado em um nico arquivo ".apk".

.dex extenso
Programas Android so compilados em arquivos .dex (Dalvik Executvel), que esto compactados em um nico arquivo .apk no dispositivo. Arquivos .dex podem ser criados por aplicaes
compiladas traduzidas automaticamente e escritas na linguagem de programao Java.

44

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

Action
Uma descrio de algo que uma Intent de envio ir realizar. Uma ao uma String de
valor atribudo 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 aplicao feita sob encomenda para vibrar o
telefone.

Activity
A nica tela de um aplicativo, com suporte cdigo Java, derivados da classe Activity.

adb
Android Debug Bridge, uma aplicao para depurador em linha de comando depurao
enviado juntamente com o SDK. Ele fornece ferramentas para navegar o dispositivo, copia ferramentas no dispositivo e encaminha portas para depurao.

Application
Uma coleo de uma ou mais atividades, servios, escutas e Intent receivers. Uma aplicao
tem uma nica manifestao e compilada em um nico arquivo .apk no dispositivo.

Content Provider
A classe construda sobre ContentProvider que manipula os contedos de consulta a strings
de um formato especfico para retornar dados em um formato tambm especfico.

Content URI
Um tipo de URI.

Dalvik
O nome da mquina virtual Android. O Dalvik VM apenas um interpretador que executa
arquivos no formato Dalvik Executvel (.dex), um formato que otimizado para o armazenamento
eficiente e mapeamento de memria em execuo. A mquina 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 compatvel com os
sistemas operacionais, que se baseiam sobre a funcionalidade subjacente (tais como o encadeamento e baixo nvel memria gesto). O Dalvik ncleo classe biblioteca destina - se a fornecer
uma base para o desenvolvimento familiarizado com os utilizados para programao com Java
Standard Edition, mas orientado especificamente para as necessidades de um pequeno dispositivo mvel.

45

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

DDMS
Dalvik Debug Monitor Service, uma GUI para depurao de aplicao que vem junto com o
SDK. Fornece tela de captura, log dump e etcs. Veja usando o Dalvik Debug Monitor Server para
obter mais informaes sobre este programa.

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

Intent
Uma classe Intent, que contm vrios campos descrevendo o que um chamador deveria fazer.
O chamador envia esta inteno para um "resolvedor de intenes"Android que olha atravs de
filtros a inteno de todas as aplicaes para encontrar a atividade(activity) mais adequada para
lidar com esta inteno(intent). Os campos das Intent incluem a ao desejada, uma categoria,
uma seqncia de dados, o tipo MIME dos dados, um tratamento classe e outras restries.

Intent Filter
Atividades e intenes receptores incluem um ou mais filtros em seus manifestos para descrever que tipo de intenes ou mensagens que eles podem manter ou desejam receber. Uma
inteno filtro enumera um conjunto de requisitos, tais como tipo de dados, a ao solicitada, e
URI formato, que as intenes ou mensagens devem cumprir. Para Atividades, android pesquisa
com a mais estreita correspondncia vlida entre as intenes e as atividades filtro. Para mensagens, android vai encaminhar uma mensagem para todos os receptores com correspondncia
inteno filtro.

Intent Receiver
Uma classe de aplicao 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, servios e outros itens que ela expe.

Nine-patch / 9-patch / Ninepatch image


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

46

CDTC

Centro de Difuso de Tecnologia e Conhecimento

Brasil/DF

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

Resource
Um XML de usurio fornecido, bitmap ou outro arquivo, entrou em um processo de contruo
do aplicativo, que mais tarde podem ser carregados a partir de cdigo. Andrid pode aceitar recursos de vrios tipos. Aplicao-definidos recursos devem ser armazenados no /res subpastas.

Service
Uma classe que executada em segundo plano para executar vrias aes persistentes,
como a reproduo de msica ou atividade de monitoramento de rede.

Theme
Um conjunto de propriedades (texto tamanho, a cor, e assim por diante) empacotados juntos
para definir diferentes configuraes default display. Andride fornece alguns temas padres,
enumerados no R.style (comeando com "Theme_").

URIs
Andride usa strings URI tanto para solicitar dados (por exemplo, uma lista de contatos)
quanto para requerer aes (por exemplo, abrir uma pgina da Web em um navegador). Ambas
so string vlidas URI, mas tm valores diferentes. Todos os pedidos de dados devem comear
com a string "content:/ /". Strings de Ao so vlidas URIs que podem ser tratadas adequadamente por aplicaes no dispositivo. Por exemplo, uma URI comeando com "http:// "ser
manuseada pelo navegador.

5.5 Consideraes
O material foi editado e/ou traduzido por Edson de Hungria Junior,(hungria@cdtc.org.br)
Equipe CDTC. O contedo desse documento, incluindo imagens que foram editadas seguindo o
licena Creative Commons License 2.5, tendo como base a descrio da Open Handset Alliance
responsvel pelo desenvolvimento do Android respeitando os todos direitos dos autores devidos.

5.6 Stios de Referncia


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

47

Você também pode gostar