Rodar vídeo com a classe MediaPlayer (de uma pasta que não seja a sdcard) [RESOLVIDO]

1 resposta
graffiti75

Olá pessoal.

Estou tendo problemas para rodar um vídeo que não seja dessa pasta.

Tentei usar no método MediaPlayer.setDataSource(String video) a string assets/video, e também encapsular a pasta res/raw/video usando uma URI, pelo método MediaPlayer.setDataSource(Context context, Uri video), mas tudo que tentei deu erro.

Só consigo executar vídeos de pastas como sdcard/video ou data/local/tmp/video. Mas preciso criar um player de vídeo em que o vídeo esteja dentro do projeto, e não fora dele.

No projeto em que estou mexendo, preciso criar um player de vídeo em que, ao se clicar no vídeo, ele seja executado; quando clicado de novo, seja pausado; e assim por diante, até ele ser finalizado. Mas quando ele for finalizado, preciso prepará-lo para ser executado de novo, quando este for clicado.

Outra coisa que preciso fazer é que, quando o vídeo seja finalizado, ele não mostre o último frame do vídeo, mas sim o primeiro (que nada mais é do que aquela tela preta). Qual tela preta? Bem, quando você acaba de abrir uma Activity, a janela do vídeo está preta. É isso que quero que ocorra quando o vídeo for finalizado.

Por que estou usando a MediaPlayer, e não a VideoView? Porque de jeito nenhum consegui algum método da VideoView que fizesse o que quero.

Eu até consegui (usando VideoView) implementar o toque na tela do vídeo (clicando, executa; clicando de novo, pausa; clicando executa; assim por diante), e consegui deixar o vídeo com aquela tela preta. Mas quando eu clicava de novo, o vídeo nunca mais era executado. Logo, ele era executado apenas uma vez.

Eu depurei o método que tratava o clique, e caí na seguinte linha:

Mas bizarramente, ela era executada, e o vídeo, não.

Então decidi utilizar a classe MediaPlayer, que foi perfeita (infelizmente, com umas 5x mais linhas de código). Porém, novo bug: ela só executa vídeos das pastas que descrevi acima.

Alguém tem alguma dica de como devo proceder? Ou então de outra classe que realize manipulação de vídeos?

1 Resposta

graffiti75

Olá pessoal!

Consegui resolver meu problema.

Para setar o Uri à ser colocado no método MediaPlayer.setDataSource, preciso setá-lo obrigatoriamente dentro do método onCreate que inicializa o player. Era isso.

Mudarei esse tópico para [RESOLVIDO].

Criado 20 de abril de 2012
Ultima resposta 23 de abr. de 2012
Respostas 1
Participantes 1