我尝试使用带有 FileDescriptor 的 SoundPool 的加载函数,因为我希望能够设置偏移量和长度。该文件不是存储在资源中,而是存储卡上的一个文件。即使 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);
有什么想法吗?
谢谢