Android Aula 4

Post on 07-Jun-2015

6.891 views 5 download

description

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

Transcript of 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: erisvaldojunior@gmail.comSite: http://erisvaldojunior.com

Twitter: @erisvaldojunior

Roteiro da Aula

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

TESTES APLICAÇÕES MULTIMÍDIA

WEB APPS

TESTES

Testes em Android

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.

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.

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

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

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.

Test

es

em

An

dro

id

Criando um projeto de Testes

Test

es

em

An

dro

id

Criando a classe do Caso de Teste

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

Test

es

em

An

dro

idExemplo de Classe de Teste

Construtor

Inicialização de variáveis

Pré-condições

Código de teste

Test

es

em

An

dro

idExecutando o Teste

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.

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.

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.

Aplicações Multimídia

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

Form

ato

s d

e M

ídia

Su

po

rtad

os Core Media Formats

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

Á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

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();

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

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

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.

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

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

Gra

vaçã

o d

e Á

ud

ioCaptura de Áudio em Código

Exe

rcíc

ioMusicDroid – Parte I

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

Exe

rcíc

ioMusicDroid – Parte II

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

Exe

rcíc

ioMusicDroid – Parte III

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

Re

pro

du

ção

de

Víd

eo

Component VideoView

Cap

tura

de

Víd

eo

Câmera Demo

FrameLayout

Web Apps

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

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:

Vis

ão G

era

l de

We

b A

pp

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

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

Dif

ere

nte

s te

las

e W

eb

Ap

ps

Usando metadados para a Viewport

Dif

ere

nte

s te

las

e W

eb

Ap

ps

Usando metadados para a Viewport

Dif

ere

nte

s te

las

e W

eb

Ap

ps

CSS de acordo com a resolução do dispositivo

Dif

ere

nte

s te

las

e W

eb

Ap

ps

JavaScript de acordo com a resolução do dispositivo

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

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

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

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.

De

pu

ran

do

We

b A

pp

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

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.

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.

What’s Your Message?OBRIGADO!