Воспроизведение звуковых файлов из файла расширения

У меня есть файл расширения с серией звуковых файлов. Более длинные файлы.mp3, а более короткие звуковые эффекты - файлы WAV. Я упаковываю их в файл.zip без сжатия. Я использую читатель Zip File и библиотеку загрузчика, предоставленную Google.

Я открываю звуковые файлы так:

MediaPlayer mPlayer;

...
AssetFileDescript asd = expansionFile.getAssFileDescriptor(fileName);
FileDescriptor soundFile = asd.getFileDescriptor();
mPlayer = new MediaPlayer();
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.setDataSource(soundFile);
mPlayer.prepare();
mPlayer.start();

Странно то, что он воспроизводит один и тот же звуковой файл каждый раз. Кажется, это то, что он находит первым. Размер байта для asd.getDeclaredLength() а также asd.getLength() это именно то, что должно быть. Это означает, что файловый дескриптор, по крайней мере, находит файл, но по какой-то причине MediaPlayer воспроизводит любой произвольный файл, который решает.

Что именно мне здесь не хватает? Любая помощь будет принята с благодарностью.

Благодарю.

1 ответ

Решение

Первое приближение является правильным, за исключением случаев, когда zip-файл содержит более одного файла, тогда вы должны использовать:

mPlayer.setDataSource(asd.getFileDescriptor(), asd.getStartOffset(), asd.getLength());

Вы можете получить больше информации от этого другого вопроса: Воспроизведение аудио файла из каталога ресурсов

Пожалуйста, также не забудьте закрыть AssetFileDescriptor сразу после setDataSource для медиаплеера:

asd.close();

http://developer.android.com/reference/android/media/MediaPlayer.html

Другие вопросы по тегам