我曾经遇到过一个wav文件的类似问题。让我们先排除一些可能性:
这不是等待的问题,尽管在其他情况下可能是。请注意,您已经发布了两个不同的错误消息,就好像它们是一个错误一样:
1. 无法加载(null)
2. 样本1未准备好
第一个错误是在您尝试将样本加载到SoundPool时引发的,第二个错误是在您尝试播放它时引发的。但在这种情况下,第二个错误显然是第一个错误的结果:如果样本没有被加载,那么它肯定没有准备好。
因此,您应该先关注第一个错误。
这与MediaPlayer无关,因为您正在使用SoundPool,这是我所知道的另一件事。
因此,问题的来源可能是,并且应该按顺序进行排除:
1. 文件不存在。
2. 文件存在,但由于某种原因无法读取。
3. 文件存在,可读取,但损坏或不是音频文件。
4. 文件存在,可读取,是非损坏的音频文件,但SoundPool不喜欢它。
最后一个是我的情况。由于某种原因,SoundPool无法加载一个wav样本,而实际上在我使用的每个其他播放器中都可以正常工作。因此,我只需使用具有不同格式的另一个文件即可。这是有问题的文件格式,由我的GNU / LiNUX框上的mplayer告诉我:
Opening audio decoder: [pcm] Uncompressed PCM audio decoder
AUDIO: 96000 Hz, 1 ch, s16le, 1536.0 kbit/100.00% (ratio: 192000->192000)
Selected audio codec: [pcm] afm: pcm (Uncompressed PCM)
这里是另一个文件的代码,它可以正常工作:
Opening audio decoder: [pcm] Uncompressed PCM audio decoder
AUDIO: 22050 Hz, 2 ch, s16le, 705.6 kbit/100.00% (ratio: 88200->88200)
Selected audio codec: [pcm] afm: pcm (Uncompressed PCM)
有很多不同之处,但关键是第二个有效,所以我只是放弃了第一个并转向了第二个。如果我需要第一个声音样本,我只需使用像Audacity这样的音频编辑器调整其速率和通道即可解决问题。
为什么第一种情况下它不起作用呢?谁知道呢,但如果我可以这么容易地解决它...谁在乎呢?
问候,