Eu tenho o seguinte código:
AssetFileDescriptor afd = getAssets().openFd("AudioFile.mp3");
player = new MediaPlayer();
player.setDataSource(afd.getFileDescriptor());
player.prepare();
player.start();
O problema é que, quando executo esse código, ele começa a reproduzir todos os arquivos de áudio no diretório de ativos, em ordem alfabética, em vez de apenas reproduzir o arquivo de áudio solicitado. O que estou fazendo de errado? Existe uma maneira melhor de reproduzir arquivos de áudio do diretório de ativos?
Pergunta de acompanhamento: Existe uma diferença entre manter arquivos de áudio no diretório de ativos e mantê-los no diretório res / raw? Além do fato de não receberem IDs, se estiverem no diretório de ativos. Se eu mover os arquivos de áudio para a pasta res / raw, tenho um problema ao reutilizar MediaPlayer
s porque não há um parâmetro de identificação para setDataSource()
. Não consigo encontrar uma boa orientação para lidar com esse tipo de problema.
fonte
Esta função irá funcionar corretamente :)
fonte
MediaPlayer m
deve haverstatic
ou ter outra referência . Se você temm
uma função sem nenhuma referência,GC
a "coleciona"Aqui está minha versão estática:
fonte
Correção da função acima para reproduzir e pausar
fonte
iniciar som
método
fonte
isso funciona para mim:
Na atividade principal, em create:
como usar no código (no clique do botão):
fonte