Buscar

Android - Aula 5 - Dispositvos Móveis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 48 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 48 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 48 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Erisvaldo Gadelha Saraiva Júnior
Faculdade de Tecnologia de João Pessoa (FATEC-JP)
Especialização em Desenvolvimento para Dispositivos Móveis
Disciplina: Tecnologias para Dispositivos Móveis
Android (Parte 5)
E-mail: erisvaldojunior@gmail.com
Site: http://erisvaldojunior.com
Twitter: @erisvaldojunior
Roteiro da Aula
Introdução ao Android 3.0, UI avançada e Tendências do mundo mobile
ANDROID 
3.0
GRÁFICOS E 
ANIMAÇÕES
TENDÊNCIAS
ANDROID 3.0
Visão geral e recursos do Android 3.0
N
o
vi
d
ad
e
s 
d
o
 A
n
d
ro
id
 3
.0
Novos recursos para o Usuário
Nova interface, otimizada para os tablets
• System Bar
• Action Bar
• 5 Homes Customizáveis
• Aplicações recentes
N
o
vi
d
ad
e
s 
d
o
 A
n
d
ro
id
 3
.0
Novos recursos para o Usuário
• Novo Teclado
• Manipulação de Textos
• Mais conectividade
• Aplicações-chave melhores
N
o
vi
d
ad
e
s 
d
o
 A
n
d
ro
id
 3
.0
Novos recursos para o Usuário
Aplicações-chave foram aperfeiçoadas
N
o
vi
d
ad
e
s 
d
o
 A
n
d
ro
id
 3
.0
Novos recursos para o Desenvolvedor
Novo framework de UI, refinado para tablets
• Activity Fragments
• Widgets remodelados
• Action Bar customizável
• Notificações mais ricas
• Seleção múltipla, clipboard
e recurso de drag-and-drop
N
o
vi
d
ad
e
s 
d
o
 A
n
d
ro
id
 3
.0
Novos recursos para o Desenvolvedor
• Novo e flexível Framework de animação
• Aceleração gráfica 2D por hardware
• Renderscript (engine 3D)
• Suporte a múltiplos processadores
• HTTP Live streaming (M3U)
• Framework de DRM
• Transferência de arquivos de mídia (MTP/PTP)
• Mais opções de conectividade
• Segurança para ambientes corporativos
• Compatibilidade com aplicações existentes
A
P
I L
e
ve
l 1
1
Fragments
Componente que permite a separação de elementos distintos de
uma Activity em módulos com interfaces e ciclos de vida próprios.
Pode-se combinar múltiplos fragmentos em uma única Activity para
construir uma interface de vários painéis na qual cada painel
gerencia seu próprio ciclo de vida e entradas do usuário.
• Fragments podem ser reusados em múltiplas Activitys;
• Pode-se adicionar, remover, substituir e animar
Fragments dentro de uma Activity;
• Por meio de layouts alternativos, pode-se combinar
Fragments baseado no tamanho e orientação da tela;
• Fragments tem acesso direto a sua Activity e pode
acessar a Action Bar da Activity.
A
P
I L
e
ve
l 1
1
Loaders
Permitem, de maneira assíncrona, facilmente carregar dados em
um Activity ou Fragment.
• Estão disponíveis em qualquer Activity ou Fragment;
• Provêem carregamento assíncrono de dados;
• Monitoram a fonte dos dados e entregam novos
resultados a medida que o conteúdo muda;
• Reconectam-se automaticamente ao último cursor do
Loader quando são recriados após uma mudança de
configuração. Assim, não necessitam reconsultar os dados.
A
P
I L
e
ve
l 1
1
Action Bar
Substitui a barra de título na parte superior da Activity. Mostra o
ícone da aplicação e provê uma nova interface para os itens do
menu de opções. Além disso, permite ao desenvolvedor:
• Adicionar itens de menu diretamente na Action Bar
(Action Item);
• Substituir um Action Item por um Widget, como uma
caixa de pesquisa (Action View);
• Adicionar uma ação para o ícone da aplicação bem como
substituí-lo por um ícone personalizado;
• Opções de navegação para os fragmentos da Activity;
• Personalizar a Action Bar com temas e fundos.
A
P
I L
e
ve
l 1
1
System Clipboard
Área de transferência entre aplicações (texto, endereços, intents)
• Possibilita acesso a dados que o usuário deseja copiar por meio de um
Content Provider. Dados complexos como imagens ou estruturas podem
ser copiados de uma aplicação para outra;
• Para obter o Clipboard, usa-se o seguinte método:
ClipboardManager.getSystemService(CLIPBOARD_SERVICE);
• Dados são adicionados ao Clipboard por meio de um objeto da classe
ClipData, que possui métodos como newPlainText(), newUri() e
newIntent();
• Através do método setPrimaryClip(), atribui-se um ClipData a um
Clipboard. O conteúdo pode ser obtido através do getPrimaryClip();
• O Clipboard armazena possui apenas um objeto ClipData mas esse
objeto pode ser composto por vários itens (ClipData.Item).
A
P
I L
e
ve
l 1
1
Drag and Drop
Dados podem ser transferidos de um lugar para outro
• Traduzindo para o desenvolvedor: objetos ClipData podem ser movidos
de uma View para outra;
• Cada operação Drag and Drop é definida por um objeto DragEvent, com
estados como ACTION_DRAG_STARTED, ACTION_DRAG_ENTERED e
ACTION_DROP definindo seu ciclo de vida;
• O método startDrag() pode ser chamado em uma View provendo um
ClipData que representa a informação a ser transferida;
• O método setOnDragListener() permite que a View registre um
OnDragListener que permitirá a recepção de objetos Drag and Drop. O
listener obriga a implementação do método onDrag().
A
P
I L
e
ve
l 1
1
Framework de Animação
Novo e flexível framework de animação para objetos como
Fragment, View e Drawable.
• Pode-se definir duração, quantidade de repetições, taxa de
atualização, atraso, etc;
• Através da classe LayoutTransition é possível estabelecer animações
automáticas para mudanças que foram realizadas no layout da Activity;
• Para definir animações personalizadas, usa-se o método
setAnimation() de LayoutTransition, passando-se um animador
personalizado (objeto da classe ValueAnimator ou ObjectAnimator).
A
P
I L
e
ve
l 1
1
Framework estendido de UI
Diversas novidades para o framework de interface gráfica
• Seleção múltipla para ListView e GridView através do método
setChoiceMode() e o modo CHOICE_MODE_MULTIPLE_MODAL, além
de registrar-se um MultiChoiceModeListener;
• Novas APIs para transformar Views 2D e 3D, através de métodos
como setAlpha(), setPivotX(), setRotationX() e setScaleX();
• Novos temas holográficos que são atribuídos como base padrão
quando android:minSdkVersion ou android:targetSdkVersion estão
setados para “11” no AndroidManifest.xml;
• Novos widgets como AdapterViewAnimation, AdapterViewFlipper,
CalendarView, ListPopupWindow, NumberPicker, PopupMenu,
SearchView e StackView.
A
P
I L
e
ve
l 1
1
Suporte aprimorado ao JSON
Classes JsonReader e JsonWriter adicionados ao pacote org.json.
• Cria-se uma instância de JsonReader passando um
InputStreamReader como parâmetro;
• A leitura começa com beginObject() e o nome da chave é lido com
nextName(). O valor é lido de acordo com o tipo, ex: nextInt(),
nextString(), etc;
• Esse processo é repetido enquanto hasNext() retorna verdadeiro.
A
P
I L
e
ve
l 1
1
Pacotes adicionados
• android.animation – Novo framework de animação;
• android.drm – API para gerenciamento de direitos digitais;
• android.renderscript – engine para renderização 3D.
O
ti
m
iz
an
d
o
ap
lic
aç
õ
e
s
Otimizando Apps para o Android 3.0
• Ambiente de desenvolvimento
• SDK Platform Android 3.0
• Android SDK Tools r10
• Android SDK Platform-Tools r3
• Documentação do Android SDK, API Level 11
• Exemplos do Android SDK, API Level 11
• Criar AVD com Android 3.0 e skin WXGA
• Aplicar o novo tema holográfico – Defina o
android:sdkTargetVersion=“11” no AndroidManifest,
fazendo com que a aplicação use o novo tema holográfico
quando estiver rodando em dispositivos Android 3.0. Não é
necessário alterar o android:minSdkVersion.
Qualquer aplicação, por padrão, é compatível com dispositivos que
rodam Android 3.0, uma vez que as aplicações Android são “forward-
compatible”.
O
ti
m
iz
an
d
o
ap
lic
aç
õ
e
s
Otimizando Apps para o Android 3.0
• Prover layouts alternativos para telas extra-grandes
(xlarge)
• Certificar-se que existe um layout otimizado na aplicação para
orientação landscape (considerada normal nos tablets);
• Usa-se o qualificador xlarge para telas extra-grandes (tablets) e
land para a orientação landscape. Pode-se prover imagens, por
exemplo, para res/layout-xlarge-land/;
• Reconsiderar posicionamento dos botões para adequar-se ao
usuário que está segurando o tablet com as duas mãos;• Tamanhos de fonte devem usar unidades “sp”. Em alguns casos,
pode-se usar fontes maiores para xlarge. Certificar-se de usar as
melhores práticas para independência de tela.
D
e
se
n
vo
lv
e
n
d
o
p
ar
a
A
n
d
ro
id
 3
.0 Atualizando ou desenvolvendo uma nova 
aplicação para Android 3.0
• Declarar android:minSdkVersion=“11” na tag <uses-sdk> do
AndroidManifest.xml, habilitando o novo tema holográfico e Action Bar nas
Activities;
• Usar a Action Bar;
• Dividir as Activities em Fragments;
• Usar o novo framework de animação para as transições;
• Habilitar aceleração por hardware com android:hardwareAccelerated=“true”
para cada <activity> ou para a <application> no AndroidManifest.xml;
• Aprimorar os widgets com os novos recursos;
• Usar os novos recursos (Drag and Drop), nova API de Bluetooth, sistema de
Clipboard, Renderscript, etc;
• Publicar a aplicação para telas extra grandes (xlarge), decidindo se a mesma
será portável para smartphones ou funcionará apenas nos tablets.
D
e
se
n
vo
lv
e
n
d
o
p
ar
a
Ta
b
le
ts
AndroidManifest.xml 
Versão mínima do SDK: API Level 11 (Android 3.0)
Suportar apenas telas extra grandes
Gráficos e Animações
Property Animation e Renderscript
P
ro
p
e
rt
y 
A
n
im
at
io
n
Property Animation X View Animation
Property Animation foi introduzido no Android 3.0 e é mais
poderoso e flexível que o View Animation.
• View Animation é capaz apenas de animar objetos View em certos aspectos
como escala e rotação. A cor de fundo da View, por exemplo, não poderia ser
alterada;
• Property Animation é capaz de animar qualquer objeto e, como o próprio
nome diz, modifica uma propriedade (atributo) desse objeto de acordo com o
tempo;
• Assim, Property Animation permite que se defina:
• Duração: pode-se especificar a duração da animação;
• Interpolação de tempo: como os valores da propriedade são calculados
em termos de uma função do tempo corrente de animação;
• Contador de repetições e comportamento: repetir a animação uma
determinada quantidade de vezes. Pode-se executar de trás para frente;
• Conjuntos de animações: agrupar animações em conjuntos lógicos que
são executados em conjunto ou sequencialmente após certos atrasos;
• Taxa de atualização: com que frequência os frames da animação são
atualizados.C
P
ro
p
e
rt
y 
A
n
im
at
io
n
Como funciona
Utilizando o framework Property Animation para fazer animações
Animação linear
Animação não-linear
P
ro
p
e
rt
y 
A
n
im
at
io
n
Como funciona
ValueAnimator rastreia o tempo de animação e o valor da
propriedade que está sendo animada.
No exemplo da Animação Não-Linear
TimeInterpolator : AccelerateDecelerateInterpolator
TypeEvaluator : IntEvaluator
Para iniciar uma animação, cria-se um objeto ValueAnimator passando os
valores inicial e final da animação, bem como sua duração. Em seguida, invoca-
se o método start() para que a animação possa começar.
P
ro
p
e
rt
y 
A
n
im
at
io
n
Classes que compõem o framework
ValueAnimator – calcula os valores da animação e contém detalhes do tempo
de cada animação, informação sobre quando a animação se repete, listeners
que recebem eventos de atualização e possibilidade de atualização da
propriedade por tipo.
É importante notar que o ValueAnimator não modifica o valor da propriedade
que está sendo animada, apenas calcula os valores de acordo com o tempo.
Para isso, deve-se implementar o método de atualização para modificar a
propriedade de acordo com a lógica desejada.
ObjectAnimator – herda de ValueAnimator e permite
definir um objeto e propriedade para animar. Ao contrário
do ValueAnimator, essa classe atualiza a propriedade assim
que computa um novo valor para a animação. Usa-se
ObjectAnimator na maior parte do tempo, por questões de
facilidade.
AnimatorSet – agrupa animações e permite que possam ser executadas
sequencialmente ou com atrasos específicos.
P
ro
p
e
rt
y 
A
n
im
at
io
n
Evaluators e Interpolators
P
ro
p
e
rt
y 
A
n
im
at
io
n
Animando com ValueAnimator
No exemplo abaixo, calcula valores entre 0 e 1 durante 1000 milisegundos
quando o método start() é executado.
No exemplo abaixo, calcula valores entre startPropertyValue e 
endPropertyValue, usando a lógica provida por MyTypeEvaluator durante 1000 
milisegundos quando o método start() é executado.
P
ro
p
e
rt
y 
A
n
im
at
io
n
Animando com ValueAnimator
• Animator.AnimatorListener
• onAnimationStart() – chamado quando a animação começa.
• onAnimationEnd() – chamado quando a animação termina.
• onAnimationRepeat() – chamado quando a animação se repete.
• onAnimationCancel() – chamado quando a animação é
cancelada.
• ValueAnimator.AnimatorUpdateListener
• onAnimationUpdate() – chamado em cada frame da animação.
Pode-se capturar o valor calculado através do método
getAnimatedValue() e atualizar a propriedade de acordo.
Implementar esse listener é obrigatório se usar o ValueAnimator.
Exemplo de uso: objeto newBall, propriedade “alpha”, variando de 1 a 0 durante
250ms. Ao término da animação, objeto é removido da lista.
P
ro
p
e
rt
y 
A
n
im
at
io
n
Animando com ObjectAnimator
ObjectAnimator facilita para o desenvolvedor que não é mais obrigado a 
implementar o AnimatorUpdateListener, uma vez que a propriedade animada é 
atualizada automaticamente.
No exemplo abaixo, calcula valores entre 0 e 1 para a propriedade “alpha” do 
objeto foo durante 1000 milisegundos quando o método start() é executado.
• Getter e Setter da propriedade que está sendo animada
(“alpha”) precisam existir e devem ser do mesmo tipo que
o especificado no ObjectAnimator. No exemplo acima,
teríamos na classe do objeto foo:
• public void setAlpha(Float alpha);
• public Float getAlpha();
P
ro
p
e
rt
y 
A
n
im
at
io
n
Múltiplas animações com AnimatorSet
P
ro
p
e
rt
y 
A
n
im
at
io
n
Animando Views
• Propriedades da classe View que facilitam
animações:
• translationX e translationY;
• rotation, rotationX e rotationY;
• scaleX e scaleY;
• pivotX e pivotY;
• x e y;
• alpha.
Exemplo de uso: rotacionar a View “myView” em 360 graus.
P
ro
p
e
rt
y 
A
n
im
at
io
n
Declarando as Animações em XML
G
rá
fi
co
s
2
D
 e
 3
D
 
V
ie
w
 A
n
im
at
io
n
Veja também…
• Renderscript – Oferece alto desempenho 3D em nível nativo.
Disponível a partir do Android 3.0.
http://developer.android.com/guide/topics/graphics/renderscript.html;
• OpenGL ES API – Android suporta OpenGL ES 1.0, equivalente a versão
1.3 do OpenGL. Muito utilizado para jogos.
http://developer.android.com/guide/topics/graphics/opengl.html;
• Gráficos 2D – Atráves de objetos Drawable, é possível desenhar na tela
do dispositivo Android, bem como adicionar imagens.
http://developer.android.com/guide/topics/graphics/2d-graphics.html;
• View Animation - Permite animar objetos View com operações como
escala e rotação. No Android 3.0 pode ser substituído pelo framework de
Property Animation.
http://developer.android.com/guide/topics/graphics/view-
animation.html
Tendências
Tendências do mundo mobile
In
-A
p
p
 B
ill
in
g
Android Market oferece serviço de In-App Billing
Pode-se vender conteúdo digital dentro do aplicativo, como
itens ou fases de jogos e funcionalidades extras para
aplicativos. O share é de 70% para o desenvolvedor e 30% para
a Google em cima do valor da venda.
In
-A
p
p
 B
ill
in
g
Como funciona
Aplicação envia requisição de pagamento para a aplicação do
Android Market via IPC e recebe respostas na forma de
Broadcast Intents.
A implementação do serviço de In-App Billing se baseia, de modo geral, em
três componentes: 
• Um Service que processa as requisições de pagamento da aplicação e repassa
essas requisições para o serviço de In-App Billing;
• Um BroadcastReceiver que recebe as respostas de pagamento da aplicação
Android Market;
• Um componente de segurança que realiza tarefas relacionadas a segurança
do processo, como verificação da assinatura.
Opcionalmente, pode-se adicionarmais dois componentes para melhorar a 
experiência:
• Um Handler que processa notificações da compra, erros e status;
• Um Observer que envia callbacks para a aplicação para atualizar a interface
com o andamento da compra e informaçòes extras.
In
-A
p
p
 B
ill
in
g
Como funciona
Aplicação envia requisição de pagamento para a aplicação do
Android Market via IPC e recebe respostas na forma de
Broadcast Intents.
• Aplicação chama o método IPC
sendBillingRequest(), disponível na
interface MarketBillingService,
passando um Bundle como parâmetro;
• O Bundle contém vários pares de
chave-valor contendo informações
como tipo de requisição, item que está
sendo comprado e aplicação que está
fazendo a requisição.
In
-A
p
p
 B
ill
in
g
Como funciona
In-App Billing Requests: cada Bundle precisa ter uma chave
BILLING_REQUEST que especifica o tipo de requisição que está
sendo feita. São cinco tipos suportados:
In
-A
p
p
 B
ill
in
g
Como funciona
In-App Billing Responses: a resposta síncrona é um Bundle com
as seguintes chaves:
As mensagens de resposta assíncronas são enviadas na forma de Broadcast 
Intents e incluem as seguintes:
In
-A
p
p
 B
ill
in
g
Como funciona
O intent ACTION_PURCHASE_STATE_CHANGED provê para a
sua aplicação detalhes de uma ou mais transações. Eis um
exemplo da string JSON que é enviada:
In
-A
p
p
 B
ill
in
g
Sequências de mensagens
Exemplos de requisições realizadas pela aplicação e respostas
que são enviadas pela aplicação Android Market.
N
FC
 (
N
e
ar
 F
ie
ld
 C
o
m
m
u
n
ic
at
io
n
)
Pacote android.nfc
Permite a comunicação entre dispositivos (iniciador e alvo) com
distância de centímetros. O alvo é uma tag RFID ou peer-to-peer.
É uma das tecnologias mais promissoras no mundo mobile.
Pagamento pelo celular
N
FC
 (
N
e
ar
 F
ie
ld
 C
o
m
m
u
n
ic
at
io
n
)
Troca de informações
Casos de Uso
N
FC
 (
N
e
ar
 F
ie
ld
 C
o
m
m
u
n
ic
at
io
n
)
Ingressos para shows
Casos de Uso
N
FC
 (
N
e
ar
 F
ie
ld
 C
o
m
m
u
n
ic
at
io
n
)
Chaves
Casos de Uso
SI
P
 (
Se
ss
io
n
 In
it
ia
ti
o
n
 P
ro
to
co
l) Pacote android.net.sip
Android provê uma API que permite a realização de chamadas
através do protocolo SIP. Pode ser usado para videochamadas
ou mensageiros instantâneos.
• Para desenvolver uma aplicação SIP, é necessário que o
dispositivo esteja com o Android 2.3 ou superior;
• SIP roda sobre uma conexão de dados, seja Wi-Fi ou 3G.
Não há como testar SIP em um AVD;
• Cada participante em uma aplicação que se comunica
por SIP deve possuir uma conta SIP. Existem muitos
provedores SIP que oferecem planos diversos.
What’s Your Message?OBRIGADO!

Continue navegando