解决方法如下:
一、调用setOnLoadCompleteListener方法来确保音乐加载完成,注意需要SoundPool.OnLoadCompleteListener listener
需要实现SoundPool.OnLoadCompleteListener接口。
soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener(){
@Override public void onLoadComplete(SoundPool arg0, int arg1, int arg2) { soundPool.play(soundPoolMap.get(soundId), // 声音资源idvolume, // 左声道音量volume, // 右声道音量1, // 优先级loop, // 循环次数 -1带表永远循环0.5f // 回放速度0.5f~2.0f之间); }});二、可直接在load后面加sleep(1000),具体时间根据加载的文件的多少大小而定,给程序足够的时间去加载初始化音频文件。
// 将加载的声音资源id放进此Map
soundPoolMap.put(1, soundPool.load(this, R.raw.gamestart, 1));try { Thread.sleep(1000);// 给予初始化音乐文件足够时间} catch (InterruptedException e) { e.printStackTrace();}