单击几次后,SoundPool不会播放声音

时间:2016-02-26 04:28:57

标签: android audio soundpool

当我点击按钮在我的应用程序上播放声音,但点击一会儿就不再播放了。也许这是记忆问题?你能解决我的问题吗?这是通过SoundPool实现的播放声音:当我点击按钮时我称之为播放方法:并且播放方法工作背景线程

private void play(int resId) {  
    soundPool = buildBeforeAPI21();//TODO: refactor with deprecated constructor
    soundPool.load(activity, Integer.parseInt(resId), 1);
}

public SoundPool buildBeforeAPI21() {
    if (soundPool == null) {
        soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 0);
        soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
            @Override
            public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
                if (status == 0) {
                    soundPool.play(sampleId, 1.0f, 1.0f, 1, 0, 1.0f);
                }
            }
        });
    }
    return soundPool;
}

2 个答案:

答案 0 :(得分:1)

每次点击都不要创建新的SoundPool。这非常浪费。这样做:

1)只创建一次SoundPool 2)加载你想要播放的所有声音,只需一次 3)等待所有声音加载 4)每次点击都可以调用soundPool.play()。

答案 1 :(得分:0)

也许这个答案来得太晚了;但是我们走了问题在于

    soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 0);

那' 2' number是int maxStreams,遵循文档"此SoundPool对象的最大并发流数" (你可以深入研究here)。现在更改它并将其设置为10,例如,再试一次。然后,你可以根据自己的意愿调整它。所以:

        soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);

希望这有帮助(如果仍然有必要)。