我试图通过带有加载的id在soundpool中打开一个mp3,我也试过通过文件描述符来做它。
我总是得到同样的例外:
This file can not be opened as a file descriptor; it is probably compressed
为什么我的mp3会被压缩?
这是soundpool代码:
mySoundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
try { mySoundPool.load(this, R.raw.drum, 1);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.e(TAG, "", e);
}
答案 0 :(得分:1)
MP3是一种压缩文件格式,因此您的MP3文件已经过压缩。正如wikipedia所说:
MP3,是一种使用有损形式的专利数字音频编码格式 数据压缩
This Stackoverflow question表示您应该在Android上使用WAV或OGG支持,并提供另一种播放MP3的方式。
SoundPool API docs确实意味着支持MP3,所以我不确定这里出了什么问题。我建议您尝试使用其他一些MP3文件进行测试,并测试将现有的MP3转换为WAV / OGG格式以进行测试。
您需要重命名,因为Android资源不包含文件扩展名。确保检查res \ raw中是否有另一个文件具有相同的名称但文件扩展名不同,因为这可能会导致问题。