Android SoundPool sample 1 not ready錯誤解決方法

Android SoundPool sample 1 not ready錯誤解決方法

DDMS報的錯是sample not ready的問題,也就是說是在load加載音樂文件出錯,導致在play播放音樂時顯示not ready;
在SoundPool中有setOnLoadCompleteListener方法用來判斷音樂加載是否完成,因此解決方法如下:

一、調用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), // 聲音資源id
volume, // 左聲道音量
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();
}

發佈留言