O documento resume um treinamento sobre desenvolvimento para Android. Aborda o que é Android, sua estrutura baseada em Linux, e ferramentas como a máquina virtual Dalvik e a loja de aplicativos Android Market. Também discute brevemente as diferentes versões do Android.
1. Treinamento
em
Google
Android
Por:
Iury
Teixeira
Email:
iuryteixeira@nooclix.com.br
franciury@gmail.com
Msn:
franciury@hotmail.com
2. Quem
sou
?
• Bacharel
em
Sistemas
de
Informação
• Especialização
em
Desenvolvimento
Web
com
JavaEE
(Cursando)
• Jug
Leader
CaJUG
• Sócio
na
nooclix
• Professor
• Cer3ficações:
SCJP
6
(CSM)
6. Introdução
• O
mercado
mobile
cresceu
muito
nos
úlmos
anos;
• Uma
grande
procura
por:
• Jogos
3D
• Internet
a
qualquer
hora
• GPS
• TV
Digital
• Musicas
• Ah,
e
fazer
ligações…!
7. Introdução
• Todos
estamos
nos
acostumandos
com
a
comodidade;
• Opções
com
valor
elevado;
• Solução
acessível,
flexivel
e
poderosa;
– Para
empresas;
– Para
usuários;
– Para
operadoras;
– Para
nós,
desenvolvedores.
8. O
Android
!
• Para
tanto
surgiu
o
Google
Android
!
• Plataforma
de
Desenvolvimento
para
aplicavos
móveis;
• Baseada
em
Linux;
• Já
possui
diversos
recursos
instalados
e
pré-‐
configurados;
9. O
Android
!
• É
mando
pela
Google
e
outras
instuições;
– Como
assim
?
• Um
grupo
chamado
OHA,
formado
por
várias
empresas
do
seguimento;
• Uniram-‐se
ao
Google
para
desenvolver
um
solução
aberta,
moderna
e
que
compesse
com
a
Apple;
10. Open
Handset
Alliance
• OHA
–
Open
Handset
Alliance
– São
lideres
de
mercado,
aliados
e
liderados
pelo
Google;
– Como:
• HTC,
Samsung,
Sony,
Motorola,
LG,
Toshiba,
Nextel,
• T-‐Mobile,
Asus,
Intel,
etc....
• Em
tordo
de
50
empresas
integram
o
grupo!
• Grande
vantagem
por
ser
OpenSource,
Free(Gratuito);
11. Android
• Pode
ser
customizado
de
qualquer
forma;
• Integrar
aplicações
navas
com
as
suas;
• Não
há
diferenças
entre
as
apps
navas
e
as
desenvolvidas
por
terceiros;
• Recursos
3D
baseados
no
OpenGL
ES
13. Android
e
o
Linux
• Android
é
baseado
no
Kernel
2.6
do
Linux;
• O
Linux
é
responsável
por
gerenciar:
Memória
Redes
Threads
Processos
Drivers
Segurança
14. Android
e
o
Linux
• Gerenciamento
de
aplicações:
– Cada
aplicação
inicia
um
processo;
• Seja
com
telas
ou
em
background
– Se
preciso
o
sistema
poderá
encerrar
um
processo
para
liberar
memória
e
recursos;
• Podendo
ser
reiniciado...
-‐
Para
cada
aplicação
existe
um
usuário
no
sistema
operacional;
15. Máquina
Virtual
– Assim
como
no
Java,
o
Android
possui
uma
VM,
chamada
Dalvik.
VM
omizada
para
baixo
consumo
de
recursos
– Essa
mesma,
é
responsável
por
efetuar
toda
compilação
e
transformar
em
código
executável
no
Android;
– Não
existe
uma
JVM
no
Android;
– E
como
funciona
?
16. Máquina
Virtual
Como
funciona
a
exportação
de
uma
Código
Java
aplicação
Android
!
.class
(Java
Compilado)
.dex
(Dalvik
Executável)
.apk
(Aplicação,
imagens…)
18. Licença
• 1ª
Plataforma
móvel
completamente
Open-‐
Source;
• Várias
vantagens;
– Desenvolvedores;
– Fabricantes
de
Smartphones;
– E
Usuários;
– A
licença
da
Apache
possibilita
alterações
sem
obrigar
a
liberação
de
código;
19. Android
Market
• Objevo:
– Possibilitar
aos
desenvolvedores
um
local
para
disponibilizar
suas
Apps.
• Para
ulizar:
– Cadastro,
pagamento
de
US$
25.00;
– Após
isso
pode
ser
instalado
por
qualquer
usuário;
20. Android
Market
• Android
Market
já
possui
mais
aplica3vos
gratuitos
que
a
AppStore,
da
Apple
– Segundo
analistas,
loja
de
aplica6vos
do
Android
pode
superar
a
App
Store
em
número
total
de
programas
em
cinco
meses
02
de
Maio
de
2011
|
14:30h
– OlharDigital
22. Plataformas
ou
Versões
• No
dia
10/05
– nova
versão,
Ice
Cream
Sandwich;
– Unificar
as
plataformas
• Smartphone
e
Tablets
– Features:
• Reconhecimento
de
Faces;
• Reconhecimento
de
Voz
– Superando
o
iOS;
• Mudança
de
Foco
esse
ano
iliz ado
ainda
D i sp o n i b
23. Android
SDK
• Contém:
– toda
a
API
necessária
para
desenvolver
ulizando
a
linguagem
Java;
– Contém
o
emulador;
• Sendo
possível
plugar
um
celular
na
USB
para
executar/
testar
a
aplicação;
• Para
isso
necessita
do
driver
do
celular
instalado
na
máquina;
24. Android
SDK
• Instalando
o
SDK...
– hvp://developer.android.com/sdk/
• Instalando
o
plugin
no
eclipse
–
ADT
– hvp://dl.google.com/android/ADT-‐10.0.1.zip
25. Configurando
a
plataforma
no
SDK
• O
SDK
vem
vazio,
ou
seja,
sem
plataforma
alguma;
• Vamos
ulizar
a
versão
2.2;
• Para
isso
vamos
ulizar
a
ferramenta
inclusa
no
SDK
chamada,
Android
SDK
and
AVD
Manager.
26. Android
SDK
And
AVD
Manager
• Instalar
novas
plataformas
• Documentação
• Add-‐ons,
como:
Google
Maps
• Drivers
USB
27. Android
SDK
And
AVD
Manager
• Para
iniciar
a
ferramenta
clique
em:
38. HelloWorld
!
• Crie
um
novo
projeto
– File
>
New
>
Android
Project
39. HelloWorld
!
• Na
proxima
janela
• Project
Name:
Nome
do
projeto;
• Build
Target:
Plataforma
ulizada
(2.2)
• Applica3on
Name:
No
da
aplicação
que
será
exibida
no
celular;
• Package
Name:
br.com.nooclix.zn
– Manterá
a
Acvity
principal
(
Único
);
• Create
Ac3vity:
Tela
principal
da
aplicação;
• Min
SDK
Version:
Level
da
API
(
2.2
=
8)
42. Estrutura
do
Projeto
• Src
–
Código
Java
• Gen
–
Classe
R.
Permi
acessar
os
recursos
(imagens,
arquivos,
componentes)
através
de
constantes;
Não
pode
ser
alterada
manualmente;
• Assests
–
Contém
arquivos
customizados,
como
fontes;
• Res
–
Contém
subpastas
de
recursos;
• Drawable
–
Imagens
ulizadas
na
aplicação;
• Layout
–
Pasta
com
layouts
em
XML;
• Values
–
Arquivos
XML,
como:
Strings
para
internacionalização;
– Cores,
Eslos,
etc.
44. Entendendo
os
arquivos
do
projeto
• /res/layout/main.xml
• Os
arquivos
XML
na
pasta
layout
representa
uma
tela
da
aplicação;
• As
TAGS
representa
os
componentes,
a
criação
da
Visão;
• Os
componentes
visuais
podem
ser
criados
via
API
Java;
45. Entendendo
os
arquivos
do
projeto
• /res/values/string.xml
• Chave
-‐
Valor;
• Muito
importante
para
internacionalização;
Chave
Valor
46. Entendendo
os
arquivos
do
projeto
• A
Classe
R
• Possui
constantes
(do
po
INT)
para
todos
os
recursos
criados;
• Acessa
imagens;
• É
atualizada
automacamente
pelo
ADT(Plugin),
quando
a
pasta
res
é
alterada;
– R.drawable.imagem1;
– R.layout.meu_layout;
– R.string.valor_string;
– R.style.meu_eslo;
47. Entendendo
os
arquivos
do
projeto
• IMPORTANTE:
Todos
os
recursos
devem
ter:
nomes
minusculos
e
sem
espaços.
Caso
não
siga
a
regra
a
classe
R
não
será
compilada.
49. AndroidManifest.xml
• Deve-‐se
manter
na
raiz
do
projeto;
• Mantem
todas
as
configurações
do
projeto:
– Nome,
pacote
base,
ícone
– Acvity’s
– Versão
SDK
– Permissões
• Com
o
eclipse
existe
um
editor
visual;
• Semelhante
ao
web.xml;
51. AndroidManifest.xml
O
que
significa
essas
linhas?
Pode
ser
executada
isoladamente,
ponto
inicial
A
Acvity
estará
na
tela
inicial
52. Obtendo
componentes
• Em
certos
casos
é
necessário
capturar
valores
da
visão,
assim
como
adiciona-‐los
de
forma
dinâmica;
• Método
findById(id);
• É
preciso
fazer
um
cast,
para
o
componente
ulizado;
54. Tratamento
de
Eventos
• Para
controlar
eventos,
iremos
o
ulizar
o
método
setOnClickListener(listener);
Veja;
55. Exercicio
1
• Crie
um
projeto
chamado
tandroid;
– Crie
as
seguintes
Strings
(string.xml)
• Produto;
Quandade;
Valor;
Calcular;
– E
faça:
Efetue
o
valor
total
da
compra
56. E
o
SysOut
?
• Ao
ulizar
o
método
System.out.println(),
nada
acontece;
• Normal;
• É
preciso
usar
o
LogCat,
com
a
chamada:
Log.i(“categoria”,
“mensagem”);
Log.w(“categoria”,
“mensagem”);
58. TextView
e
EditText
• Propriedades:
– layout_width
=
[“wrap_content”
ou
“fill_parent”]
-‐>
Preenchimento
Lateral
– layout_heigth
=
[“wrap_content”
ou
“fill_parent”]
-‐>
Preenchimento
Altura
– background
=
“#FFFF34”
-‐>
Cor
de
Fundo
– textColor
=
“#FFFF34”
-‐>
Cor
da
Fonte
– hint
=
“qualquer
texto”-‐>
Mensagem
se
o
texto
esver
vazio.
– autoLink
=
[“web
ou
map
e
etc”]
-‐
>
o
TextView
Funciona
como
link.
– password
=
[true|false]
-‐>
Campo
de
senha(******)
– layout_weight
=
[“valor
inteiro”]
-‐>
Refere-‐se
a
porcentagem
que
o
componente
irá
ocupar
na
tela;
OBS:
A
parr
da
API
Level
8(2.2
Froyo)
fill_parent
tornou-‐se
match_parent
59. CheckBox
e
ToggleBuvom
• Componentes
para
seleção
de
iten
opcionais;
• Propriedades:
– textOn:
Exibe
um
texto
quando
selecionado;
– textOff:
Exibe
um
texto
quando
não
está
selecionado;
• Método
isChecked():
– Retorna
a
situação
da
seleção;
om
61. RadioBuvom
• Seleção
Única
• É
ulizado
com
o
auxilio
de
um
RadioGroup
• Propriedades:
– Text:
Texto
a
ser
exibido;
– Checked:
Se
o
botão
iniciará
marcado
ou
não
[
true
|
false
]
• Método
para
obter
o
radio
selecionado,
pertence
ao
Group:
– getCheckedRadioBuvonId();
63. Exercicio
2
• Crie
um
novo
layout,
calc_salario
– Calcule
a
previsão
salarial
dos
funcionários:
• Que
sejam
de
TI;
• O
funcionário
escolherá
o
percentual
de
aumento;
66. AutoCompleteTextView
• Efetua
uma
busca
enquanto
digita;
– Propriedades:
• comple3onThreshold:
Número
minimo
para
iniciar
o
autocomplete
(default
=
2)
• comple3onHint:
Texto
de
dica
exibido
abaixo
da
caixa;
– É
necessário
ulizar
um
Adapter
• ListAdapter
68. Buvon
e
ImageBuvon
• Ambos
são
botões;
• Porém,
o
Buvom
não
pode
ter
um
icone;
• O
ImageBuvon
tem
um
icone;
69. ImageView
• Permi
a
visualização
de
imagens:
JPG,
PNG
e
GIF;
– A
imagem
no
XML
é
adicionada
através
da
propriedade
src=@drawable/suaimagem;
– Em
Java:
71. Spinner
• Funciona
como
um
ComboBox;
• Propriedades:
– Prompt:
Similar
a
um
Titulo
de
Janela;
• Métodos:
– Object
getSelectedItem()
:
Item
selecionado;
– long
getSelecteditemId()
:
id
do
item
selecionado;
– int
getSelectedItemPosion()
:
Posição
do
Item;
– Ligado
ao
Array;
setOnItemSelectedListener
73. ProgressDialog
• Mensagem
de
espera;
• Mantem-‐se
em
execução
através
do
método
show()
até
que
o
método
dismiss();
74. Exercicio
3
• Criar
uma
tela
com:
– Spinner
com
nome
de
carros;
– ImageView
para
exibir
as
fotos
quando
clicados
no
Spinner
– Obtenha
uma
das
imagens
da
internet:
URL;
• Ulize
a
ProgressDialog;
– Adicione
um
efeito
de
transição
75. ImageGallery
• Exibi
diversas
imagens
de
uma
só
vez;
• As
fotos
são
passadas
com
o
indicador
(mouse);
• É
necessário
a
criação
de
uma
classe
Adapter;
– Herda
de
BaseAdapter
82. Acvity
• Representa
uma
tela
da
aplicação;
• Tem
a
função
de
gerenciar
os
eventos
da
tela;
• Regra
de
Visão;
• Configurar
o
View
a
ser
exibido;
83. Acvity
• Deve
herdar
de
Acvity
ou
subclasses;
• Deve
implementar
onCreate:
– Inicializar
View;
– Criar
os
elementos
da
tela;
• Deve
ser
informado
no
AndroidManifest.xml
84. Acvity
• Estados
de
uma
acvity
Executando
Temporariamente
interrompida
Destruída
85. Acvity
• Cada
Acvity
é
adicionada
a
um
stack
acvity;
• Outras
podem
estar:
• Executando
em
segundo
plano;
• Pausadas;
• Paradas;
• Toda
tela
é
uma
Acvity:
ligação,
mensagem…
87. Navegando
entre
telas
• Para
navegarmos
entre
várias
telas,
ulizaremos
os
seguintes
métodos:
– startAcvity(intent);
• Pode
enviar
parâmetros
• Exibe
uma
nova
acvity
– startAcvityForResult(intent,codigo);
• Pode
enviar
parâmetros
• Exibe
uma
nova
acvity
• Espera
um
retorno
da
mesma
88. Enviando
parâmetros
• Para
se
enviar
parâmetros
uliza-‐se
a
classe
Intent
em
união
com
a
Bundle,
ou
não;
• É
similar
a
um
HashMap;
Valor
INT
e
STRING
89. Enviando
parâmetros
• Para
se
enviar
parâmetros
abreviando…
• É
similar
a
um
HashMap;
Valor
Boolean
90. Retornando
valores
• Uliza-‐se
o
método
setResult(codigo,
intent);
– Em
seguida
chama
o
método
finish();
– Para
finalizar
a
Acvity
91. Retornando
valores
• Capturando
o
retorno
– onAcvityResult(int
requestCode,
int
resultCode,
Intent
data);
– Efetua
a
leitura
do
intent
de
acordo
com
resultCode
– requestCode
=
codigo
da
Intent
do
startAcvityForResult(i,
codigo);
92. ListAcvity
• Exibe
dados
em
forma
de
lista;
• Subclasse
de
Acvity;
• Já
possui
métodos
relacionado
ao
componente
ListView;
93. ListAcvity
• Já
possui
barra
de
rolagem;
• Método
setContentView(listView),
é
chamado
automáco;
• Necessário
um
ListAdapter;
• Fazendo
a
ligação
entre
o
ListView
e
os
dados.
94. ListAcvity
• Um
rápido
exemplo…
Array
com
itens
do
ListView
(Lista)
96. Exercicio
4
• Crie
um
Menu
ulizando
uma
ListAcvity
– Com
Icones
– Ao
clicar
em
um
item,
navegar
para
a
respecva
tela;
– Esse
Menu
deve
conter
Icones,
Imagem
de
Fundo
(Adicione
um
tela
de
Login);
• Precisa-‐se
de
um
layout.xml
• Uma
classe
representando
cada
Item
• Adapter
Códigos
106. Intent
• Representa
uma
“ação”,
que
será
executada
pela
aplicação
em
conjunto
com
o
sistema
operacional;
• Exemplos:
– Abrir
uma
nova
tela
startAcvity(intent);
– Efetuar
uma
ligação;
– Abrir
o
browser;
– Abrir
um
mapa;
107. Intent
• Algumas
das
avidades/intenções
precisam
de
autorização/permissão;
– Internet:
• android.permission.INTERNET
– Contatos:
• android.permission.READ_CONTACTS
– Ligação:
• android.permission.CALL_PHONE
112. Layouts
• Define
um
forma
de
organizar
os
componentes
na
tela/View;
– Horizontal
ou
Vercal;
– Exatas
coordenadas;
• Podendo
ser
indicado
X
e
Y;
– Tabular;
115. LinearLayout
• Possibilita
a
organização/alinhamento
de
componentes
na
vercal
ou
horizontal(padrão);
• Controlado
pela
propriedade
orientaon;
• Pode-‐se
controlar
alinhamento
com
gravity;
• Pode-‐se
controlar
preenchimento
com
weight;
– Relevância
(quem
pode
mais);
116. TableLayout
• Semelhante
a
uma
tabela;
– Ul
para
formulários;
• Cada
linha
é
representada
por:
– TableRow
subclasse
de
LinearLayout;
– Cada
componente
inserido
representa
uma
coluna
automacamente;
118. Noficaons
• Classe:
android.app.Noficaon
• Exibi
uma
mensagem
na
barra
de
status;
• Possui
um
conteúdo/mensagem;
• Visualizando
o
conteúdo
uma
Intent
pode
ser
disparada;
119. Noficaons
• Úl
para
não
abrir
uma
tela
sem
permissão;
• Aplicação
em
segundo
plano
disparar
um
Alerta;
• Evita
atrapalhar
o
usuário
de
forma
elegante;
121. Noficaons
• Configurando
parâmetros
– New
Noficaon
• Icone
• Texto
para
exibição
na
barra
de
status
• Hora
e
Data
de
inicialização
– PendingIntent
• Contexto
• Codigo
da
requisicao
• Intent
(a
ser
executada
no
clique
);
• Controlar
a
abertura
da
Intent
122. Noficaons
• Configurando
parâmetros
– LatesEventInfo
• Contexto
• Titulo
da
noficaon
• Conteudo
• PendingIntent
– Nofy(id,
noficaon)
• Id:
idenfica
a
noficacao
123. Noficaons
• Configurando
para
cancelar
Ou
adicionar
no
onDestroy(),
para
encerra
junto
com
a
Acvity
que
a
iniciou!
125. HTTP
• Muitas
vezes
manter
os
dados
no
disposivo
é
caro;
complexo;
inseguro;
• Para
isso
a
solução
seria
ulizar
conexões
Hvp;
– Teremos
acesso
a
dados
complexos;
– Informações
seguras;
• Atualmente
as
aplicações
tornam-‐se
on-‐line;
– Tento
acesso
em
tempo
real;
• Importante:
– Quanto
maior
o
número
de
serviços
de
uma,
maior
será
o
seu
valor;
126. HTTP
• Comumente
existe
a
necessidade
de
comunicação
com
um
servidor
para
troca
de
informações;
• Essa
comunicação
é
independente
de
linguagem,
visto
que
é
através
do
protocolo
HTTP;
127. HTTP
Post
• Indica-‐se
ulizar
o
método
POST
• Por
quê?
– 1º:
Dados
colocados
no
corpo
da
mensagem;
– 2º:
Separados
da
URI
– 3º:
São
encapsulados
para
o
usuário
128. HTTP
Post
• Como
efetuar
a
comunicação
de
envio?
129. HTTP
Post
• Como
efetuar
a
comunicação
de
retorno?
130. Exercicio
Final
• Vamos
criar
uma
aplicação
para
cadastro
de
clientes
via
HTTP;
– Nome
– Endereço,
Numero
– Tipo
de
Pessoa(FISICA
ou
JURIDICA)
– Isento
de
ICMS
131. Exercicio
Final
• Vamos
criar
uma
aplicação
para
enviar
email
via
HTTP;
– Email
enviado
disparar
uma
noficação;