Por que eu devo ler este artigo:

É muito comum fazermos uso de recursos multimídia em nossas aplicações, sejam eles imagens, vídeos ou sons. Neste artigo apresentaremos como lidar com esses diferentes tipos de mídia na plataforma Android através do desenvolvimento de três estudos de caso. Com isso, você terá total condições de, ao final da leitura, trabalhar com estes recursos em suas aplicações móveis.

Conceitualmente, uma mídia é um canal ou ferramenta usada para armazenamento e transmissão de informação ou dado. Existem diversos tipos de mídia, entre eles: texto, imagem, áudio e vídeo.

Já a multimídia é a junção de duas ou mais mídias ao mesmo tempo. Ela é controlada por computador fazendo a integração de mídias, como as citadas acima, e qualquer outro meio onde todo tipo de informação pode ser representado, armazenada, transmitida e processada digitalmente.

As principais características da multimídia são:

  • Interatividade: o usuário pode participar da atividade;
  • Acesso não-linear: o usuário não precisa acessar as informações em uma sequência predefinida.

Este artigo apresenta o uso de três tipos específicos de mídias em aplicações Android: imagens, sons e vídeos, permitindo ao leitor, ao final da leitura, ler e reproduzir a maioria destas mídias.

Utilização de recursos multimídias a partir de aplicações Android

O controle de reprodução de arquivos de áudio/vídeo é realizado de forma linear, já que a execução dessas mídias deve respeitar uma estrutura. Assim, pode-se dizer que essa reprodução deve respeitar alguns estados. A Figura 1 mostra o ciclo de vida e os estados do objeto MediaPlayer, responsável pelos controles e reprodução de áudio/vídeo.

Diagrama de estados do MediaPlayer
Figura 1. Diagrama de estados do MediaPlayer

Quando um objeto MediaPlayer é criado ou após o seu método reset() ser chamado, o objeto fica ocioso, ou seja, no estado Idle. Nesse estado, se o objeto não for mais utilizado, recomenda-se chamar o método release(), o qual tem a função de encerrar a reprodução da mídia, liberando recursos e colocando o MediaPlayer em estado End.

O passo seguinte é colocar o objeto MediaPlayer no estado Prepared, o qual torna o objeto apto a executar uma mídia. Há duas maneiras (síncrona ou assíncrona) de fazer isso: realizar uma chamada ao método prepare() do MediaPlayer (modo síncrono), o qual transfere automaticamente o estado do objeto para Prepared, ou chamar o métodoprepareAsync()(modo assíncrono). No último, o objeto MediaPlayer é transferido para o estado Prepared quase que de forma imediata, mas em paralelo a isso, o recurso que será executado está sendo preparado e, quando finalizado, chama o método onPrepared() da interface OnPreparedListener.

Após preparada a mídia, sua execução pode ser iniciada a partir do método start(), o qual coloca o objeto em modo de reprodução, ou seja, o método isPalying() do objeto MediaPlayer retornará um booleano true.

Tanto nos estados de Prepared, Started ou Paused, a reprodução de uma mídia pode ser interrompida através do método stop(), o qual coloca o objeto MediaPlayer em estado de Stopped. Isto fará com que a reprodução da mídia seja interrompida.

Uma boa prática é, ao longo da execução de um vídeo, principalmente se a reprodução for assíncrona (já que muitas vezes essa depende da rede Internet), realizar a captura e o tratamento de exceções, tais como a IllegalStateException, a qual é lançada quando um determinado método é chamado de fora de um estado permitido. Exceções como IllegalArgumentException também podem ser geradas ao passar um parâmetro incompatível com o método setDataSource(), por exemplo, assim como o IOException pode ser gerado a qualquer momento durante a reprodução.

Estudos de Caso

Este artigo apresenta três aplicativos: um player de áudio com possibilidade de selecionar um áudio, um aplicativo para captura de imagens através da câmera do smartphone e um aplicativo para captura de vídeo também através da câmera do smartphone. Para os testes utilizamos um Galaxy SIII Mini.

Desenvolvendo um Player de Áudio

O aplicativo de player de áudio possui a funcionalidade de escolha de um áudio para execução. A classe MediaPlayer é capaz de, em tempo de execução, identificar o formato do áudio (wma, mp3, entre outros) não sendo necessário personalizações durante a codificação.

O player desenvolvido também conta com recursos como botão de Play (iniciar a reprodução do áudio), pause (pausar a reprodução, permitindo que o usuário continue do ponto que parou através do botão play) e stop, o qual para a reprodução, sendo que nesta situação, ao clicar em play, o áudio é reproduzido do início novamente.

Na parte superior da tela, são apresentados dois campos de texto, o primeiro, com o tempo percorrido desde o início da reprodução do áudio, e o segundo, com o tempo total do áudio. A interface visual do aplicativo é apresentada na Figura 2.

Tela inicial do aplicativo para reprodução de áudio
Figura 2. Tela inicial do aplicativo para reprodução de áudio

Para o desenvolvimento desse aplicativo, o primeiro passo foi codificar a interface gráfica no arquivo activity_principal.xml, conforme código apresentado na Listagem 1.

01.  <LinearLayout 
02.   xmlns:android="http://schemas.android.com/apk/res/android" 
03.   xmlns:tools="http://schemas.android.com/tools"
04.   android:layout_width="match_parent"
05.   android:layout_height="match_parent"
06.   tools:context=".PrincipalActivity"
07.   android:orientation="vertical">
08.
09.   <View
10.     android:layout_width="match_parent"
11.     android:layout_height="1dp"
12.     android:layout_marginTop="5dp"
13.     android:layout_marginBottom="5dp"/>
15.   
16.   <TextView 
17.     android:id="@+id/tvTime"
18.     android:layout_width="fill_parent" 
19.     android:layout_heig ... 

Quer ler esse conteúdo completo? Seja um assinante e descubra as vantagens.
  • 473 Cursos
  • 10K Artigos
  • 100 DevCasts
  • 30 Projetos
  • 80 Guias
Tenha acesso completo