Reprodução de Mídia

Preparando Mídia de Maneira Assíncrona

Como vimos anteriormente, reproduzir mídia utilizando o MediaPlayer não é uma tarefa complicada. Apesar disso, existem alguns cuidados que devemos tomar quando estamos lidando com arquivos. No caso do MediaPlayer, o maior desses problemas está no método prepare. Como citamos anteriormente, mesmo que se trate de um arquivo local, o método pode levar um tempo longo para executar, fazendo com que a thread que o está executando fique parada por um tempo, se dedicando exclusivamente ao processamento desse método. Percebemos, assim, que se ele for chamado na thread principal, a aplicação ficará bloqueada por um tempo, fazendo com que o usuário perceba uma aplicação lenta (mesmo que seu prepare leve apenas poucos segundos) e também criando o risco da aplicação gerar um ANR (janela de erro indicando que a Activity não está respondendo). Para evitar esses riscos, devemos sempre executar o prepare em uma thread separada.

Apesar de ser possível fazer isso da maneira convencional, criando uma nova thread, executando o método nela, tratando a comunicação etc, também é possível utilizar um mecanismo já incluso no MediaPlayer e que também é bem mais simples do que seguir pelo caminho anterior. Ao criar um MediaPlayer, é possível adicionar a ele um PreparedListener, através do método setOnPreparedListener, que recebe um OnPreparedListener. Após implementar corretamente o onPreparedListener, podemos substituir a chamada do prepare pela chamada ao prepareAsync.

Ao utilizar o prepareAsync, o MediaPlayer cria uma nova thread para você, em que toda a preparação do arquivo selecionado será executada e, então, uma vez que o arquivo esteja pronto, a thread retornará imediatamente para o onPreparedListener que esteja configurado no MediaPlayer que executou o prepareAsync. Com isso, toda a preparação necessária pode ser executada sem bloquear a thread principal, fazendo com que seu programa possa ser executado com fluidez e ainda assim execute de maneira correta a reprodução da mídia, seja ela de arquivo ou da web, onde isso se torna ainda mais crítico.

Versão 5.3 - Todos os Direitos reservados