Воспроизведение звуковых файлов из файла расширения
У меня есть файл расширения с серией звуковых файлов. Более длинные файлы.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