Reprodução de Mídia

MediaPlayer

A classe MediaPlayer é a classe mais importante quando se trata de reprodução de mídias no Android. Através dessa classe é possível, com pouca configuração, reproduzir em sua aplicação diversos formatos de áudio e vídeo, vindos diretamente dos recursos da aplicação, do sistema de arquivos e até mesmo da rede. Para ver uma lista completa dos formatos suportados pelo MediaPlayer do Android, acesse o link disponível na seção Leitura Complementar. Vamos agora ver como reproduzir arquivos de áudio e vídeo em cada uma das três maneiras que citamos.

A primeira maneira de reproduzir arquivos de áudio ou vídeo é através de um arquivo incluso dentro dos recursos da aplicação. Esse arquivo deve ser um arquivo de formato suportado pelo Android e estar colocado dentro da pasta raw, dos Resources. Como vimos na aula sobre a estrutura de pastas do Android, os arquivos inseridos nessa pasta não sofrem nenhum tipo de alteração e são passados adiante no formato que são. Uma vez que tenhamos colocado o arquivo nessa pasta, basta criar uma instância do MediaPlayer para reproduzi-lo e então iniciar a reprodução. A Listagem 1 indica o código necessário para fazer essa inicialização.

Esse código deve ser adicionado em seu método que executará a mídia. Caso queira tocá-la desde o início da aplicação, é possível adicioná-lo ao onCreate, por exemplo.

Listagem 1 - Reproduzindo um arquivo dos recursos utilizando o MediaPlayer

É importante lembrar que arquivos inseridos dentro da pasta raw serão considerados parte de sua aplicação e com isso serão adicionados ao APK gerado e poderão fazer com que este se torne bem grande, dependendo do que seja colocado.

Como você já deve estar imaginando, para parar de tocar a mídia que está sendo reproduzida pelo MediaPlayer, basta chamar o método stop. Outros comandos são necessários para preparar o arquivo antes da reprodução, porém, no caso específico da reprodução de arquivos que estão inclusos nos recursos de sua aplicação, a utilização do método create faz toda essa preparação para você e já cria uma instância pronta para ser utilizada. Para o caso de a reprodução de mídias vindas do sistema de arquivos do Android, alguns passos adicionais são necessários, como veremos adiante.

O primeiro passo parar conseguir carregar um arquivo do sistema de arquivos é descobrir onde o arquivo está localizado. A reprodução do arquivo depende de um URI que é responsável por indicar o caminho até o arquivo a ser tocado. Depois de iniciar o URI que localizará o arquivo a ser reproduzido, mais alguns passos devem ser seguidos para que o mesmo possa ser tocado, como podemos ver na Listagem 2.

Mais uma vez, basta adicionar esse código ao método que será responsável por executar a mídia.

Listagem 2 - Reproduzindo um arquivo local a partir de uma URI

Vemos na Listagem 2 diversos passos além dos que fizemos na Listagem 1, para abrir um arquivo de recurso. Isso acontece porque novas variáveis são adicionadas ao processo quando precisamos buscar um arquivo em um caminho específico do aparelho e não um caminho dentro de nossos recursos. Vamos discutir linha a linha o que é necessário para reproduzir mídia dessa maneira.

Inicialmente, precisamos definir a URI onde acessaremos o arquivo. Uma vez definida a URI, precisamos de uma instância do MediaPlayer. Criamos uma normalmente e então passamos a configurá-la para garantir a reprodução correta do arquivo. A primeira configuração que devemos fazer é relacionada ao tipo de stream que estaremos utilizando em nosso MediaPlayer. Diversos tipos de reprodução são disponíveis e podem ser consultados na classe AudioManager. A constante STREAM_MUSIC é a responsável por indicar que o arquivo será uma música.

Após configurar o tipo do stream de áudio, devemos configurar o local que nos fornecerá a mídia que estaremos reproduzindo. Como vemos na Listagem 2, precisamos passar a esse método apenas o contexto da aplicação e o URI que indica onde está o arquivo a ser carregado. É importante notar que esse método retorna algumas exceções que devem ser tratadas ou passadas adiante. Normalmente, a melhor solução é avisar ao usuário do problema ocorrido e voltar a um estado estável para a aplicação prosseguir.

Versão 5.3 - Todos os Direitos reservados