У меня есть следующий код:Воспроизведение аудио файлов из директории активов
AssetFileDescriptor afd = getAssets().openFd("AudioFile.mp3");
player = new MediaPlayer();
player.setDataSource(afd.getFileDescriptor());
player.prepare();
player.start();
Проблема заключается в том, что, когда я запускаю этот код, он начинает играть все звуковые файлы в каталоге ресурсов, в алфавитном порядке, а не просто воспроизводя аудиофайл, который я запросил. Что я делаю не так? Есть ли лучший способ воспроизведения аудиофайлов из каталога ресурсов?
Последующий вопрос: Есть ли разница между сохранением аудиофайлов в каталоге активов и хранением их в каталоге res/raw? Кроме того, что они не получают идентификаторы, если они находятся в каталоге активов. Если я перемещаю аудиофайлы в папку res/raw, у меня возникает проблема с повторным использованием MediaPlayer
s, потому что для параметра setDataSource()
нет идентификатора. Я не могу найти хорошее руководство для решения этой проблемы.
Это сработало. Благодарю. Но я думаю, что моя версия ДОЛЖНА также работать. –
Ваша версия будет работать, если в каталоге ресурсов есть только один файл. Содержимое каталога ресурсов на самом деле не является «реальным файлом» на диске. Все они собраны один за другим. Итак, если вы не укажете, с чего начать и сколько байтов читать, игрок будет читать до конца (то есть будет продолжать играть все файлы в каталоге ресурсов) –
Очень хороший ответ! – Redax