簡體   English   中英

SoundPool在android中不發出任何聲音

[英]SoundPool doesnt make any sound in android

在將它們加載到soundPool之后,我試圖同時播放3個midi文件(每個200Kb)。 播放命令后,我卸載每個流並釋放soundPool。我將音量設置為1並且電話沒有靜音。(對語言感到抱歉)。 沒有壓碎或東西。

我該怎么辦? 提前

soundPool = new SoundPool(3, AudioManager.STREAM_MUSIC, 0);
soundPool.play(sound_id1, leftVolume, rightVolume, 1, 0, rate);
soundPool.play(sound_id2, leftVolume, rightVolume, 1, 0, rate);
soundPool.play(sound_id3, leftVolume, rightVolume, 1, 0, rate);
soundPool.unload(stream_id1);
soundPool.unload(stream_id2);
soundPool.unload(stream_id3);
soundPool.release();

編輯:當我在調試模式下,並通過播放命令,它的工作原理很好。 試圖添加一個OnLoadCompleteListener還是一無所獲。

而不是在播放后立即卸載聲音資源並釋放SoundPool對象,而是創建一個Runnable來執行這些任務,然后將其延遲發布到Handler。 聲明以下內容:

final Handler handler = new Handler();
Runnable delayedUnload = new Runnable()
{
    @Override
    public void run()
    {
        soundPool.unload(sound_id1);
        soundPool.unload(sound_id2);
        soundPool.unload(sound_id3);
        soundPool.release();
    }
};  

播放聲音資源后,然后發布Runnable:

soundPool = new SoundPool(3, AudioManager.STREAM_MUSIC, 0);
soundPool.play(sound_id1, leftVolume, rightVolume, 1, 0, rate);
soundPool.play(sound_id2, leftVolume, rightVolume, 1, 0, rate);
soundPool.play(sound_id3, leftVolume, rightVolume, 1, 0, rate);

handler.postDelayed(delayedUnload, 5 * 1000);

postDelayed()的第二個參數是延遲,以毫秒為單位; 在這種情況下,延遲為5秒。 SoundPool沒有提供確定聲音何時結束播放的方法,因此您需要相應地調整延遲。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM