android aula 4
DESCRIPTION
Aula 4 de Android para a disciplina Tecnologias para Dispositivos Móveis da FATEC (João Pessoa - PB)TRANSCRIPT
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
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!