У меня такой код:
AssetFileDescriptor afd = getAssets().openFd("AudioFile.mp3");
player = new MediaPlayer();
player.setDataSource(afd.getFileDescriptor());
player.prepare();
player.start();
Проблема в том, что когда я запускаю этот код, он начинает воспроизводить все аудиофайлы в каталоге ресурсов в алфавитном порядке, а не просто воспроизводить запрошенный мной аудиофайл. Что я делаю не так? Есть ли лучший способ воспроизвести аудиофайлы из каталога ресурсов?
Последующий вопрос: есть ли разница между хранением аудиофайлов в каталоге ресурсов и их хранением в каталоге res / raw? Помимо того факта, что они не получают идентификаторов, если они находятся в каталоге ресурсов. Если я перенесу аудиофайлы в папку res / raw, тогда у меня возникнет проблема с повторным использованием MediaPlayer
s, потому что нет параметра id для setDataSource()
. Я не могу найти хорошего руководства для решения такой проблемы.
источник
Эта функция будет работать нормально :)
источник
MediaPlayer m
должна бытьstatic
или есть другая ссылка . Если у вас естьm
функция без какой-либо ссылки,GC
"соберете" ееВот моя статическая версия:
источник
Исправление вышеуказанной функции для воспроизведения и паузы
источник
начать звук
метод
источник
это работает для меня:
В основной деятельности при создании:
как использовать в коде (при нажатии кнопки):
источник