Your SlideShare is downloading. ×
Android Aula 4
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Android Aula 4

6,768
views

Published on

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

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


0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,768
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
438
Comments
0
Likes
7
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Erisvaldo Gadelha Saraiva JúniorFaculdade de Tecnologia de João Pessoa (FATEC-JP)Especialização em Desenvolvimento para Dispositivos MóveisDisciplina: Tecnologias para Dispositivos MóveisAndroid (Parte 4) E-mail: erisvaldojunior@gmail.com Site: http://erisvaldojunior.com Twitter: @erisvaldojunior
  • 2. Roteiro da Aula TESTES APLICAÇÕES WEB APPS MULTIMÍDIA Testes, Aplicações Multimídia e Web Apps em Android
  • 3. TESTES Testes em Android
  • 4. 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.Testes em Android
  • 5. 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 maisTestes em Android 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.
  • 6. 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).Testes em Android
  • 7. 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.Testes em Android SINTAXE EXEMPLO BÁSICO DE USO
  • 8. 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 deTestes em Android 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.
  • 9. Criando um projeto de TestesTestes em Android
  • 10. Criando a classe do Caso de TesteTestes em Android
  • 11. Exemplo de Classe de Teste • Construtor – Obrigatório. Requerido pelo Android Test Framework; • setUp() – sobrescreve o setUp() do Junit. Inicializa oTestes em Android 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).
  • 12. Exemplo de Classe de Teste Construtor Inicialização de variáveisTestes em Android Pré-condições Código de teste
  • 13. Executando o TesteTestes em Android
  • 14. Testando uma Activity Como testar? • ActivityInstrumentationTestCase2 – Sua classe de testes de uma Activity deve estender essa classe; • ActivityUnitTestCase – Testa uma Activity isolada. UsadoTestes em Android para realizar testes unitários que não interagem com o Android (testes isolados). 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.
  • 15. Testando um Content Provider Como testar? • ProviderTestCase2 – Sua classe de testes de um ContentProvider deve estender essa classe; • MockContentResolver – possibilita a criação de umaTestes em Android instância do provedor de conteúdo mas com dados de teste. 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.
  • 16. Testando um Service Como testar? • ServiceTestCase – Sua classe de testes de um Service deve estender essa classe.Testes em Android 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.
  • 17. Aplicações Multimídia Aúdio, Vídeo e Câmera em Android
  • 18. Core Media FormatsFormatos de Mídia Suportados Formatos de mídia suportados por todos os dispositivos Android.
  • 19. Reprodução e Gravação de Áudio e VídeoÁudio e Vídeo em Android Reprodução Gravação MediaPlayer MediaRecorder
  • 20. 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. Iniciar a execuçãoReprodução de Áudio MediaPlayer mp = MediaPlayer.create(context, R.raw.nome_arquivo); mp.start(); Pausar e recomeçar Parar e recomeçar mp.pause(); mp.stop(); mp.start(); mp.reset(); mp.prepare(); mp.start();
  • 21. 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).Reprodução de Áudio Iniciar a execução MediaPlayer mp = new MediaPlayer(); mp.setDataSource(CAMINHO_ARQUIVO); mp.prepare(); mp.start();
  • 22. Reproduzindo Áudio de um conteúdo JET JET é uma engine musical para criar reproduções de áudio interativas.Reprodução de Áudio Iniciar a execução 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();
  • 23. Reproduzindo Áudio de um conteúdo JET Usa-se a ferramenta JetCreator (parte do Android SDK) para criar reproduções de áudio interativas.Reprodução de Áudio
  • 24. 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.Reprodução de Áudio Trecho de código do JetBoy
  • 25. 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, TIMESTAMPGravação de Áudio 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()
  • 26. Captura de Áudio em CódigoGravação de Áudio
  • 27. MusicDroid – Parte I Selecionar uma música no cartão de memória e executá-la.Exercício
  • 28. MusicDroid – Parte II Executar a música em background (como serviço)Exercício
  • 29. MusicDroid – Parte III Adicionar controles básicos para a música em execuçãoExercício
  • 30. Component VideoViewReprodução de Vídeo
  • 31. Câmera DemoCaptura de Vídeo FrameLayout
  • 32. Web AppsTendência para combater a fragmentação do mundo mobile
  • 33. Dois caminhosVisão Geral de Web Apps Aplicação que roda no lado cliente vs Aplicação Web. Basicamente, a diferença seria: Lado cliente Aplicação Web Android SDK Android Browser Instalar .apk no Sem instalação dispositivo
  • 34. Dois caminhos No Android uma aplicação Web pode rodar dentro de uma aplicacão cliente.Visão Geral de Web Apps
  • 35. Usando metadados para a ViewportDiferentes telas e Web Apps A Viewport é a área na qual a página Web é desenhada. Exemplo de configuração da viewport na Web App
  • 36. Usando metadados para a ViewportDiferentes telas e Web Apps
  • 37. Usando metadados para a ViewportDiferentes telas e Web Apps
  • 38. CSS de acordo com a resolução do dispositivoDiferentes telas e Web Apps
  • 39. JavaScript de acordo com a resolução do dispositivoDiferentes telas e Web Apps
  • 40. android.webkit.WebView Extensão de View que permite mostrar páginas Web como parte do layout de uma Activity.Web Apps em WebView Adicionando uma WebView na sua aplicação main.xml MyActivity.java
  • 41. JavaScript em uma WebView Caso a página que esteja sendo carregada na WebView tenha código JavaScript, o recurso precisa estar habilitado.Web Apps em WebView Associando código JavaScript a código Android
  • 42. 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.Web Apps em WebView Implementar shouldOverrideUrlLoading() de WebViewClient Criar uma instância de um novo WebViewClient
  • 43. Histórico de Páginas Quando sobrescreve-se o método shouldOverrideUrlLoading() do WebView, automaticamente acumula-se um histórico de páginas visitadas.Web Apps em WebView 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.
  • 44. Console log Visualizado no Browser e no LogCat é mostrado com a tag “browser”.Depurando Web Apps
  • 45. 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() .Depurando Web Apps Dessa forma, apresenta-se o Log da maneira que desejar quanto às aplicações Web.
  • 46. As melhores práticas ao desenvolver Web AppsMelhores práticas (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.
  • 47. What’s Your Message?OBRIGADO!