soundpool 播放无声音: sample 1 not ready

来源:互联网 发布:mongodb python 教程 编辑:程序博客网 时间:2024/05/29 10:48

1.bug原因

最近使用soundpool去加载短音频文件时出现第一次play的时候没有声音,但在第二次调用的地方可以调用的情况,在Log输出日志里出现这个警告,就如字面意思一样,soundpool.play()方法的资源没有加载完成,看我加载资源的代码。

2.原始bug代码:

public static void play(){        if (mSoundId == 0)            mSoundId=mSoundPool.load(App.getContext(), R.raw.beep, 1);        mSoundPool.play(mSoundId, 1, 1, 1, 0, 1);    }

代码很简单,我就是想将SoundPool这个类封装成一个可直接调用播放声音的代码,不用在每个activity中去初始化,但是在调用以上play代码时才第一次加载声音资源,而加载声音资源需要一定时间,这就造成了第一次调用play方法的时候没有声音的情况。

3.解决方法

在Activity初始化的时候一同加载声音资源,也就是调用soundpool.load()方法,随后在需要播放声音的地方play就没问题了。但是因为我是想在整个应用中随处使用就在Application类中的onCreate初始化方法中调用load方法先加载好资源了。

Application类中的调用:
initSoundPoolUtil();
private void initSoundPoolUtil() {
SoundPoolUtil.initSoundRes(mContext);
}

SoundPoolUtil:
public static void initSoundRes(Context context){
mSoundId = mSoundPool.load(App.getContext(), R.raw.beep, 1);
}

0 0
原创粉丝点击