Buscar

Android - Aula 4 - 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 47 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 47 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 47 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 4)
E-mail: erisvaldojunior@gmail.com
Site: 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
Te
st
e
s 
e
m
 A
n
d
ro
id
Estrutura de Testes
A suíte de testes em Android é baseada no JUnit. Android provê
extensões do JUnit para testes de componentes específicos.
Te
st
e
s 
e
m
 A
n
d
ro
id
MonkeyRunner
Ferramenta que provê uma API para Python que permite ao
desenvolvedor escrever programas que controlam dispositivos
Android ou emuladores externamente.
• Controle de Múltiplos Dispositivos – Executar um ou mais
testes em múltiplos dispositivos ou emuladores
simultaneamente;
• 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 criar
sistemas completos de controle de dispositivos Android.
Te
st
e
s 
e
m
 A
n
d
ro
id
Exemplo de Programa em MonkeyRunner
Código que conecta-se a um dispositivo, instala uma aplicação
Android, executa uma Activity, envia eventos de teclado para a
mesma e armazena o retorno (screenshots).
Te
st
e
s 
e
m
 A
n
d
ro
id
UI/Application Exerciser Monkey
Programa que executa no emulador ou dispositivo e gera
entradas de usuário aleatórias (cliques, toques, gestos), além de
eventos aleatórios de sistema. Ideal para Teste de Stress.
SINTAXE
EXEMPLO BÁSICO DE USO
Te
st
e
s 
e
m
 A
n
d
ro
id
Testes em Android com o ADT
O projeto de testes deve ser criado pelo ADT. O
InstrumentationTestRunner é o executor dos casos de teste.
• Ao criar um projeto de testes pelo ADT, o plugin vincula a suíte de
testes ao aplicativo de origem, inserindo automaticamente as
informaçõ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 sua
suíte de testes automaticamente, mostrando os resultados em telas
separadas do Eclipse.
Te
st
e
s 
e
m
 A
n
d
ro
id
Criando um projeto de Testes
Te
st
e
s 
e
m
 A
n
d
ro
id
Criando a classe do Caso de Teste
Te
st
e
s 
e
m
 A
n
d
ro
id
Exemplo de Classe de Teste
• Construtor – Obrigatório. Requerido pelo Android Test
Framework;
• setUp() – sobrescreve o setUp() do Junit. Inicializa o
ambiente antes da execução dos testes;
• testPreconditions() – define um pequeno teste que
assegura 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 mesmo
que está contido nos recursos da aplicação (strings.xml).
Te
st
e
s 
e
m
 A
n
d
ro
id
Exemplo de Classe de Teste
Construtor
Inicialização de variáveis
Pré-condições
Código de teste
Te
st
e
s 
e
m
 A
n
d
ro
id
Executando o Teste
Te
st
e
s 
e
m
 A
n
d
ro
id
Testando uma Activity
• ActivityInstrumentationTestCase2 – Sua classe de testes de
uma Activity deve estender essa classe;
• ActivityUnitTestCase – Testa uma Activity isolada. Usado
para realizar testes unitários que não interagem com o
Android (testes isolados).
Como testar?
O que testar?
• Validar entradas – verificar entradas aceitáveis em EditText
e mensagens de erro mostradas para entradas inválidas;
• Eventos de Ciclo de vida – retorno de eventos como
onCreate() e onCick();
• Tamanhos de tela e resoluções – usar AVDs e realizar
vários deploys para verificar o layout das Activities.
Te
st
e
s 
e
m
 A
n
d
ro
id
Testando um Content Provider
• ProviderTestCase2 – Sua classe de testes de um
ContentProvider deve estender essa classe;
• MockContentResolver – possibilita a criação de uma
instâ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 constantes
oferecidas pelo provider.
Te
st
e
s 
e
m
 A
n
d
ro
id
Testando um Service
• ServiceTestCase – Sua classe de testes de um Service deve
estender essa classe.
Como testar?
O que testar?
• Múltiplas chamadas a startService() – Testar se o serviço
consegue ligar com múltiplas chamadas a startService().
Apenas a primeira invoca o onCreate(), mas todas chamam o
onStartCommand().
• Parada do serviço – Testar se o serviço para de executar no
momento correto.
Aplicações Multimídia
Aúdio, Vídeo e Câmera em Android
Fo
rm
at
o
s 
d
e
 M
íd
ia
 S
u
p
o
rt
ad
o
s Core Media Formats
Formatos de mídia suportados por todos os dispositivos Android.
Á
u
d
io
 e
 V
íd
e
o
 e
m
 A
n
d
ro
id
Reprodução e Gravação de Áudio e Vídeo
Reprodução Gravação
MediaPlayer MediaRecorder
R
e
p
ro
d
u
çã
o
 d
e
 Á
u
d
io
Reproduzindo Áudio de um Raw Resource
Insere-se o arquivo na pasta res/raw, sendo possível localizá-lo
com 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();
R
e
p
ro
d
u
çã
o
 d
e
 Á
u
d
io
Reproduzindo Áudio de um Arquivo ou Stream
Através do método setDataSource() do MediaPlayer, define-se o
caminho do arquivo (local) ou URL (web).
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(CAMINHO_ARQUIVO);
mp.prepare();
mp.start();
Iniciar a execução
R
e
p
ro
d
u
çã
o
 d
e
 Á
u
d
io
Reproduzindo Áudio de um conteúdo JET
JET é uma engine musical para criar reproduções de áudio
interativas.
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
R
e
p
ro
d
u
çã
o
 d
e
 Á
u
d
io
Reproduzindo Áudio de um conteúdo JET
Usa-se a ferramenta JetCreator (parte do Android SDK) para criar
reproduções de áudio interativas.
R
e
p
ro
d
u
çã
o
 d
e
 Á
u
d
io
Reproduzindo Áudio de um conteúdo JET
O Android SDK possui o exemplo JetBoy, um jogo que utiliza a
engine JET para produzir sua trilha sonora e eventos.
Trecho de código do JetBoy
G
ra
va
çã
o
 d
e
 Á
u
d
io
Captura 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()
G
ra
va
çã
o
 d
e
 Á
u
d
io
Captura de Áudio em Código
Ex
e
rc
íc
io
MusicDroid – Parte I
Selecionar uma música no cartão de memória e executá-la.
Ex
e
rc
íc
io
MusicDroid – Parte II
Executar a música em background (como serviço)
Ex
e
rc
íc
io
MusicDroid – Parte III
Adicionar controles básicos para a música em execução
R
e
p
ro
d
u
çã
o
 d
e
 V
íd
e
o
Component VideoView
C
ap
tu
ra
 d
e
 V
íd
e
o
Câmera Demo
FrameLayout
Web Apps
Tendência para combater a fragmentação do mundo mobile
V
is
ão
 G
e
ra
l d
e
 W
e
b
 A
p
p
s
Dois caminhos
Aplicaçã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:
V
is
ão
 G
e
ral d
e
 W
e
b
 A
p
p
s
Dois caminhos
No Android uma aplicação Web pode rodar dentro de uma
aplicacão cliente.
D
if
e
re
n
te
s 
te
la
s 
e
 W
e
b
 A
p
p
s
Usando metadados para a Viewport
A Viewport é a área na qual a página Web é desenhada.
Exemplo de configuração da viewport na Web App
D
if
e
re
n
te
s 
te
la
s 
e
 W
e
b
 A
p
p
s
Usando metadados para a Viewport
D
if
e
re
n
te
s 
te
la
s 
e
 W
e
b
 A
p
p
s
Usando metadados para a Viewport
D
if
e
re
n
te
s 
te
la
s 
e
 W
e
b
 A
p
p
s
CSS de acordo com a resolução do dispositivo
D
if
e
re
n
te
s 
te
la
s 
e
 W
e
b
 A
p
p
s
JavaScript de acordo com a resolução do dispositivo
W
e
b
 A
p
p
s 
e
m
 W
e
b
V
ie
w
android.webkit.WebView
Extensão de View que permite mostrar páginas Web como
parte do layout de uma Activity.
Adicionando uma WebView na sua aplicação
main.xml
MyActivity.java
W
e
b
 A
p
p
s 
e
m
 W
e
b
V
ie
w
JavaScript em uma WebView
Caso a página que esteja sendo carregada na WebView tenha
código JavaScript, o recurso precisa estar habilitado.
Associando código JavaScript a código Android
W
e
b
 A
p
p
s 
e
m
 W
e
b
V
ie
w
Lidando com navegação de páginas
Quando o usuário clica em um link no WebView, o
comportamento padrão é abrir o browser e acessá-lo.
Implementar shouldOverrideUrlLoading() de WebViewClient
Criar uma instância de um novo WebViewClient
W
e
b
 A
p
p
s 
e
m
 W
e
b
V
ie
w
Histórico de Páginas
Quando sobrescreve-se o método shouldOverrideUrlLoading()
do WebView, automaticamente acumula-se um histórico de
páginas visitadas.
Navega-se nesse histórico através dos métodos goBack() e
goForward() 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.
D
e
p
u
ra
n
d
o
 W
e
b
 A
p
p
s
Console log
Visualizado no Browser e no LogCat é mostrado com a tag
“browser”.
D
e
p
u
ra
n
d
o
 W
e
b
 A
p
p
s
Console APIs em um WebView
A partir do Android 2.2 (API Level 8), implementa-se um
WebChromeClient e substitui-se o método
onConsoleMessage() .
Dessa forma, apresenta-se o Log da maneira que desejar quanto às 
aplicações Web.
M
e
lh
o
re
s 
p
rá
ti
ca
s 
(W
e
b
 A
p
p
s)
As melhores práticas ao desenvolver Web Apps
• Redirecionar dispositivos móveis para uma versão
dedicada de seu site – Obter “User Agent” do usuário
que acessa e fornecê-lo a melhor experiência;
• Usar DOCTYPE apropriado para dispositivos móveis;
• Usar metadados de Viewport para redimensionar a
página adequadamente;
• Evitar mútliplas requisições de arquivos;
• Usar layout vertical e linear.
What’s Your Message?OBRIGADO!

Continue navegando