Você está na página 1de 20

FATEC - SP

FACULDADE DE TECNOLOGIA
DE SO PAULO
CAMPUS
Carapicuba
PROGRAMAO PARA DISPOSITIVOS MVEIS Aula !
Pr"#$%%"r& Glaub$r 'a R"c(a )al*(a+ar
E-,ail& pr"#$%%"r-laub$rbal*(a+ar./a(""0c",0br
3. Introduo ao Android
101 2 I3*r"'u45"
Android uma plataforma aberta voltada para dispositivos mveis desenvolvida pela
Google e atualmente mantida pela Open Handset Alliance (OHA). Todas as aplicaes
desenvolvidas para essa plataforma utiliam ! linguagem "ava# o $ue facilita muitos
programadores com con%ecimentos em "ava a desenvolver aplicaes para essa
plataforma.
Alm disso Android uma plataforma desenvolvida pela Google voltada para
dispositivos mveis. &m ' de novembro de ())*# a empresa tornou p+blica a primeira
plataforma Open ,ource de desenvolvimento para dispositivos moveis baseada na
plataforma "ava com sistema operacional -inu.# na $ual foi c%amada de Android. &ssa
plataforma mantida pela OHA (Open Handset Alliance)# um grupo formado por mais de
/) empresas as $uais se uniram para inovar e acelerar o desenvolvimento de aplicaes#
servios# traendo aos consumidores uma e.peri0ncia mais rica em termos de recursos#
menos dispendiosa em ternos financeiros para o mercado mvel. 1ode2se dier $ue a
plataforma Android a primeira plataforma mvel completa# aberta e livre.
Android um sistema operacional mvel $ue roda sobre um n+cleo -inu.. 3oi
inicialmente desenvolvido pela Google e atualmente mantido pela Open Handset Alliance
(OHA)4# mas a Google respons5vel pela ger0ncia de produto e engen%aria de processos.
O Android permite $ue as aplicaes se6am desenvolvidas em "ava# controlando o
dispositivo atravs de bibliotecas desenvolvidas pela Google. &m maio de ()4( o Google
pla7 possu8a mais de ')) mil aplicaes e 4' bil%es de do9nloads. &m 6ul%o de ())' a
Google ad$uiriu uma empresa c%amada Android :nc# de 1alo Alto# ;alifrnia# essa empresa
estava desenvolvendo uma plataforma para telefones mveis baseada em -inu. com o
ob6etivo de ser uma plataforma fle.8vel# aberta e de f5cil migra<o para os fabricantes. &m
deembro de ())= surgiram os primeiros rumores da Google estar entrando para o
mercado de telefones mveis. O primeiro telefone comercialmente dispon8vel a rodar o
Android foi o HT; >ream# lanado em (( de Outubro de ())?.
O Android ,>@ o Ait de desenvolvimento $ue disponibilia as ferramentas e A1:s
necess5rias para desenvolver aplicaes para a plataforma Android# utiliando a linguagem
"ava. Becursos C
Application frame9orAC proporciona a reutilia<o e substitui<o de componentes
>alviA virtual mac%ineC otimiada para dispositivos mveis
Dro9ser :ntegradoC baseado no 9ebAit engine
Gr5ficos OtimiadosC possui uma biblioteca (>E e F> baseada na especifica<o
OpenG- &, 4.) (acelera<o de %ard9are opcional)
,G-iteC para guardar dados estruturados
,uporte multim8diaC para 5udio# v8deo e formatos de imagem (H1&G/# H.(=/# H1F#
AA;# AHB# "1G# 1IG# G:3)
Telefonia G,H (dependente de %ard9are)
Dluetoot%# &>G&# FG# e Ji3i (dependente de %ard9are)
;Kmera# G1,# compasso# e acelerLmetro (dependente de %ard9are)
Bico ambiente de desenvolvimento # incluindo um emulador de dispositivo#
3erramentas de depura<o# memria# performance e um plugin para o &clipse (A>T)
1or$ue desenvolver para AndroidM As respostas s<oC
Android possui um simples e poderoso ,>@ $ue permite desenvolver $ual$uer tipo
de apli<o para uma plataforma mvelE
I<o precisa de licena# n<o precisa pagar e pode ter um desenvolvimento gratuito
pois todas as plataformas e :>&Ns s<o gratuitasE
O soft9are desenvolvido pode ser e.ecutado em $ual$uer plataforma como -inu.#
Hac O, e Jindo9sE
1ossui uma e.celente documenta<o e
1ossui uma e.celente comunidade para apoio ao desenvolvimento.
1062 I3%*ala45"
17 8a9a SD:& %ttpCOO999.oracle.comOtec%net9orAO6avaO6avaseOdo9nloadsO6dA*2do9nloads2
4??)(=).%tml
67 A3'r"i' SD: ; Eclip%$ ADT& %ttpCOOdeveloper.android.comOsdAOinde..%tml
!7 C"3#i-urar " Eclip%$ ADT&
a) descompacte o conte+do do ar$uivo Padt2bundle29indo9s2.?=.ip P em um
diretrio con%ecido# e.emplo P;CQandroidP.
b) abra o &clipse $ue veio neste pacoteE n<o precisa faer nen%uma atualia<o
apenas alterar o pat% do ,>@ do AndroidC menu Jindo9 O 1references... e altere o pat%
como mostrado a seguirC
<7 C"3#i-urar u, AVD&
a) procure pelo 8cone do AR> no &clipse e cli$ue nele
b) cli$ue em Ie9 e crie um novo AR> configurado como mostrado a seguirC
Ieste momento o AR> dever5 estar configurado e funcional# ve6aC
10!2 Cria3'" u, 3"9" pr"=$*"
a) Abra o &clipse e em seguidaC menu 3ile O Ie9 O Ot%er...
b) &scol%a Android O Android Application 1ro6ect
c) ;onfigure os seguintes nomes para o pro6etoC
17 Applica*i"3Na,$C o nome da aplica<oE $ue ir5 aparecer no dispositivoE
67 Pr"=$c*Na,$C o nome para o pro6eto do &clipseE e
!7 Pac>a-$Na,$C nome para o pacote na $ual as classes ser<o armaenadas.
d) ;li$ue em Ie.t.
e) Iesta pr.ima tela a op<o do P;reate Activit7P dever5 estar marcada pois assim o
&clipse ir5 construir uma atividade padr<o para a aplica<o.
f) ;li$ue em Ie.t.
g) Iesta pr.ima tela ser5 solicitado um 8cone. O &clipse oferece um 8cone padr<o
para $uatro tipos de telas (ldpi# mdpi# %dpi# .%dpi). Aceite e cli$ue em Ie.t.
%) Ia pr.ima tela aceite o la7out padr<o para a programa<o em Android.
i) 1or fim# o &clipse sugere um nome para o Activit7. Aceite este nome e cli$ue em
3inis%.
1rontoS um pro6eto Android foi criado no &clipseS
10<2 C",pr$$3'$3'" " pr"=$*" '" Eclip%$
17 Mai3Ac*i9i*/0=a9a& Tma Activit7 basicamente uma classe gerenciadora de T:
(:nterface com o usu5rio). Todo aplicativo android comea por uma Activit7. Activit7 est5
relacionado ! tarefa $ue uma aplica<o pode faer. &ssa tarefa pode ser# por e.emplo#
uma tela de boas2vindas# um mapa# uma lista de itens# uma tela de opes# enfim# algo $ue
possa ser apresent5vel para o usu5rio. Activit7 o componente c%ave do Android e para
%aver intera<o com a interface de usu5rio uma classe deve %erdar de uma activit7.
;iclo de vida de uma Activit7C
"3Cr$a*$?7& U um mtodo obrigatrio e invocado uma ve. Geralmente no mesmo
definido o Rie9 da Acitivit7. &m seguida invocado o on,tart.
"3S*ar*?7& U c%amada imediatamente aps a on;reate() V e tambm $uando uma
Activit7 $ue estava em bacAground volta a ter foco.
"3R$%u,$?7& ,empre invocada $uando a Activit7 recebe o foco novamente.
"3Pau%$?7& ,alva o estado da aplica<o# $uando o celular entra em modo de espera
por e.emplo.
"3S*"p?7& Guando a mesma est5 sendo encerrada e n<o fica mais visivel ao
usu5rio.
"3D$%*r"/?7& &ste mtodo literalmente finalia a aplica<o e pode ser invocado
tambm pelo sistema operacional# caso ele dese6e desalocar recursos.
"3R$%*ar*?7& Guando uma Activit7 volta depois de ficar fora temporariamente e
invoca o mtodo on,tart.
Ias Activit7s ocorrem as :ntent $ue referem2se !s intenes. ,<o determinados
comandos $ue podemos enviar ao ,istema Operacional Android para realiar alguma
a<o# com :ntents voc0 pode enviar ou recuperar dados.
67 ac*i9i*/@,ai30A,l& dentro do diretrio PresQla7outP e.iste um ar$uivo WH- $ue define o
la7out de uma tela no Android. Todas as configuraes visuais em Android s<o feitas em
ar$uivos WH-. As aes e.istentes neles s<o interpretadas e e.ecutadas em uma Activit7.
Guem fa a liga<o entre estes dois elementos o ar$uivo B.6ava. Assim# em Android tudo
WH- associado com "ava.
Tm la7out pode ser visto no &clipse pelas interfaces PGrap%ical -a7outP e modo .ml (
). Observemos o WH- gerado para este pro6etoC
As seguintes propriedades s<o definidas neste la7outC
R$la*i9$La/"u*& define o tipo de la7out utiliado para esta tela.
T$A*Vi$B& Jidget $ue o prprio &clipse coloca na tela para e.ibir um label do tipo
Te.tRie9. As propriedades PandroidCla7outP definem as informaes sobre o
posicionamento na tela da cai.a de te.to. A propriedade PandroidCte.tP recupera uma
vari5vel de ambiente denominada PXstringO%elloY9orldP 2 esta vari5vel definida no
ar$uivo PresOvaluesOstrings..mlP.
!7 Pall$*$& apresenta um con6unto de ferramentas visuais $ue podem ser utiliadas no
pro6eto de design do la7out. 1odem ser arrastadas para a tela do la7out e por tr5s um
conte+do WH- gerado. Assim t0m2seC
<7 DraBabl$& &stes diretrios armaenam somente imagens e cada um desses diretrios
utiliado de acordo com a resolu<o do Android $ue est5 sendo utiliado# ou se6a# de
acordo com o modelo de emulador $ue estiver sendo usando. 1or e.emplo# $uando voc0
usa uma resolu<o de /?).?)) no seu emulador# utiliado o diretrio Zdra9able2%dpi[
para buscar a imagem $ue vai representar o 8cone da sua aplica<o Android. ,e voc0 for
usar uma resolu<o F()./?) ($ue a resolu<o padr<o do emulador Android)# utiliado o
diretrio Zdra9able2mdpi[. ,e voc0 usar uma resolu<o (/)./))# utiliado o diretrio
Zdra9able2ldpi[.
C7 Valu$%& armaena valores est5ticos $ue podem ser utiliados por um ar$uivo Z.WH-[.
Iormalmente esses valores est5ticos devem ser armaenados no ar$uivo Zstrings..ml[.
Observe $ue nas propriedades do atributo Z%ello[# est5 atribu8do um valor a ela# $ue o
valor ZHello 9orldS[# isso $uer dier $ue l5 no ar$uivo WH-# no componente Te.tRie9# tem
uma propriedade c%ama ZandroidCte.t[# com o valor ZXstringO%ello[ # $ue e$uivale a na
verdade a string ZHello 9orldS[. 1ara ver a sua estrutura # cli$ue na guia Zstrings..ml[. O
cdigo desse ar$uivo igual ao $ue demonstra o cdigo abai.oC
"b%0& tro$ue a e.press<o PHello 9orldP para POla% HundoSSSP.
D7 A3'r"i'Ma3i#$%*0A,l& &sse ar$uivo o sistema nervoso de uma aplica<o Android. U
nele $ue ficam as definies referentes ! aplica<o. O ar$uivo e seus elementos possuem
as seguintes tarefasC
a7 :nformar o nome do pacote "ava da aplica<o. O nome de pacote funciona como um
identificador +nico para a aplica<o.
b7 >escrever os componentes da aplica<o 2 as atividades (activities)# servios
(services)# receptores de transmiss<o (broadcast receivers) e fornecedores de conte+do
(content providers) $ue faem parte da aplica<o. As classes $ue implementam cada um
dos componentes s<o indicadas e suas responsabilidades s<o publicadas (por e.emplo#
com $uais mensagens :ntent elas conseguem lidar). &stas declaraes permitem ao
sistema Android saber $uais componentes e.istem e sob $uais condies eles devem
ser iniciados.
c7 >eterminar $uais processos servir<o os componentes da aplica<o.
'7 >eclarar $uais permisses a aplica<o deve ter a fim de acessar partes protegidas da
A1: e interagir com outras aplicaes.
$7 >eclarar as permisses $ue outras aplicaes devem ter a fim de interagir com os
componentes da aplica<o atual.
#7 -istas as classes de instrumenta<o (:nstrumentation) $ue fornecem an5lise (profile) e
outras informaes en$uanto a aplica<o estiver sendo e.ecutada. &stas declaraes
est<o presentes no ar$uivo de manifesto somente en$uanto a aplica<o estiver sendo
desenvolvida e testadaE elas s<o removidas antes $ue a aplica<o se6a publicada.
-7 >eclarar o n8vel m8nimo da A1: do Android $ue a aplica<o e.ige.
(7 -istar as bibliotecas para as $uais a aplica<o fa refer0ncias.
Alm disso# toda Activit7 fica mapeada neste ar$uivo# ve6a a tag \activit7] a seguirC
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.olahmundo"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allo!ackup="true"
android:icon="@drawable/ic_launcher"
android:la"el="@strin/app_name"
android:t#eme="@st!le/"pp#heme" >
<activit$
android:name="com.example.olahmundo.$ain"cti%it!"
android:la"el="@strin/app_name" >
<intent-filter>
<action android:name="android.intent.action.$"&'" />
<categor$ android:name="android.intent.cateor!.(")'*+,-" />
</intent-filter>
</activit$>
</application>
</manifest>
E7 R0=a9a& a aplica<o Android nada mais do $ue a combina<o "ava ^ WH-. Agora#
como um cdigo "ava vai acessar um componente $ue est5 escrito em WH-M A%# essa a
finalidade do ar$uivo B.6ava ($ue fica dentro do pacote Zgen[ # situado no pro6eto)# ele
funciona como uma Zinterface[ entre o cdigo "ava e o cdigo WH-# logo# se eu $uiser
manipular em tempo de e.ecu<o um componente via "ava# ten%o $ue faer interface com
esse ar$uivo. &m breve vamos ver como.
O)S& O ar$uivo B.6ava n<o pode ser modificado manualmente. &le modificado
automaticamente de acordo com as mudanas feitas no pro6eto.
10C2 EA$cu*a3'" " pr"=$*"
a) ;li$ue no bot<o PBun as...P
b) &m seguida escol%a a op<o PAndroid ApplicationPC
Obs.C
4. &ste processo realmente demorado# pois o &clipse est5 a carregar todas as
bibliotecas para e.ecu<o de um AR>.
(. I<o dei.e aberto um ar$uivo de la7out pois o &clipse ir5 tentar e.ecutar este
ar$uivo. >ei.e aberto um acitivit7 por e.emplo.
c) Ieste momento um AR> (emulador) ser5 carregadoC
d) >urante o processo de compila<o o &lipse empacota todos os ar$uivos gerados
neste momento em um ar$uivo de e.tens<o PA1@P. >esta forma# ser5 gerado um
ar$uivo com o nome P1r6Ola%Hundo.apAP. &ste ar$uivo enviado ao emulador
assim $ue ele termina de ser carregado e o Android e.istente nele fica respons5vel
por instalar esta aplica<o e torn52la dispon8vel para e.ecu<o. Ocorrendo este
processo por completo e com sucesso a mensagem POla% mundoSSSP ser5 e.ibida na
tela do AR> como mostrado a seguirC
Ob%0&
4. Tma ve $ue um emulador AR> foi instanciado n<o o finalie. >ei.e2o aberto e
sempre $ue precisar e.ecutar a aplica<o basta clicar no bot<o PBun as...P
novamente. :sso deve ser feito devido ao fato de ser e.tremamente lento carregar
um AR>.
(. Guando a aplica<o estiver pronta para ser distribu8da# basta enviar o ar$uivo de
e.tens<o PA1@P para o cliente Android.
10D2 EA$rcci"
4) Altere o pro6eto anterior de modo a incluir mais dois Te.tRie9 com o seu nome e o nome
da sua faculdade. 1ara tanto# acrescente duas novas strings no PresQvaluesQstrings..mlPC
nome e faculdade. ;omplete2as e e.iba na propriedade androidCte.t. &.ecute o pro6eto e
ve6a o resultado na tela.
() ,e poss8vel# instale o ar$uivo P1r6Ola%Hundo.apAP em um dispositivo mvel $ue ten%a
Android.
10E2 C",pr$$3'$3'" " Cicl" '$ Vi'a '$ u,a aplica45" $, A3'r"i'
4. ;onstrua um novo pro6eto com o nome de Z1r6;icloRidaAndroid[.
(. &m seguida# altere o cdigo da classe ZHainActivit7.6ava[ como mostrado abai.oC
package com%example%androidlivec$cle&
import android%os%!undle&
import android%app%'ctivit$&
import android%vie%(enu&
pu"lic class (ain'ctivit$ extends 'ctivit$ )
*+verride
protected void onCreate,!undle saved-nstanceState. )
super%onCreate,saved-nstanceState.&
//setContentVie,/%la$out%activit$0main.&
setContentVie,/%la$out%main.& //ou /%la$out%activit$0main
S$stem%out%println,1onCreate %%%1.&
2
*+verride
pu"lic "oolean onCreate+ptions(enu,(enu menu. )
//get(enu-nflater,.%inflate,/%menu%activit$0main3 menu.&
get(enu-nflater,.%inflate,/%menu%main3 menu.&
S$stem%out%println,1onCreate+ptions(enu %%%1.&
return true&
2
*+verride
pu"lic void on4ause,. )
super%on4ause,.&
S$stem%out%println,1on4ause %%%1.&
2
*+verride
pu"lic void on/esume,.)
super%on/esume,.&
S$stem%out%println,1on/esume %%%1.&
2
*+verride
pu"lic void on/estart,.)
super%on/estart,.&
S$stem%out%println,1on/estart %%%1.&
2
2
F. Agora responda as seguintes perguntasC
a. Gual foi a ordem de e.ecu<o do cdigoM
b. Gual a diferena entre on,tart e on;reateM
c. O $ue o cdigo Zon>estro7[ fa no aplicativoM
10F2 A'ici"3a3'" UIG% 3a Vi$B
4. ;onstrua um novo pro6eto Android com o nome Z1r6;onversor;elsius3a%ren%eit[.
(. &m seguida# altere a vie9 do Activit7 como mostrado a seguirC
F. R5 ao cdigo WH- e altere o conte+do do bot<o Zbtn;onverter[ como mostrado
abai.o (adicione o evento para o on;licA)C
<Button
android:id="@+id/btnConverter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/textView"
android:layout_align!e"t="@+id/textView#"
android:layout_$arginBotto$="%&dp"
android:text="Converter"
android:onClic'="converterCel(iu()o*ahrenheit"/+
/. &m seguida# v5 ao HainActivit7.6ava e altere2o como mostrado a seguir.
package com%example%pr5ciclovidaandroid&
import 5ava%util%6ate&
import android%app%'ctivit$&
import android%os%!undle&
import android%vie%Vie&
import android%idget%7dit8ext&
public class (ain'ctivit$ extends 'ctivit$ )
*+verride
protected void onCreate,!undle saved-nstanceState. )
super%onCreate,saved-nstanceState.&
setContentVie,/%la$out%acti%it!_main.&
S$stem%out%println,1(9todo :onCreate: executado: 1;new 6ate,..&
2

public void converterCelsius8o<a#ren#eit,Vie vie.)
7dit8ext edt8xtCelsius = ,7dit8ext. findVie!$-d,/%id%edt#xt*elsius.&
7dit8ext edt8xt<a#ren#eit = ,7dit8ext. findVie!$-d,/%id%edt#xt.ahrenheit.&
double celsius = 6ou"le%parse/ouble,edt8xtCelsius%get8ext,.%toString,..&
double fa#ren#eit = ,celsius = >%?. ; @A&

edt8xt<a#ren#eit%set8ext,String%%alue0f,fa#ren#eit..&

2

2
'. 1or fim# e.ecute o pro6eto.
=. &m seguida# acrescente mais um bot<o e outra cai.a de te.to e d0 a possibilidade
de passar uma temperatura de ;elsius para @evin (frmulaC @ _ ; ^ (*F).
10H2 EA$rcci"
;onstrua um novo pro6eto $ue permita ao usu5rio digitar ' n+meros. Armaene estes cinco
n+meros# um por um# em um vetor de ' posies. &m seguida# Adicione na tela dois
botesC ZOrdenar ;rescente[ e ZOrdenar >ecrescente[. O usu5rio ir5 tocar no bot<o e ser5
e.ibido os n+meros na ordem escol%ida.

Você também pode gostar