Baixe o app para aproveitar ainda mais
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!
Compartilhar