2014-06-15 90 views
0

我有以下代碼播放聲音,它是在GLSurfaceView.Renderersoundpool.play不播放聲音

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); 

但它不播放聲音和soundpool.play返回0的onsurfacecreated方法.. ..

我在做什麼錯?

+0

你的代碼看起來很好,除了多餘的'Thread.sleep'和奇怪的檢索資源id的方法(你不需要調用'getIdentifier',你可以用'load(_context,R.raw。你有沒有在Logcat中有任何錯誤?也許你的文件對於'SoundPool'來說太大了,你應該用'MediaPlayer'來代替。 –

+0

我使用getIdentifier,因爲我需要通過一個配置文件來加載聲音,因爲我go.thread.sleep是爲了確保聲音文件在播放的時候被加載,因爲我已經發現了很多答案,聲音文件是11kb,因此它非常小。 – coolblue2000

回答

0

我發現了這個問題。

似乎有一些soundpool不喜歡我的wav文件(這是一個Windows系統的聲音)。它在我的所有媒體播放器中表現良好,但只要我將它轉換爲mp3就可以正常工作......

所以,儘管我說我發現了這個問題,但我想我剛剛找到了解決方法,而不是知道爲什麼其他地方播放良好的文件不能通過soundpool播放。