Android Aula 4

47
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 4) E-mail: [email protected] Site: http://erisvaldojunior.com Twitter: @erisvaldojunior

description

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

Transcript of Android Aula 4

Page 1: Android Aula 4

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 4)

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

Twitter: @erisvaldojunior

Page 2: Android Aula 4

Roteiro da Aula

Testes, Aplicações Multimídia e Web Apps em Android

TESTES APLICAÇÕES MULTIMÍDIA

WEB APPS

Page 3: Android Aula 4

TESTES

Testes em Android

Page 4: Android Aula 4

Test

es

em

An

dro

id

Estrutura de TestesA suíte de testes em Android é baseada no JUnit. Android provêextensões do JUnit para testes de componentes específicos.

Page 5: Android Aula 4

Test

es

em

An

dro

id

MonkeyRunnerFerramenta que provê uma API para Python que permite aodesenvolvedor escrever programas que controlam dispositivosAndroid ou emuladores externamente.

• Controle de Múltiplos Dispositivos – Executar um ou maistestes em múltiplos dispositivos ou emuladoressimultaneamente;

• Testes Funcionais – O desenvolvedor provê entradas(teclado, touch, etc) e visualiza saídas por screenshots;

• Testes de Regressão – verifica se uma aplicação estácorreta comparando com screenshots de referência;

• Automação Extensível – Pode ser estendido para criarsistemas completos de controle de dispositivos Android.

Page 6: Android Aula 4

Test

es

em

An

dro

id

Exemplo de Programa em MonkeyRunnerCódigo que conecta-se a um dispositivo, instala uma aplicaçãoAndroid, executa uma Activity, envia eventos de teclado para amesma e armazena o retorno (screenshots).

Page 7: Android Aula 4

Test

es

em

An

dro

id

UI/Application Exerciser MonkeyPrograma que executa no emulador ou dispositivo e geraentradas de usuário aleatórias (cliques, toques, gestos), além deeventos aleatórios de sistema. Ideal para Teste de Stress.

SINTAXE

EXEMPLO BÁSICO DE USO

Page 8: Android Aula 4

Test

es

em

An

dro

id

Testes em Android com o ADTO projeto de testes deve ser criado pelo ADT. OInstrumentationTestRunner é o executor dos casos de teste.

• Ao criar um projeto de testes pelo ADT, o plugin vincula a suíte detestes ao aplicativo de origem, inserindo automaticamente asinformações necessários no arquivo de manifesto;

• É possível importar as classes que estão sob teste rapidamente,permitindo sua inspeção;

• Executa seus testes sem sair do Eclipse. O ADT roda sua aplicação e suasuíte de testes automaticamente, mostrando os resultados em telasseparadas do Eclipse.

Page 9: Android Aula 4

Test

es

em

An

dro

id

Criando um projeto de Testes

Page 10: Android Aula 4

Test

es

em

An

dro

id

Criando a classe do Caso de Teste

Page 11: Android Aula 4

Test

es

em

An

dro

id

Exemplo de Classe de Teste

• Construtor – Obrigatório. Requerido pelo Android TestFramework;

• setUp() – sobrescreve o setUp() do Junit. Inicializa oambiente antes da execução dos testes;

• testPreconditions() – define um pequeno teste queassegura que a aplicação iniciou corretamente;

• testText() – Exemplo de teste unitário real para interfaces.Assegura que o que está sendo mostrado na tela é o mesmoque está contido nos recursos da aplicação (strings.xml).

Page 12: Android Aula 4

Test

es

em

An

dro

idExemplo de Classe de Teste

Construtor

Inicialização de variáveis

Pré-condições

Código de teste

Page 13: Android Aula 4

Test

es

em

An

dro

idExecutando o Teste

Page 14: Android Aula 4

Test

es

em

An

dro

id

Testando uma Activity

• ActivityInstrumentationTestCase2 – Sua classe de testes deuma Activity deve estender essa classe;

• ActivityUnitTestCase – Testa uma Activity isolada. Usadopara realizar testes unitários que não interagem com oAndroid (testes isolados).

Como testar?

O que testar?

• Validar entradas – verificar entradas aceitáveis em EditTexte mensagens de erro mostradas para entradas inválidas;• Eventos de Ciclo de vida – retorno de eventos comoonCreate() e onCick();• Tamanhos de tela e resoluções – usar AVDs e realizarvários deploys para verificar o layout das Activities.

Page 15: Android Aula 4

Test

es

em

An

dro

id

Testando um Content Provider

• ProviderTestCase2 – Sua classe de testes de umContentProvider deve estender essa classe;

• MockContentResolver – possibilita a criação de umainstância do provedor de conteúdo mas com dados de teste.

Como testar?

O que testar?

• Interações comuns do provedor de conteúdo – onCreate(),getType(), query(), insert(), delete() e update();

• URIs e Constantes – Testar todas as URIs e constantesoferecidas pelo provider.

Page 16: Android Aula 4

Test

es

em

An

dro

id

Testando um Service

• ServiceTestCase – Sua classe de testes de um Service deveestender essa classe.

Como testar?

O que testar?

• Múltiplas chamadas a startService() – Testar se o serviçoconsegue ligar com múltiplas chamadas a startService().Apenas a primeira invoca o onCreate(), mas todas chamam oonStartCommand().

• Parada do serviço – Testar se o serviço para de executar nomomento correto.

Page 17: Android Aula 4

Aplicações Multimídia

Aúdio, Vídeo e Câmera em Android

Page 18: Android Aula 4

Form

ato

s d

e M

ídia

Su

po

rtad

os Core Media Formats

Formatos de mídia suportados por todos os dispositivos Android.

Page 19: Android Aula 4

Áu

dio

e V

íde

o e

m A

nd

roid

Reprodução e Gravação de Áudio e Vídeo

Reprodução Gravação

MediaPlayer MediaRecorder

Page 20: Android Aula 4

Re

pro

du

ção

de

Áu

dio

Reproduzindo Áudio de um Raw ResourceInsere-se o arquivo na pasta res/raw, sendo possível localizá-locom a classe R gerada pelo Android.

MediaPlayer mp = MediaPlayer.create(context, R.raw.nome_arquivo);mp.start();

Iniciar a execução

Pausar e recomeçar

mp.pause();mp.start();

Parar e recomeçar

mp.stop();

mp.reset();mp.prepare();mp.start();

Page 21: Android Aula 4

Re

pro

du

ção

de

Áu

dio

Reproduzindo Áudio de um Arquivo ou StreamAtravés do método setDataSource() do MediaPlayer, define-se ocaminho do arquivo (local) ou URL (web).

MediaPlayer mp = new MediaPlayer();

mp.setDataSource(CAMINHO_ARQUIVO);mp.prepare();mp.start();

Iniciar a execução

Page 22: Android Aula 4

Re

pro

du

ção

de

Áu

dio

Reproduzindo Áudio de um conteúdo JETJET é uma engine musical para criar reproduções de áudiointerativas.

JetPlayer myJet = JetPlayer.getJetPlayer();

byte segmentId = 0;myJet.loadJetFile(CAMINHO_ARQUIVO); // ex: “/sdcard/level1.jet”myJet.queueJetSegment(5, -1, 1, -1, 0, segmentId);myJet.play();

Iniciar a execução

Page 23: Android Aula 4

Re

pro

du

ção

de

Áu

dio

Reproduzindo Áudio de um conteúdo JETUsa-se a ferramenta JetCreator (parte do Android SDK) para criarreproduções de áudio interativas.

Page 24: Android Aula 4

Re

pro

du

ção

de

Áu

dio

Reproduzindo Áudio de um conteúdo JETO Android SDK possui o exemplo JetBoy, um jogo que utiliza aengine JET para produzir sua trilha sonora e eventos.

Trecho de código do JetBoy

Page 25: Android Aula 4

Gra

vaçã

o d

e Á

ud

ioCaptura de Áudio em 10 passos

Passo Descrição

1. Criar uma instância de MediaRecorder

2. Criar uma instância de ContentValues e colocar algumas propriedades padrão como TITLE, TIMESTAMP e MIME_TYPE

3. Usar ContentResolver para definir caminho do arquivo no qual os dados serão armazenados

4. Definir AudioSource

5. Definir OutputFormat

6. Definir AudioEncoder

7. Chamar o prepare() da instância do MediaRecorder

8. Iniciar a captura de áudio com start()

9. Finalizar a captura de áudio com stop()

10. Liberar a instância do MediaRecorder com release()

Page 26: Android Aula 4

Gra

vaçã

o d

e Á

ud

ioCaptura de Áudio em Código

Page 27: Android Aula 4

Exe

rcíc

ioMusicDroid – Parte I

Selecionar uma música no cartão de memória e executá-la.

Page 28: Android Aula 4

Exe

rcíc

ioMusicDroid – Parte II

Executar a música em background (como serviço)

Page 29: Android Aula 4

Exe

rcíc

ioMusicDroid – Parte III

Adicionar controles básicos para a música em execução

Page 30: Android Aula 4

Re

pro

du

ção

de

Víd

eo

Component VideoView

Page 31: Android Aula 4

Cap

tura

de

Víd

eo

Câmera Demo

FrameLayout

Page 32: Android Aula 4

Web Apps

Tendência para combater a fragmentação do mundo mobile

Page 33: Android Aula 4

Vis

ão G

era

l de

We

b A

pp

sDois caminhosAplicação que roda no lado cliente vs Aplicação Web.

Lado cliente

Android SDK

Instalar .apk no dispositivo

Aplicação Web

Android Browser

Sem instalação

Basicamente, a diferença seria:

Page 34: Android Aula 4

Vis

ão G

era

l de

We

b A

pp

sDois caminhosNo Android uma aplicação Web pode rodar dentro de umaaplicacão cliente.

Page 35: Android Aula 4

Dif

ere

nte

s te

las

e W

eb

Ap

ps

Usando metadados para a ViewportA Viewport é a área na qual a página Web é desenhada.

Exemplo de configuração da viewport na Web App

Page 36: Android Aula 4

Dif

ere

nte

s te

las

e W

eb

Ap

ps

Usando metadados para a Viewport

Page 37: Android Aula 4

Dif

ere

nte

s te

las

e W

eb

Ap

ps

Usando metadados para a Viewport

Page 38: Android Aula 4

Dif

ere

nte

s te

las

e W

eb

Ap

ps

CSS de acordo com a resolução do dispositivo

Page 39: Android Aula 4

Dif

ere

nte

s te

las

e W

eb

Ap

ps

JavaScript de acordo com a resolução do dispositivo

Page 40: Android Aula 4

We

b A

pp

s e

m W

eb

Vie

wandroid.webkit.WebViewExtensão de View que permite mostrar páginas Web comoparte do layout de uma Activity.

Adicionando uma WebView na sua aplicação

main.xml

MyActivity.java

Page 41: Android Aula 4

We

b A

pp

s e

m W

eb

Vie

w

JavaScript em uma WebViewCaso a página que esteja sendo carregada na WebView tenhacódigo JavaScript, o recurso precisa estar habilitado.

Associando código JavaScript a código Android

Page 42: Android Aula 4

We

b A

pp

s e

m W

eb

Vie

wLidando com navegação de páginasQuando o usuário clica em um link no WebView, ocomportamento padrão é abrir o browser e acessá-lo.

Implementar shouldOverrideUrlLoading() de WebViewClient

Criar uma instância de um novo WebViewClient

Page 43: Android Aula 4

We

b A

pp

s e

m W

eb

Vie

wHistórico de PáginasQuando sobrescreve-se o método shouldOverrideUrlLoading()do WebView, automaticamente acumula-se um histórico depáginas visitadas.

Navega-se nesse histórico através dos métodos goBack() egoForward() do WebView.

Verificar se o usuári o pressionou a tecla BACK para acessar a página anterior do histórico dentro do WebView da aplicação.

Page 44: Android Aula 4

De

pu

ran

do

We

b A

pp

sConsole logVisualizado no Browser e no LogCat é mostrado com a tag“browser”.

Page 45: Android Aula 4

De

pu

ran

do

We

b A

pp

sConsole APIs em um WebViewA partir do Android 2.2 (API Level 8), implementa-se umWebChromeClient e substitui-se o métodoonConsoleMessage() .

Dessa forma, apresenta-se o Log da maneira que desejar quanto às aplicações Web.

Page 46: Android Aula 4

Me

lho

res

prá

tica

s (W

eb

Ap

ps)

As melhores práticas ao desenvolver Web Apps

• Redirecionar dispositivos móveis para uma versãodedicada de seu site – Obter “User Agent” do usuárioque acessa e fornecê-lo a melhor experiência;

• Usar DOCTYPE apropriado para dispositivos móveis;

• Usar metadados de Viewport para redimensionar apágina adequadamente;

• Evitar mútliplas requisições de arquivos;

• Usar layout vertical e linear.

Page 47: Android Aula 4

What’s Your Message?OBRIGADO!