Beruflich Dokumente
Kultur Dokumente
Novatec
Primeira edio
captulo 1
16
17
Isso, obviamente, se deve a vrios fatores, como a evidente qualidade do sistema e sua arquitetura aberta, que possibilitou seu uso em diversos aparelhos
(se voc no sabe, o iOS, sistema operacional do iPhone e do iPad, no pode
ser usado em outros aparelhos que no sejam os produzidos pela Apple).
Outro fato que tambm levou popularizao do sistema foi a escolha
da linguagem Java para o desenvolvimento dos aplicativos que executam
no Android. Afinal de contas, Java uma das linguagens de programao
mais populares do mundo j h algum tempo, com uma base enorme de
desenvolvedores experientes. Em junho de 2013, o ndice Tiobe apontava
Java como a segunda linguagem de programao mais usada no mundo
(www.tiobe.com/index.php/content/paperinfo/tpci/index.html).
Os desenvolvedores Java poderiam, ento, facilmente comear a desenvolver aplicativos para Android. E isso realmente aconteceu: especialistas estimam que, em janeiro de 2013, mais de 800 mil aplicativos para
Android estavam disponveis na Google Play Store e que em breve seria
alcanada a marca de 1 milho de programas, de acordo com as fontes:
www.rssphone.com/google-play-store-800000-apps-and-overtake-apple-appstore/ e
readwrite.com/2013/01/08/google-play-to-hit-1-million-apps-before-apple-app-store.
Quer mais uma prova do domnio do Android? O IDC informa que, no
primeiro quadrimestre de 2013, o Android possua 75% do mercado (seu
market share) de sistemas operacionais mveis, como pode ser observado
no grfico da figura 1.1 (criado de acordo com os dados disponibilizados
pelo IDC em www.idc.com/getdoc.jsp?containerId=prUS24108913).
O mercado de desenvolvimento de aplicativos mveis est literalmente
pegando fogo. hora de arregaar as mangas e aproveitar o momento,
deixando sua marca neste novo e promissor segmento.
Qual seria a melhor forma de comear se no pelo sistema lder do mercado? E o melhor: voc pode comear a criar seus aplicativos Android
agora: o kit de desenvolvimento bsico, sua caixa de ferramentas para
desenvolver os programas, pode ser instalado e usado livremente em
qualquer computador com os principais sistemas operacionais: Windows,
Linux ou Mac OS X!
Ento? Vamos nessa?
18
AS VERSES DO ANDROID
O sistema operacional do rob verde evoluiu bastante desde sua
primeira verso (1.0), lanada oficialmente em 2008. No momento da
elaborao deste livro, a verso mais recente do Android a 4.3, codinome Jelly Bean que conta com muitos recursos e avanos grficos
que no existiam inicialmente. A verso 4.4, chamada KitKat, tambm
est prestes a ser lanada.
Uma curiosidade: as verses do Android, desde a 1.5, passaram a receber codinomes sempre um tipo de doce ou sobremesa , seguindo
a ordem alfabtica. A verso 1.5 era a Cupcake; a 1.6 foi chamada de
Donut, e assim sucessivamente. Neste livro, usaremos a verso 4.3, a
"Jelly Bean" jelly bean como os norte-americanos chamam as nossas
"gominhas" ou "jujubas".
Em outubro de 2013 chega a verso 4.4, com a sequncia alfabtica na
letra K, e adequadamente batizada de KitKat (o famoso chocolatinho
com wafer em barras da Nestl).
19
20
21
Ao clicar, voc ser levado a uma pgina onde escolher a verso do JDK
especfica para o seu sistema operacional. Voc tambm dever aceitar os
termos da Oracle para poder fazer o download (Figura 1.3).
22
Escolha a verso adequada ao seu sistema operacional. Para alguns sistemas operacionais (como o Windows), existe a opo de baixar a verso 32
bits ou a 64 bits. Se voc sabe que seu Windows executa em 64 bits, baixe
a verso correspondente do JDK. Na dvida, clique na verso de 32 bits.
Aps a concluso do download, clique duas vezes sobre o arquivo baixado para iniciar a instalao. Ser apresentada uma tela semelhante
da figura 1.4.
23
Voc entrar no melhor local para encontrar informaes sobre o desenvolvimento em Android: o site oficial de desenvolvedores Android do
Google! Alm do SDK, aqui voc encontra notcias, tutoriais e a documentao completa do SDK. Recomendo que voc adicione este site aos
seus favoritos e faa dele um ponto de parada obrigatria na rede!
Na parte inferior da tela, clique em Get the SDK (Obtenha o SDK), como
mostrado na figura 1.6.
24
25
26
Na janela que ser aberta, indique que o contedo dever ser extrado
para a pasta C:\Users\<seu-usuario>\Developer (em sistemas Windows se
voc usa Mac OS X ou Linux, ser, respectivamente, /Users/<seu-usuario>
ou /home/<seu-usuario>), como no exemplo da figura 1.10 (onde o usurio
em questo Anita), e clique sobre o boto Extrair.
27
Aps descompactar, voc encontrar dentro da nova pasta adt-bundle<sistema-operacional>-<data-da-verso> duas subpastas: sdk e eclipse. A pasta
sdk contm as bibliotecas e os utilitrios bsicos do Android SDK. A pasta
eclipse possui a verso do IDE Eclipse customizada para desenvolvimento
em Android, prontinha para ser usada.
Para executar o Eclipse ADT (Android Developer Tools), voc pode simplesmente clicar duas vezes sobre o cone do aplicativo Eclipse (Figura 1.11).
Como vamos us-lo bastante, recomendo a voc criar um atalho para ele
na sua rea de trabalho. Para fazer isso rapidamente, clique com o boto
direito do mouse sobre o arquivo eclipse.exe, segure e arraste para a rea
de trabalho. Ao soltar, selecione a opo Criar atalho aqui.
J abriu o Eclipse? Se ainda no, v em frente! Vamos encarar a fera.
28
Escolha um local de sua preferncia. Pode ser dentro da pasta Developer, que
foi criada anteriormente na sua pasta pessoal, ou pode ser em Documentos
voc decide. Se quiser, no precisa tambm cham-la necessariamente
de workspace pode ser simplesmente Projetos.
29
30
apenas uma tela de boas-vindas, com algumas dicas de como criar seu
primeiro projeto. Voc no precisa dela j tem este livro para isso! Basta
clicar no cone de X indicado na figura 1.14, para exibir a tela principal
do Eclipse.
31
Bem, j temos agora uma ideia da cara do Eclipse. Antes de criar nosso
primeiro projeto, vamos apenas configurar alguns aspectos dele para
facilitar nossa vida.
32
Se tem algo que o Eclipse oferece bastante mesmo so opes de configurao, como voc pode perceber pela figura 1.16. Nessa mesma figura,
voc vai ver uma opo que, ao ser marcada, facilita muito a vida do
desenvolvedor na incansvel busca por bugs!
33
General > Startup and shutdown > Workspaces: aqui voc pode mudar o
local em que o Eclipse guarda os projetos o workspace, lembra?
General > Appearance > Colors and Fonts: abrindo esta chave e depois,
direita, clicando duas vezes sobre Basic > Text font, voc pode mudar
a fonte base do editor de cdigo. Mas lembre-se: todo bom programador s usa fontes de largura fixa para o cdigo! Por isso, nada
de Arial ou Helvetica. Prefira Consolas, Menlo ou, na pior das hipteses,
Courier New...
Android: contm as configuraes especficas para desenvolvimento
em Android. Clicando sobre a chave principal (Android), existe
a opo de configurao do caminho para o SDK. Se por alguma
razo o Eclipse ADT no fez essa configurao automaticamente
para voc, possvel defini-la manualmente aqui.
Para poder testar o programa que vamos criar, precisaremos do emulador.
E, antes de us-lo, temos que configur-lo: qual verso do Android ele
executar? Qual dispositivo ele vai emular (na questo do tamanho e da
resoluo da tela, por exemplo)?
Fazemos essas configuraes em um dispositivo virtual do Android, um
AVD (Android Virtual Device).
34
Clicando no boto indicado, ser aberta uma janela que lista todos os
dispositivos virtuais j criados (sim, voc pode criar mais de um por
exemplo, quando precisar testar seu programa em verses diferentes do
Android), vista na figura 1.18.
35
(b) Device: aqui voc pode definir um modelo de aparelho, que servir
apenas como base para teste do tamanho da tela e da resoluo
usada. No se espante pelo fato de serem poucos os aparelhos
mostrados aqui trata-se apenas de uma referncia para um tipo de
tela. Neste exemplo, usamos o modelo Nexus One, principalmente
por trazer um tamanho de tela mdio (3.7 polegadas), semelhante
ao de muitos aparelhos existentes no mercado (que ficam entre 3.5
e 4 polegadas). Depois falaremos mais sobre como seus aplicativos
ficaro compatveis com aparelhos com tela e/ou resoluo diferente.
No se preocupe com isso no momento.
36
(c) Target: Escolha a verso mais recente disponvel: Android 4.2.2 API
Level 17, Android 4.3 API Level 18, ou posterior. No exemplo da
figura 1.19, escolhemos Android 4.3. Isso indica que o dispositivo
virtual criado executar na verso aqui especificada. Para poder
usar outra verso, voc precisa ter baixado a imagem da mesma
usando o aplicativo SDK Manager. Mas relaxe: voc pode testar o
seu aplicativo na verso mais recente (que sempre vem junto do pacote do Android SDK) e mesmo assim garantir que o seu aplicativo
funcione em verses anteriores. Tambm falaremos mais sobre isso
posteriormente.
(d) Keyboard: certifique-se de deixar ativada a opo Hardware keyboard
present. Com ela ativa, voc poder usar o teclado fsico do seu
computador para digitar texto no aplicativo, sem necessidade de
recorrer ao teclado virtual do aparelho.
(e) Emulation options: marque a opo Snapshot. Por meio dela, seu emulador ficar sempre congelado no estado em que foi usado pela
ltima vez (de maneira semelhante ao que acontece com aplicativos de virtualizao). Se voc no marc-lo, toda vez que iniciar o
emulador dever esperar o longo e tedioso boot do Android...
Dependendo do computador usado, pode dar tempo de fazer um
caf e at deix-lo esfriar antes de beber, o que irrita qualquer
programador...
Clicando no boto OK, seu novssimo AVD ser criado (Figura 1.20)!
praticamente um aparelho novinho para voc testar (sem, claro, possibilidade de fazer chamadas ou receber SMS de promoes da operadora
o que uma grande vantagem)!
Figura 1.20 Tela do AVD Manager com o novo dispositivo virtual criado.
37
38
39
(b) Project Name: o nome do projeto dentro do Eclipse. Geralmente, usamos o mesmo nome do aplicativo (Conversor). Voc vai perceber que
o Eclipse colocar aqui o mesmo nome informado em Application
Name.
(c) Package Name: o nome do pacote das classes Java do seu projeto.
Basicamente, um pacote em Java uma forma de categorizar corretamente as unidades bsicas de cdigo-fonte que voc escreve
(chamadas de classes). A conveno na definio de pacotes do
Java usar um domnio da internet em forma reversa, seguido de
um identificador para o programa. Voc pode ver no exemplo da
figura 1.23 que usei meu domnio particular (querino.net) invertido
(net.querino) seguido de um ponto e o nome do aplicativo em letras
minsculas (net.querino.conversor). Evite ao mximo usar valores
fictcios ou invlidos neste caso, pois este nome de pacote tambm
40
servir para identificar seu aplicativo na Google Play Store (se voc
public-lo l). Ento, se no possuir um domnio prprio, use o da
empresa onde trabalha, da sua faculdade ou o domnio de algum
que conhece (no deixe de, obviamente, pedir permisso para us-lo ao responsvel).
(d) Minimum Required SDK: mantenha selecionado API 8: Android 2.2 (Froyo).
Essa configurao especifica a verso mnima do Android necessria para que seu programa funcione. Marcando a 2.2, temos duas
consequncias: uma muito boa (seu aplicativo vai funcionar na
esmagadora maioria dos aparelhos existentes no mercado, j que
muitos deles ainda executam o Android 2.2 ou 2.3) e uma no to
boa assim (somente poderemos usar no aplicativo recursos que j
existiam desde essa verso, ou seja, nada feito para funes inovadoras acrescentadas nas verses mais recentes, como a Jelly Bean).
Mas isso no to ruim quanto parece, e vai por mim: se o seu
interesse alcanar a maior quantidade possvel de usurios, vale
a pena manter Android 2.2 nesta configurao!
(e) Target SDK: deixe marcada a verso sugerida (API 18: Android 4.3 (Jelly
Bean), no exemplo) ou uma verso mais recente (caso disponvel),
como a KitKat. Isso indica que, apesar de manter compatibilidade
com as verses >= 2.2 (voc um programador, ento com certeza
leu isso como maior ou igual a...), vamos testar nosso aplicativo
com a verso mais recente. Sem entrar em muitos detalhes, isso quer
dizer o seguinte: apesar de o seu aplicativo funcionar em verses
anteriores, vai rodar legalzinho e sem modo de compatibilidade
na verso mais recente, que equipa os smartphones Android mais
poderosos e novos do mercado. Bom isso, no mesmo?
(f) Compile With: tambm mantenha o recomendado pelo assistente de
criao do projeto (API 18: Android 4.3 (Jelly Bean)). Isso indica que o
seu aplicativo ser compilado com a verso mais atual do SDK, o
que uma boa ideia, pois traz melhorias e correes que as verses
anteriores no tm. Mas no entre em pnico: a retrocompatibilidade com verses mais antigas est garantida pela seleo feita em
Minimum Required SDK!
41
(g) Theme: Finalmente, o tema que ser usado pelo aplicativo. O tema
estabelece o visual padro do programa: suas cores, suas fontes,
seus tamanhos, o aspecto dos botes e demais controles etc. Deixe
Holo Light with Dark Action Bar marcado, pois o tema padro das novas
verses do Android.
42
Como indicado na figura 1.25, deixe a caixa Create Activity marcada, com a
opo Blank Activity selecionada logo abaixo. Clique em Next.
Finalmente, passamos ltima tela (Figura 1.26).
No vamos mudar os valores das opes, mas bom saber o que cada
um significa:
(a) Activity Name: o nome da classe em que ficar o cdigo responsvel
pelo controle do ciclo de vida da tela principal do seu programa,
assim como todos os eventos relacionados aos elementos na tela.
43
44
Agora voc pode clicar em Finish, aguardar uns segundinhos e ver como
um projeto Android recm-criado!
45
Na figura 1.27 voc pode ter uma ideia do aspecto do Eclipse com um
novo projeto Android.
46
47
48
49
Uma informao importantssima de cada widget seu Id (de identificador). Trata-se de um nome usado para identific-lo dentro do layout e
posteriormente acess-lo via programao. Todo widget colocado na tela
recebe um id automtico formado pelo seu tipo iniciado em letras minsculas (por exemplo, TextView comea com textView, e Button com button)
seguido por um nmero. Um jeito fcil de descobrir o Id de um widget
visualiz-lo no Outline: o seu Id aquele mostrado ao lado do seu cone.
Tambm possvel mudar o Id de um widget na tela. Isso particularmente
interessante quando temos mais de um widget do mesmo tipo na tela
(como dois ou mais TextView, por exemplo) e precisamos diferenci-los
depois no cdigo. Vamos fazer isso para os dois TextView que mostraro a
altura em metros e depois em ps.
50
51
52
Coloque o ltimo widget, um TextView Large que exibir a altura convertida em ps, logo abaixo do Button, alinhado esquerda deste. Preste
ateno nas linhas verdes, que mostram a relao do alinhamento com
outro widgets. Evite deixar este ltimo TextView alinhado em relao ao
TextView que exibe a altura em metros (txtMetros), para evitar surpresas no
posicionamento.
No deixe de definir o ID deste ltimo TextView para txtPes, clicando com
o boto direito sobre ele e selecionando Edit ID.
Pronto! Com isso, completamos a interface da tela do nosso programa. Alternando para a aba de exibio do cdigo XML do arquivo (activity_main.
xml), ele deve estar semelhante ao da listagem 1.1:
53
54
<SeekBar
android:id="@+id/seekBar1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView1"
android:layout_marginTop="16dp" />
<TextView
android:id="@+id/txtMetros"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/seekBar1"
android:layout_centerHorizontal="true"
android:layout_marginTop="22dp"
android:text="0,00 m"
android:textAppearance="?android:attr/textAppearanceMedium" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/seekBar1"
android:layout_below="@+id/txtMetros"
android:layout_marginTop="28dp"
android:text="Converter" />
<TextView
android:id="@+id/txtPes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button1"
android:layout_below="@+id/button1"
android:layout_marginTop="34dp"
android:text="0,00 p(s)"
android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>
55
Como nos diria o mestre chins do kung fu: agora, pequenos gafanhotos,
vocs esto prontos para entrar no caminho que os levar sabedoria
plena na arte da programao em Android escrever cdigo em Java!
56
Assim, a sua tela j nasce sabendo como pelo menos aparecer para o
usurio! Basta agora voc customiz-la.
Ns j comeamos a fazer isso na seo anterior, quando definimos o
layout da tela no arquivo activity_main.xml. Porm esse arquivo no contm
a alma da tela, ou seja, aquilo que ela pode fazer, mas somente o que ela
apresenta. Deveremos definir o que ela pode fazer diretamente na classe
que controla a tela, que se chama MainActivity.
Pois bem, vamos ver de perto essa tal Activity. Abra a sua MainActivity clicando duas vezes sobre o arquivo indicado na figura 1.33 (o Package Explorer
a aba localizada esquerda no Eclipse).
A pasta src onde ficam os arquivos com cdigo Java (as classes) do seu
projeto. Como possvel ter muitos arquivos (muitas classes) em um
mesmo projeto, estes so organizados em pacotes. No exemplo da Figura
1.33, o arquivo est dentro do pacote net.querino.conversor. No seu caso, o
pacote pode ser esse mesmo ou qualquer outro que voc definiu ao criar
o projeto (veja a seo 1.4.1).
Clique duas vezes sobre o arquivo MainActivity.java para abri-lo no editor
de cdigo do Eclipse (a parte central da janela). O contedo inicial do
arquivo deve ser semelhante ao da listagem 1.2.
57
58
59
Linhas 11 a 16: nestas linhas encontramos outro mtodo criado automaticamente com a classe, o onCreateOptionsMenu(). Trata-se tambm de
um evento, que disparado quando o usurio pressiona a tecla de
menu existente em certos modelos de aparelhos Android. Dentro dele,
podemos definir os botes do menu que ser apresentado na tela e
suas respectivas aes. Como no possuiremos menu em nosso app
Conversor, podemos tranquilamente excluir as linhas referentes a este
mtodo para deixar nosso cdigo mais enxuto.
Se voc deixasse este arquivo dessa forma e o executasse, j poderia ver a
tela principal do programa, mas nada funcionaria. Para dar vida ao aplicativo, precisamos escrever nosso prprio cdigo e fazer algumas mudanas.
Modifique seu arquivo MainActivity.java de acordo com a listagem 1.3.
Listagem 1.3: cdigo do arquivo MainActivity.java
1 package net.querino.conversor;
2 import java.util.Locale;
3 import
4 import
5 import
6 import
7 import
8 import
9 import
10 import
android.os.Bundle;
android.app.Activity;
android.view.View;
android.view.View.OnClickListener;
android.widget.Button;
android.widget.SeekBar;
android.widget.SeekBar.OnSeekBarChangeListener;
android.widget.TextView;
int alturaEmCentimetros = 0;
13 @Override
14 protected void onCreate(Bundle savedInstanceState) {
15 super.onCreate(savedInstanceState);
16 setContentView(R.layout.activity_main);
60
17
18
61
62
63
64
Linha 19: aqui fazemos tambm um findViewById() para obter uma referncia ao SeekBar, a barra deslizante que ser usada para a definio da
altura em metros. O SeekBar um widget diferente dos usados nas linhas
anteriores (TextView), mas o conceito o mesmo: a varivel local seekBar1
ser uma referncia a R.id.seekBar1, colocado na interface. Como todo
SeekBar uma View, o findViewById() tambm funciona para encontr-lo na
selva do layout XML. LEMBRE-SE: estamos criando estas referncias
no cdigo para os widgets da interface em XML porque precisaremos
acessar e modificar suas propriedades (como o Text dos TextView) como
objetos Java!
Linha 20: nesta linha, com o mtodo setMax(230), configuramos o valor
mximo possvel na escala do SeekBar. A escala de um SeekBar comea
em 0 e vai at o valor (inteiro) especificado aqui (no caso, 230). Por
que este valor de 230? Como a escala do SeekBar inteira, ele vai, na
realidade, medir a altura em centmetros. Apenas na hora de mostrar
o valor ao usurio que ser exibido em metros. Para mostrar o valor
em metros, basta pegar a posio atual do SeekBar e dividi-la por 100!
Obviamente, nosso pequeno app tem um bug para usurios gigantes:
quem medir mais de 2,30 metros ficar de fora...
65
66
67
68
69
Caso ocorra algum erro, confira seu cdigo com relao ao apresentado
nas listagens. Se mesmo sem erros o programa insistir em no aparecer,
clique novamente sobre o boto Run e aguarde pode ser que o Eclipse no
tenha conseguido instalar o aplicativo no emulador na primeira tentativa.
70