Я попытался использовать функцию загрузки SoundPool, которая принимает FileDescriptor, потому что я хотел иметь возможность установить смещение и длину. Файл хранится не в ресурсах, а на карте памяти. Даже если ни загрузка, ни функция воспроизведения SoundPool не выдают никаких исключений и не распечатывают что-либо на консоли, звук не воспроизводится. Использование того же кода, но использование строки пути к файлу в конструкторе SoundPool работает отлично.
Вот как я пытался загрузить (начало равно 0, а длина - это длина файла в миллисекундах):
FileInputStream fileIS = new FileInputStream(new File(mFile));
mStreamID = mSoundPool.load(fileIS.getFD(), start, length, 0);
mPlayingStreamID = mSoundPool.play(mStreamID, 1f, 1f, 1, 0, 1f);
Если бы я использовал это, это работает:
mStreamID = mSoundPool.load(mFile, 0);
mPlayingStreamID = mSoundPool.play(mStreamID, 1f, 1f, 1, 0, 1f);
Есть идеи у кого-нибудь?
Спасибо