48
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: [email protected] Site: http://erisvaldojunior.com Twitter: @erisvaldojunior

Android Aula 5

Embed Size (px)

DESCRIPTION

Aula 5 de Android para a disciplina Tecnologias para Dispositivos Móveis da FATEC (João Pessoa - PB)

Citation preview

Page 1: Android Aula 5

Erisvaldo Gadelha Saraiva Júnior

Faculdade de Tecnologia de João Pessoa (FATEC-JP)Especialização em Desenvolvimento para Dispositivos MóveisDisciplina: Tecnologias para Dispositivos Móveis

Android (Parte 5)

E-mail: [email protected]: http://erisvaldojunior.com

Twitter: @erisvaldojunior

Page 2: Android Aula 5

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

Page 3: Android Aula 5

ANDROID 3.0

Visão geral e recursos do Android 3.0

Page 4: Android Aula 5

No

vid

ade

s d

o A

nd

roid

3.0

Novos recursos para o UsuárioNova interface, otimizada para os tablets

• System Bar• Action Bar• 5 Homes Customizáveis• Aplicações recentes

Page 5: Android Aula 5

No

vid

ade

s d

o A

nd

roid

3.0

Novos recursos para o Usuário

• Novo Teclado• Manipulação de Textos• Mais conectividade• Aplicações-chave melhores

Page 6: Android Aula 5

No

vid

ade

s d

o A

nd

roid

3.0

Novos recursos para o UsuárioAplicações-chave foram aperfeiçoadas

Page 7: Android Aula 5

No

vid

ade

s d

o A

nd

roid

3.0

Novos recursos para o DesenvolvedorNovo framework de UI, refinado para tablets

• Activity Fragments• Widgets remodelados• Action Bar customizável• Notificações mais ricas• Seleção múltipla, clipboarde recurso de drag-and-drop

Page 8: Android Aula 5

No

vid

ade

s d

o A

nd

roid

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

Page 9: Android Aula 5

AP

I Le

vel 1

1

FragmentsComponente que permite a separação de elementos distintos deuma Activity em módulos com interfaces e ciclos de vida próprios.

Pode-se combinar múltiplos fragmentos em uma única Activity paraconstruir uma interface de vários painéis na qual cada painelgerencia 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 animarFragments dentro de uma Activity;

• Por meio de layouts alternativos, pode-se combinarFragments baseado no tamanho e orientação da tela;

• Fragments tem acesso direto a sua Activity e podeacessar a Action Bar da Activity.

Page 10: Android Aula 5

AP

I Le

vel 1

1

LoadersPermitem, de maneira assíncrona, facilmente carregar dados emum 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 novosresultados a medida que o conteúdo muda;

• Reconectam-se automaticamente ao último cursor doLoader quando são recriados após uma mudança deconfiguração. Assim, não necessitam reconsultar os dados.

Page 11: Android Aula 5

AP

I Le

vel 1

1

Action BarSubstitui a barra de título na parte superior da Activity. Mostra oícone da aplicação e provê uma nova interface para os itens domenu 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 umacaixa de pesquisa (Action View);

• Adicionar uma ação para o ícone da aplicação bem comosubstituí-lo por um ícone personalizado;

• Opções de navegação para os fragmentos da Activity;

• Personalizar a Action Bar com temas e fundos.

Page 12: Android Aula 5

AP

I Le

vel 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 umContent Provider. Dados complexos como imagens ou estruturas podemser 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 classeClipData, que possui métodos como newPlainText(), newUri() enewIntent();

• Através do método setPrimaryClip(), atribui-se um ClipData a umClipboard. O conteúdo pode ser obtido através do getPrimaryClip();

• O Clipboard armazena possui apenas um objeto ClipData mas esseobjeto pode ser composto por vários itens (ClipData.Item).

Page 13: Android Aula 5

AP

I Le

vel 1

1

Drag and DropDados podem ser transferidos de um lugar para outro

• Traduzindo para o desenvolvedor: objetos ClipData podem ser movidosde uma View para outra;

• Cada operação Drag and Drop é definida por um objeto DragEvent, comestados como ACTION_DRAG_STARTED, ACTION_DRAG_ENTERED eACTION_DROP definindo seu ciclo de vida;

• O método startDrag() pode ser chamado em uma View provendo umClipData que representa a informação a ser transferida;

• O método setOnDragListener() permite que a View registre umOnDragListener que permitirá a recepção de objetos Drag and Drop. Olistener obriga a implementação do método onDrag().

Page 14: Android Aula 5

AP

I Le

vel 1

1

Framework de AnimaçãoNovo e flexível framework de animação para objetos comoFragment, View e Drawable.

• Pode-se definir duração, quantidade de repetições, taxa deatualização, atraso, etc;

• Através da classe LayoutTransition é possível estabelecer animaçõesautomáticas para mudanças que foram realizadas no layout da Activity;

• Para definir animações personalizadas, usa-se o métodosetAnimation() de LayoutTransition, passando-se um animadorpersonalizado (objeto da classe ValueAnimator ou ObjectAnimator).

Page 15: Android Aula 5

AP

I Le

vel 1

1

Framework estendido de UIDiversas novidades para o framework de interface gráfica

• Seleção múltipla para ListView e GridView através do métodosetChoiceMode() e o modo CHOICE_MODE_MULTIPLE_MODAL, alémde registrar-se um MultiChoiceModeListener;

• Novas APIs para transformar Views 2D e 3D, através de métodoscomo setAlpha(), setPivotX(), setRotationX() e setScaleX();

• Novos temas holográficos que são atribuídos como base padrãoquando android:minSdkVersion ou android:targetSdkVersion estãosetados para “11” no AndroidManifest.xml;

• Novos widgets como AdapterViewAnimation, AdapterViewFlipper,CalendarView, ListPopupWindow, NumberPicker, PopupMenu,SearchView e StackView.

Page 16: Android Aula 5

AP

I Le

vel 1

1

Suporte aprimorado ao JSONClasses JsonReader e JsonWriter adicionados ao pacote org.json.

• Cria-se uma instância de JsonReader passando umInputStreamReader como parâmetro;

• A leitura começa com beginObject() e o nome da chave é lido comnextName(). O valor é lido de acordo com o tipo, ex: nextInt(),nextString(), etc;

• Esse processo é repetido enquanto hasNext() retorna verdadeiro.

Page 17: Android Aula 5

AP

I Le

vel 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.

Page 18: Android Aula 5

Oti

miz

and

oap

licaç

õ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 oandroid:sdkTargetVersion=“11” no AndroidManifest,fazendo com que a aplicação use o novo tema holográficoquando 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 querodam Android 3.0, uma vez que as aplicações Android são “forward-

compatible”.

Page 19: Android Aula 5

Oti

miz

and

oap

licaç

õ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 paraorientação landscape (considerada normal nos tablets);

• Usa-se o qualificador xlarge para telas extra-grandes (tablets) eland para a orientação landscape. Pode-se prover imagens, porexemplo, para res/layout-xlarge-land/;

• Reconsiderar posicionamento dos botões para adequar-se aousuá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 asmelhores práticas para independência de tela.

Page 20: Android Aula 5

De

sen

volv

en

do

par

aA

nd

roid

3.0 Atualizando ou desenvolvendo uma nova

aplicação para Android 3.0

• Declarar android:minSdkVersion=“11” na tag <uses-sdk> doAndroidManifest.xml, habilitando o novo tema holográfico e Action Bar nasActivities;

• 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 deClipboard, Renderscript, etc;

• Publicar a aplicação para telas extra grandes (xlarge), decidindo se a mesmaserá portável para smartphones ou funcionará apenas nos tablets.

Page 21: Android Aula 5

De

sen

volv

en

do

par

aTa

ble

ts

AndroidManifest.xml

Versão mínima do SDK: API Level 11 (Android 3.0)

Suportar apenas telas extra grandes

Page 22: Android Aula 5

Gráficos e Animações

Property Animation e Renderscript

Page 23: Android Aula 5

Pro

pe

rty

An

imat

ion

Property Animation X View AnimationProperty Animation foi introduzido no Android 3.0 e é maispoderoso e flexível que o View Animation.

• View Animation é capaz apenas de animar objetos View em certos aspectoscomo escala e rotação. A cor de fundo da View, por exemplo, não poderia seralterada;

• Property Animation é capaz de animar qualquer objeto e, como o próprionome diz, modifica uma propriedade (atributo) desse objeto de acordo com otempo;

• 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 calculadosem termos de uma função do tempo corrente de animação;• Contador de repetições e comportamento: repetir a animação umadeterminada quantidade de vezes. Pode-se executar de trás para frente;• Conjuntos de animações: agrupar animações em conjuntos lógicos quesão executados em conjunto ou sequencialmente após certos atrasos;• Taxa de atualização: com que frequência os frames da animação sãoatualizados.C

Page 24: Android Aula 5

Pro

pe

rty

An

imat

ion

Como funcionaUtilizando o framework Property Animation para fazer animações

Animação linear

Animação não-linear

Page 25: Android Aula 5

Pro

pe

rty

An

imat

ion

Como funcionaValueAnimator rastreia o tempo de animação e o valor dapropriedade que está sendo animada.

No exemplo da Animação Não-Linear

TimeInterpolator : AccelerateDecelerateInterpolatorTypeEvaluator : IntEvaluator

Para iniciar uma animação, cria-se um objeto ValueAnimator passando osvalores 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.

Page 26: Android Aula 5

Pro

pe

rty

An

imat

ion

Classes que compõem o framework

ValueAnimator – calcula os valores da animação e contém detalhes do tempode cada animação, informação sobre quando a animação se repete, listenersque recebem eventos de atualização e possibilidade de atualização dapropriedade por tipo.

É importante notar que o ValueAnimator não modifica o valor da propriedadeque 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 apropriedade de acordo com a lógica desejada.

ObjectAnimator – herda de ValueAnimator e permitedefinir um objeto e propriedade para animar. Ao contráriodo ValueAnimator, essa classe atualiza a propriedade assimque computa um novo valor para a animação. Usa-seObjectAnimator na maior parte do tempo, por questões defacilidade.

AnimatorSet – agrupa animações e permite que possam ser executadassequencialmente ou com atrasos específicos.

Page 27: Android Aula 5

Pro

pe

rty

An

imat

ion

Evaluators e Interpolators

Page 28: Android Aula 5

Pro

pe

rty

An

imat

ion

Animando com ValueAnimator

No exemplo abaixo, calcula valores entre 0 e 1 durante 1000 milisegundosquando 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.

Page 29: Android Aula 5

Pro

pe

rty

An

imat

ion

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étodogetAnimatedValue() 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 durante250ms. Ao término da animação, objeto é removido da lista.

Page 30: Android Aula 5

Pro

pe

rty

An

imat

ion

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 queo especificado no ObjectAnimator. No exemplo acima,teríamos na classe do objeto foo:

• public void setAlpha(Float alpha);• public Float getAlpha();

Page 31: Android Aula 5

Pro

pe

rty

An

imat

ion

Múltiplas animações com AnimatorSet

Page 32: Android Aula 5

Pro

pe

rty

An

imat

ion

Animando Views

• Propriedades da classe View que facilitamanimaçõ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.

Page 33: Android Aula 5

Pro

pe

rty

An

imat

ion

Declarando as Animações em XML

Page 34: Android Aula 5

Grá

fico

s2

D e

3D

V

iew

An

imat

ion

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ão1.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 telado 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 comoescala e rotação. No Android 3.0 pode ser substituído pelo framework deProperty Animation.http://developer.android.com/guide/topics/graphics/view-animation.html

Page 35: Android Aula 5

Tendências

Tendências do mundo mobile

Page 36: Android Aula 5

In-A

pp

Bill

ing

Android Market oferece serviço de In-App BillingPode-se vender conteúdo digital dentro do aplicativo, comoitens ou fases de jogos e funcionalidades extras paraaplicativos. O share é de 70% para o desenvolvedor e 30% paraa Google em cima do valor da venda.

Page 37: Android Aula 5

In-A

pp

Bill

ing

Como funcionaAplicação envia requisição de pagamento para a aplicação doAndroid Market via IPC e recebe respostas na forma deBroadcast Intents.

A implementação do serviço de In-App Billing se baseia, de modo geral, emtrês componentes:

• Um Service que processa as requisições de pagamento da aplicação e repassaessas requisições para o serviço de In-App Billing;

• Um BroadcastReceiver que recebe as respostas de pagamento da aplicaçãoAndroid Market;

• Um componente de segurança que realiza tarefas relacionadas a segurançado processo, como verificação da assinatura.

Opcionalmente, pode-se adicionar mais 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 interfacecom o andamento da compra e informaçòes extras.

Page 38: Android Aula 5

In-A

pp

Bill

ing

Como funcionaAplicação envia requisição de pagamento para a aplicação doAndroid Market via IPC e recebe respostas na forma deBroadcast Intents.

• Aplicação chama o método IPCsendBillingRequest(), disponível nainterface MarketBillingService,passando um Bundle como parâmetro;

• O Bundle contém vários pares dechave-valor contendo informaçõescomo tipo de requisição, item que estásendo comprado e aplicação que estáfazendo a requisição.

Page 39: Android Aula 5

In-A

pp

Bill

ing

Como funcionaIn-App Billing Requests: cada Bundle precisa ter uma chaveBILLING_REQUEST que especifica o tipo de requisição que estásendo feita. São cinco tipos suportados:

Page 40: Android Aula 5

In-A

pp

Bill

ing

Como funcionaIn-App Billing Responses: a resposta síncrona é um Bundle comas seguintes chaves:

As mensagens de resposta assíncronas são enviadas na forma de Broadcast Intents e incluem as seguintes:

Page 41: Android Aula 5

In-A

pp

Bill

ing

Como funcionaO intent ACTION_PURCHASE_STATE_CHANGED provê para asua aplicação detalhes de uma ou mais transações. Eis umexemplo da string JSON que é enviada:

Page 42: Android Aula 5

In-A

pp

Bill

ing

Sequências de mensagensExemplos de requisições realizadas pela aplicação e respostasque são enviadas pela aplicação Android Market.

Page 43: Android Aula 5

NFC

(N

ear

Fie

ld C

om

mu

nic

atio

n)

Pacote android.nfcPermite a comunicação entre dispositivos (iniciador e alvo) comdistância de centímetros. O alvo é uma tag RFID ou peer-to-peer.É uma das tecnologias mais promissoras no mundo mobile.

Pagamento pelo celular

Page 44: Android Aula 5

NFC

(N

ear

Fie

ld C

om

mu

nic

atio

n)

Troca de informações

Casos de Uso

Page 45: Android Aula 5

NFC

(N

ear

Fie

ld C

om

mu

nic

atio

n)

Ingressos para shows

Casos de Uso

Page 46: Android Aula 5

NFC

(N

ear

Fie

ld C

om

mu

nic

atio

n)

Chaves

Casos de Uso

Page 47: Android Aula 5

SIP

(Se

ssio

n In

itia

tio

n P

roto

col) Pacote android.net.sip

Android provê uma API que permite a realização de chamadasatravés do protocolo SIP. Pode ser usado para videochamadasou mensageiros instantâneos.

• Para desenvolver uma aplicação SIP, é necessário que odispositivo 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 comunicapor SIP deve possuir uma conta SIP. Existem muitosprovedores SIP que oferecem planos diversos.

Page 48: Android Aula 5

What’s Your Message?OBRIGADO!