[問題] SoundPool切換音效的Delay問題

看板AndroidDev作者 (yoyoyo~)時間13年前 (2011/04/21 22:45), 編輯推噓7(7020)
留言27則, 4人參與, 最新討論串1/1
開發層: (應用/框架/庫/核心) 應用 問題: 各位神人好!小弟在用soundpool寫一個吉他程式 所以需要切換音效,目前小弟用的這方法雖然有效 但似乎會延遲一秒後才會切換成功,不管一次切換幾個都一樣 且如果沒有等延遲而太快按,會導致切換失敗而沒有音效出現 可否幫小弟看看這寫法是否哪裡出了問題而導致Delay 還是說Soundpool就是這樣@@? 因為我有用其他吉他程式他們的Delay程度沒有我這麼嚴重(應該說很順 先在這謝謝各位!!!m(_ _)m 程式碼: (請多利用置底文網站) 這是音效load處 public void setSP(int ch6,int ch5){ m[5] = sp[5].load(getBaseContext(),ChordIds[ch6], 0 ); m[4] = sp[4].load(getBaseContext(),ChordIds[ch5], 0 ); } 然後當我按下button時就會切換 iButton1=(ImageButton) findViewById(R.id.iButton1); iButton1.setOnClickListener(new OnClickListener(){ public void onClick(View v){setSP( 5 , 4);}}); -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.127.177.250 ※ 編輯: snowoffish 來自: 122.127.177.250 (04/21 22:45)

04/21 22:57, , 1F
我之前用soundpoll,是即點即放音效,可能是寫法不同吧!?
04/21 22:57, 1F

04/21 22:58, , 2F
不知道你流程裡面, 哪邊有這個延遲?
04/21 22:58, 2F

04/21 23:00, , 3F
就是在切換和絃的時候~因為我是用TouchEvent觸發音效
04/21 23:00, 3F

04/21 23:00, , 4F
Button是要切換成其他音效後 再讓我down&move觸發
04/21 23:00, 4F

04/21 23:01, , 5F
不好意思沒說清楚XDD
04/21 23:01, 5F

04/21 23:02, , 6F
其實我還是不懂 XDD
04/21 23:02, 6F

04/21 23:03, , 7F
sp[5]原本是load ChordIds[0]這音效檔
04/21 23:03, 7F

04/21 23:04, , 8F
然後我按Button後 他會變成ChordIds[5]的音效檔
04/21 23:04, 8F

04/21 23:04, , 9F
在這切換過程中會有延遲,聲音會出不來
04/21 23:04, 9F

04/22 12:46, , 10F
你是用實機去跑的嗎?實機硬體比模擬器快很多
04/22 12:46, 10F
對 實機hero,我在想如果換成Desire會不會比較快

04/22 13:07, , 11F
每次播放都再load一次嗎? 可以找一下有用放在記憶體的方法
04/22 13:07, 11F
放在SDCard會比較快囉?我現在改成只用一個SonudPool延遲有比較少了! ※ 編輯: snowoffish 來自: 122.127.177.250 (04/22 17:09)

04/22 19:36, , 12F
看來是我幻覺=_=
04/22 19:36, 12F

04/23 08:51, , 13F
SoundPool就是用來解決延遲的啊, 播放時不是只要play就好
04/23 08:51, 13F

04/23 08:52, , 14F
前面如果已經 load 過,播放時不必再 load ...
04/23 08:52, 14F

04/23 14:43, , 15F
唔!?樓上的意思是指?
04/23 14:43, 15F

04/23 14:44, , 16F
讓所有的音效都先Load好,不是像我這樣每次都load嗎?
04/23 14:44, 16F

04/23 14:45, , 17F
這方法我也是有想過.看來只好用這方法了
04/23 14:45, 17F

04/23 23:03, , 18F
原來你沒先load好啊 XDD
04/23 23:03, 18F

04/23 23:29, , 19F
...我有先Load初始的音效,之後是再Load進去
04/23 23:29, 19F

04/23 23:30, , 20F
主要是再問能否改善Load的速度= =
04/23 23:30, 20F

04/23 23:30, , 21F
不過我已經改成全部先Load囉 所以一剛開始需要等一會
04/23 23:30, 21F

04/24 01:17, , 22F
一般作法是把會造成delay的部份先載入到memory,當然記憶
04/24 01:17, 22F

04/24 01:18, , 23F
體不夠或有限的作法的話, 還要再仔細研究下去.
04/24 01:18, 23F

04/24 01:18, , 24F
我也沒什麼相關經驗, 看神人們會給什麼hint.
04/24 01:18, 24F

04/24 20:48, , 25F
所以就是用sdcard囉??
04/24 20:48, 25F

04/26 13:23, , 26F
我意思是, 只要load一次,之後都讀memory就好啦, 不一定要
04/26 13:23, 26F

04/26 13:24, , 27F
事先全部load完, 萬一有100個音效, 你要全load也不好吧
04/26 13:24, 27F
文章代碼(AID): #1Di4Bqz1 (AndroidDev)
文章代碼(AID): #1Di4Bqz1 (AndroidDev)