Escolar Documentos
Profissional Documentos
Cultura Documentos
Class 1
Class 1
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
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?
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.