我在Android 2.1工作,即API 7。
unable to load (null) sample 1 not ready
什么是soundpool表示我无法加载(null)样本1未准备好? 我怎么能解决这个问题,请帮助我,我很长时间都在苦苦挣扎。
答案 0 :(得分:8)
我遇到过与wav文件类似的问题。让我们开始丢弃一些东西:
这不是等待的问题,尽管可能在另一种情况下。请注意,您发布了两条不同的错误消息,例如:
当您尝试将样本加载到SoundPool时会引发第一个错误,第二个错误是在您尝试播放它时。但在这种情况下,第二个错误显然是第一个错误的结果:如果样本尚未加载,则样本无法就绪。
所以你应该在第一次错误之前集中注意力。
它与MediaPlayer无关,因为您使用的是与AFAIK不同的SoundPool。
因此问题的根源可能是,并且应该按顺序丢弃:
最后一次是我的情况。由于某些原因,SoundPool无法加载一个wav样本,实际上该样本适用于我使用的其他所有播放器。所以我只是结束使用另一种格式不同的文件。这是违规文件的格式,由mplayer在我的GNU / LiNUX盒子上讲述:
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这样的音频编辑器来解决问题。
为什么它不仅仅适用于第一种情况?谁知道,但如果我能解决它那么容易......谁在乎呢?
此致
答案 1 :(得分:1)
在使用SoundPool.setOnLoadCompleteListener
播放文件之前,您需要检查文件是否已成功加载public void loadSound (String strSound, int stream) {
boolean loaded = false;
mSoundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId,
int status) {
mSoundPool.play(stream, streamVolume, streamVolume, 1, LOOP_1_TIME, 1f);
}
});
try {
stream= mSoundPool.load(aMan.openFd(strSound), 1);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
答案 2 :(得分:0)
您是否尝试过调用mediaplayer.release()并重新初始化?还http://developer.android.com/reference/android/media/MediaPlayer.html
答案 3 :(得分:0)
我认为that's your problem。整个文件未加载,您正在尝试播放它。你必须等一段时间才能玩它。