Você está na página 1de 36

ProgramaoemJavaparaaPlataformaAndroidAULA1

PrimeirosPassos
OqueAndroid
Comoodesenvolvimentodeaplicaesparaesseambiente
Oqueprecisoparacomearaprogramar
ABvidades,oinciodetudo
XMLearquivosdemanifesto
OmercadoAndroid

ObjeBvosdoCurso
Aprender a desenvolver aplicaes
para smartphones que usem o
sistema operacional Android.

Java:
ar
r
o
f
e
r
e
r
e
d
apren
grao
r
p
e
d
s
a
c
i
tcn
a
mao nest
linguagem.

Orientao a
objetos:
Rever conceitos
e
boas prticas de
programao OO
.

Programao:
Este no um curso
de programao
bsica.

Perguntasimportantes

OqueAndroid?
OqueOpenHandsetAlliance?
QuaisdisposiBvossuportamAndroid?
Queoutrossistemasoperacionaispara
Smartphonesexistem?
Comecemos
pelo princpio:
o que
Android?

OqueAndroid?

e:
Middlewar
Alm de um
sistema
.
operacional

Umaformaportveldeexecutar
aplicaesemdisposiBvosmveis.

Principalmentesmartphones.
Mercadoemfrancaexpanso.
Middleware=kernel(linux)+bibliotecas+
mquinavirtual+aplicaBvos.

Ambientededesenvolvimento.
ProgramaoemJava.
Novasbibliotecas(mesmssimalinguagem).

Ns


!
i
u
q
a
s
o
ficarem

Arquitetura

Mas usa
remos
essas cla
sses

OqueaOpenHandsetAlliance?
As84(ecrescendo)companhiasqueapoiame
dosuportediretoPlataformaAndroid.
FabricantesdedisposiBvos:HTC,LG,
Motorola,Samsung,etc.
Operadoras:KDDI,DoCoMo,Nextel,TMobile,
Telefonica,TelecomItalia,ChinaMobile,etc.
Semicondutores:Aucience,Broadcom,Intel,
Nvidia,Qualcomm,SynapBcs.
O que um
Sogware:Google,eBay,Ascender,
Smartphone?
LivingImage,etc.
Comrcio:Aplix,Noser,TAT,WindRiver,etc.

OqueumSmartphone?
Smartphonessotelefonesmveiscomum
sistemaoperacional
Emaisumpunhadodecoisas:
Navegadoresweb
ReceptoresGPS
ComunicaosemonaBva
Cmera
Teladealtaresoluo
etc

Quais outros SOs para


Smarphones existem?

QueoutrosSOsexistempara
SmartphonesExistem?

Android
Symbian
Linux
GarnetOS(Palm)
WindowsMobile
WindowsPhone
AppelIOs
RimBlackBerryOS

MercadoemExpanso

Em2010omercadoestavaassim.

?
a
r
o
g
a
E

PorqueAndroid?
Grandefragmentaodomercadode
smartphones.
DiferentesBposdehardware.

Sogwareproprietrio.
SymbianeWindowsMobile.

Redesfechadas.
Algumjtevededesbloquearoaparelho?

CaractersBcasdeDesenvolvimento
Recursoslimitados

CaractersBcasdodisposiBvo

Principallimitaoabateria.
Menosmemriaepoderdeprocessamento.

Mashups

CaractersBcasdasaplicaes

fcilincorporarumaaplicaoemoutra.

Programaointencional
Queroenviarumemail,aocontrriodeQuero
enviarumemailusandoXXXX.

Oqueeuprecisoparaprogramar?
InstaleoJavaDevelopmentKitdaOracle.
Java1.5ou1.6

InstaleEclipse
verso3.3ouposterior

InstaleokitdedesenvolvimentoAndroid.

Comocriarumprojetonovo?
"File">"new">
"Project
Selecione"Android
Project"eclique"next
Preenchaatelade
criaodeprojeto
conformeindicadona
janelaaseguir.

ParaaBvarCheckstyle
Clicknapastadoprojetocomobotodireito
domouse(janela"package")
LeveoponteirodomouseguiaCheckstyle
Cliqueem"Ac@vateCheckstyle"
o:

a
z
i
n
o
r
d
Pa
Porque
e
interessant
os
r
a
z
i
n
o
r
d
a
p

programas?

Discusso
PorqueusarCheckstyle?
Quaissoboaspadronizaesdecdigo?
Existempadronizaesruins?

Criandoumarquivodepacote
Cliquenopacotedoprojetocomboto
direito:"com.aula1
NaJanelapopup:"new">"le
Nomedoarquivo:package-info.java
/**
* This is the core package for
* the application.
* @since 1.0
Arquivo de pac
ote:
*/
Para que serve e
ste
arquivo?
package com.aula1;

EntendendonossaActivity
package com.aula1;
import android.app.Activity;
import android.os.Bundle;
/**
* Primeira atividade do curso de Android.
* @author fpereira
*/
public class Aula1Activity extends Activity {
/**
* Este metodo determina quais eventos irao acontecer
* quando esta atividade for inicializada.
* @param savedInstanceState o ultimo estado desta atividade.
*/
public final void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}

Nossainterfacegrca
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>

Executandoa
Aplicao
Oquedeterminao
textoescritonatela?
Comoeuomodico?

OManifesto
<?xmlversion="1.0"encoding="uw8"?>
<manifestxmlns:android="hxp://schemas.android.com/res/android"
package="org.anddev.android.hello_android">
<applicaBonandroid:icon="@drawable/icon">
<acBvityandroid:name=".Hello_Android"
android:label="@string/app_name">
<intentlter>
<acBonandroid:name="android.intent.acBon.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intentlter>
</acBvity>
</applicaBon>
</manifest>

OManifesto

<?xmlversion="1.0"encoding="uw8"?>
<manifestxmlns:android="hxp://schemas.android.com/res/android"
package="org.anddev.android.hello_android">
<applicaBonandroid:icon="@drawable/icon">
<acBvityandroid:name=".Hello_Android"
android:label="@string/app_name">
<intentlter>
<acBonandroid:name="android.intent.acBon.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intentlter>
</acBvity>
</applicaBon>
</manifest>

OManifesto
<?xmlversion="1.0"encoding="uw8"?>
<manifestxmlns:android="hxp://schemas.android.com/res/android"
package="org.anddev.android.hello_android">
<applicaBonandroid:icon="@drawable/icon">
<acBvityandroid:name=".Hello_Android"
android:label="@string/app_name">
<intentlter>
<acBonandroid:name="android.intent.acBon.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intentlter>
</acBvity>
</applicaBon>
</manifest>

<?xmlversion="1.0"encoding="uw8"?>
<manifestxmlns:android="hxp://schemas.android.com/res/android"
package="org.anddev.android.hello_android">
<applicaBonandroid:icon="@drawable/icon">
<acBvityandroid:name=".Hello_Android"
android:label="@string/app_name">
<intentlter>
<acBonandroid:name="android.intent.acBon.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intentlter>
Launchable:
</acBvity>
O prprio usurio
</applicaBon>
capaz de iniciar
</manifest>
a Ativida
de.

Resources
<?xmlversion="1.0"encoding="uw8"?>
<manifestxmlns:android="hxp://schemas.android.com/res/android"
package="org.anddev.android.hello_android">
<applicaBonandroid:icon="@drawable/icon">
<acBvityandroid:name=".Hello_Android"
android:label="@string/app_name">
<intentlter>
<acBonandroid:name="android.intent.acBon.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intentlter>
</acBvity>
</applicaBon>
</manifest>

?
?

Resources
<?xmlversion="1.0"encoding="uw8"?>
<manifestxmlns:android="hxp://schemas.android.com/res/android"
package="org.anddev.android.hello_android">
<applicaBonandroid:icon="@drawable/icon">
<acBvityandroid:name=".Hello_Android"
android:label="@string/app_name">
<intentlter>
<acBonandroid:name="android.intent.acBon.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intentlter>
</acBvity>
</applicaBon>
</manifest>

Strings

Quais strin
gs
devem fica
r no
arquivo
strings.xm
l?

recomendvelmanterstringscomo
constantes,emumarquivoderecursos.
Androidreconheceoarquivostrings.xml
<?xmlversion="1.0"encoding="uH8"?>
<resources>
<stringname="hello">HelloWorld!</string>
<stringname="app_name">Aula1</string>
</resources>
Qual a vantagem

de usar o recurso
string.xml?

ExecutandoaAplicao
Paraexecutaraaplicao,
uBlizeaguiaRunemEclipse.
SelecioneaopoRun,dentro
daguiaRun.
NaprimeiratentaBvade
executarumaapp,Eclipse
fornecerumacaixadedilogo
"RunAs"paraaescolhado
ambientedeexecuo.
Selecione"AndroidApplica@on".

Arcabouos
Existemduasformasde
organizaodesogwarepara
reso:bibliotecasearcabouos.
Oqueumabiblioteca?Exemplos?
Oqueumarcabouo?Exemplos?

ABvidadesfazempartedo
arcabouodedesenvolvimento
Android.

Quais mtodos d
a
atividade so
invocados pelo
arcabouo?

Como seria o ciclo


de vida de uma
atividade?

tos
FamosoprincpiodeHollywood:no Quais even dar o
poderiam mu
nosligue,nsligaremosparavoc.
estado de uma
atividade?

usurio navega
de volta para a
atividade

no

onCreate

Incio da atividade

onStart

onRestart

atividade
na frente?
atividade se torna visvel

onResume
onPause

Como podemos
implementar
esses mtodos?

atividade vem
para a frente

onStop
onDestroy

Trmino da atividade

publicclassStateAcBvityextendsAcBvity{
Para que serve
@Override
publicnalvoidonCreate(nalBundlesavedInstanceState){ essa anota
o?
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.v("States","IniciandoaaBvidade\n");
@Override
}
publicnalvoidonStop(){
@Override
super.onStop();
publicnalvoidonStart(){
Log.v("States","InvocandoStop\n");
super.onStart();
}
Log.v("States","Invocandostart\n");
@Override
}
publicnalvoidonDestroy(){
@Override
super.onDestroy();
publicnalvoidonResume(){
Log.v("States","InvocandoDestroy\n");
super.onResume();
}
Log.v("States","Invocandoresume\n");
}
Que aes seria
@Override
razovel
publicnalvoidonPause(){
implementar
super.onPause();
Log.v("States","Invocandopause\n");
nesses mtodos?
}
}

Programaoorientadaatemplates
Umtemplateumalgoritmocomlacunas.
Arcabouossoconjuntosdetemplates.
OndeestoaslacunasemnossasaBvidades
(AcBvity)Androids?

Qualavantagemdaprogramaovoltadapara
templates?
Equaisasdesvantagens?

PublicandoaAplicao
Existeummercadoonlinedeaplicaes
Android:http://market.android.com
Nessemercadopossveldisponibilizar
aplicaes,gratuitamenteouno
E,naturalmente,podesecompraraplicaes.
sos
s
a
p
s
o
Quais
veis

d
n
e
m
reco
tar
n
e
t
e
s
e
antes d
a
m
u
r
a
i
c
nego
o?

a
c
i
l
p
a

Antesdepublicar
TesteexausBvamenteoscasosdeusotratadospela
aplicao
TesteaaplicaoempelomenosumdisposiBvoreal
Testeodesempenhoeaportabilidadedaaplicao
Escolhaumbomnomeparaseupacote.Emgeral,usa
secom.empresa.nome_app
Sigaasdicasdeprojetodeinterfaces(cones,menus,
layouts,etc)em
http://d.android.com/guide/practices/
ui_guidelines
Sepossvel,peaaoutrosusuriosqueusemsua
aplicaoantesdepublicla.

AssinaturaDigital
TodaaplicaoAndroid,
mesmoasemuladas,
precisamdeuma
assinaturadigital.
Eclipsecriou
secretamenteuma
assinaturaparaanossa
aplicaoexemplo.

Paracriaruma
assinatura
explicitamente,use
AndroidTools,no
Eclipse.

Algunsdetalhesparapublicar
Humapequenataxaquedeveserpagapara
efetuaroregistronogooglemarket.
Paravenderasaplicaes,necessriotambm
assinarumsistemadepagamento.Existeo
googlecheckoutdisponvel.
possveldisponibilizaraplicaBvosgratuitos.
possvelatualizarumaplicaBvojpublicado
comnovasverses.Nopossveltransformar
umaplicaBvogratuitoemumaplicaBvopago.

Você também pode gostar