Android soundpool.play不是在播放声音

Android soundpool.play不是在播放声音,android,Android,我有以下代码来播放声音,它位于GLSurfaceView.Renderer类的onsurfacecreated方法中 但是,它不播放声音,soundpool.play返回0 我做错了什么?我发现了问题所在 似乎soundpool不喜欢我的wav文件,因为它是windows系统声音。它在我所有的媒体播放器中都播放得很好,但我一把它转换成mp3,它就工作得很好 因此,尽管我说我已经发现了这个问题,但我想我只是找到了一个解决办法,而不知道为什么在其他地方播放良好的文件不能通过soundpool播放。您

我有以下代码来播放声音,它位于GLSurfaceView.Renderer类的onsurfacecreated方法中

但是,它不播放声音,soundpool.play返回0


我做错了什么?

我发现了问题所在

似乎soundpool不喜欢我的wav文件,因为它是windows系统声音。它在我所有的媒体播放器中都播放得很好,但我一把它转换成mp3,它就工作得很好


因此,尽管我说我已经发现了这个问题,但我想我只是找到了一个解决办法,而不知道为什么在其他地方播放良好的文件不能通过soundpool播放。

您的代码看起来很好,除了冗余线程。睡眠和检索资源id的奇怪方式您不需要调用getIdentifier,您可以使用load_上下文R.raw.collisionsound加载您的声音。您在Logcat中有任何错误吗?可能您的文件对于SoundPool来说太大了,您应该改用MediaPlayer。我正在使用getIdentifier,因为我需要遍历一个配置文件来加载声音。thread.sleep用于确保在播放声音文件时加载该文件,因为在我找到的许多答案中,这是一个问题。声音文件是11kb,所以它非常小。
SoundPool pool=new SoundPool(20,AudioManager.STREAM_MUSIC,0);
int resourceID=_context.getResources().getIdentifier("collisionsound","raw","com.frd.neongameengine");
int id=pool.load(_context,resourceID,1);
try {
    Thread.sleep(20000);
} catch(InterruptedException ex) {
    throw new RuntimeException();
}
int status=pool.play(id,1,1,0,0,1);