Android 2.2 - SoundPool样本0未就绪。

5

我在StackOverflow上搜索了,但找不到和我的情况相似的解决方案。我正在使用四个按钮,每个按钮都会播放一个声音文件。
我正在使用SoundPool:
SoundPool sound = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);

我还使用了OnLoadCompleteListener(),它使用Log在LogCat中创建I通知。
当我在模拟器中启动程序时,我看到所有四个样本都已经加载完成。在程序运行期间,其中三个声音将会播放,然而,总有一个声音会显示:
WARN/SoundPool(4842): sample 0 not READY

有什么想法吗?因为我感到非常困惑。这些声音文件是16位pcm波形文件,播放方波音调。
加载代码:
sound.setOnLoadCompleteListener(new OnLoadCompleteListener(){

        @Override
        public void onLoadComplete(SoundPool sound, int sampleId, int status) {
            if(status != 0)
                Log.e("SOUND LOAD"," Sound ID: " + sampleId + " Failed to load.");
            else
                Log.i("SOUND LOAD"," Sound ID: " + sampleId + " loaded.");
        }
    });

    soundID[0] = sound.load(this, R.raw.greennote, 1);
    soundID[1] = sound.load(this, R.raw.rednote, 1);
    soundID[2] = sound.load(this, R.raw.yellownote, 1);
    soundID[3] = sound.load(this, R.raw.bluenote, 1);

播放声音:
streamid.setStreamId(myActivity.sound.play(id, 0.5f, 0.5f, 0, 0, 1));


请编辑您的问题,包括加载和播放声音的代码。 - Squonk
1个回答

2

我遇到了同样的问题。从我的实验来看,似乎ID处理出现了问题。SoundPool不喜欢带有数字0的声音ID。

因此,我找到了一个解决方法。将我的示例ID从0开始改为从1开始。希望这个方法有效。


你怎么做到的?我的意思是如何以1开始设置你的样本ID? - Jitesh Patil
嗯,我使用SoundPool和HashMap来跟踪所有不同的声音。使用HashMap,您需要手动设置ID(也称为“键”)。由于听起来您没有使用HashMap,因此我的评论可能没有意义。无论如何,祝你好运! - SMBiggs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接