Android 声音池有时会使文件描述符无效?

Android 声音池有时会使文件描述符无效?,android,audio,soundpool,Android,Audio,Soundpool,我想加载相同的声音资源两次,一次使用SoundPool,一次使用MediaExtractor。到目前为止,我的方法是为SoundPool和MediaExtractor提供相同的文件描述符。但是,当我这样做时,有时MediaExtractor会拒绝FileDescriptor。这就好像加载SoundPool声音的异步进程在某个点使其无效 我可以从同一个文件描述符加载两次吗?如果它是同一个底层文件描述符,那么如果一个类寻找一个新的偏移量,另一个类将找不到它期望的头。你能打开资产两次,为同一资产获取两

我想加载相同的声音资源两次,一次使用SoundPool,一次使用MediaExtractor。到目前为止,我的方法是为SoundPool和MediaExtractor提供相同的文件描述符。但是,当我这样做时,有时MediaExtractor会拒绝FileDescriptor。这就好像加载SoundPool声音的异步进程在某个点使其无效


我可以从同一个文件描述符加载两次吗?

如果它是同一个底层文件描述符,那么如果一个类寻找一个新的偏移量,另一个类将找不到它期望的头。你能打开资产两次,为同一资产获取两个不同的FileDescriptor对象吗?嗨,Fadden,谢谢你回复我。我更希望我能在一个只需要(FileDescriptor、FileDescriptor、long offset、long length)的函数中实现这一点。这样,无论FileDescriptor的来源是什么,我都可以使用该函数。如果MediaExtractor读取文件的全部内容,然后查找文件的开头,让SoundPool再次读取,我会很高兴。或者我可以使用一个FileDescriptor来生成另一个具有相同数据的FileDescriptor。这可能吗?在做了更多的调试之后,我确信我遇到的问题不是MediaExtractor和SoundPool之间的竞争,而是垃圾收集的竞争。我写了一篇新的,更专注的文章。